From 6653ccc011dec86e5140a5d09ea3b2357eab6714 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 12 Mar 2021 16:26:10 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-10-stable-ee --- .eslintignore | 6 - .eslintrc.yml | 12 + .gitignore | 3 +- .gitlab-ci.yml | 2 +- .gitlab/CODEOWNERS | 27 +- .gitlab/ci/cache-repo.gitlab-ci.yml | 2 + .gitlab/ci/frontend.gitlab-ci.yml | 20 +- .gitlab/ci/global.gitlab-ci.yml | 4 +- .gitlab/ci/graphql.gitlab-ci.yml | 1 - .gitlab/ci/rails.gitlab-ci.yml | 42 +- .gitlab/ci/reports.gitlab-ci.yml | 2 +- .gitlab/ci/rules.gitlab-ci.yml | 64 +- .gitlab/ci/verify-lockfile.gitlab-ci.yml | 11 - .gitlab/ci/workhorse.gitlab-ci.yml | 12 +- .gitlab/issue_templates/Adoption Engineering.md | 14 - .../Experiment Successful Cleanup.md | 5 +- .gitlab/issue_templates/Experimentation.md | 25 + .../Query Performance Investigation.md | 8 +- .../experiment_tracking_template.md | 94 + .haml-lint_todo.yml | 8 - .prettierignore | 2 +- .rubocop.yml | 40 +- .rubocop_manual_todo.yml | 161 +- .rubocop_todo.yml | 299 +- .scss-lint.yml | 277 - .stylelintrc | 95 +- CHANGELOG.md | 23 + GITALY_SERVER_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 32 +- Gemfile.lock | 140 +- PROCESS.md | 4 +- .../images/learn_gitlab/code_owners_enabled.svg | 5 + app/assets/images/learn_gitlab/git_write.svg | 16 + .../images/learn_gitlab/merge_request_created.svg | 107 + .../images/learn_gitlab/pipeline_created.svg | 38 + .../learn_gitlab/required_mr_approvals_enabled.svg | 70 + .../images/learn_gitlab/security_scan_enabled.svg | 36 + app/assets/images/learn_gitlab/trial_started.svg | 9 + app/assets/images/learn_gitlab/user_added.svg | 4 + .../access_tokens/components/projects_field.vue | 69 + .../components/projects_token_selector.vue | 158 + .../graphql/queries/get_projects.query.graphql | 28 + app/assets/javascripts/access_tokens/index.js | 62 +- .../components/usage_ping_disabled.vue | 53 - .../admin/dev_ops_report/devops_adoption.js | 2 - .../dev_ops_report/devops_score_empty_state.js | 27 - app/assets/javascripts/admin/users/tabs.js | 11 +- .../components/alert_management_table.vue | 20 +- .../components/alert_mapping_builder.vue | 43 +- .../components/alerts_integrations_list.vue | 15 +- .../components/alerts_settings_form.vue | 636 +- .../components/alerts_settings_wrapper.vue | 189 +- .../components/mocks/parsedMapping.json | 95 - .../javascripts/alerts_settings/constants.js | 152 +- app/assets/javascripts/alerts_settings/graphql.js | 16 +- .../http_integration_item.fragment.graphql | 7 + .../http_integration_payload_data.fragment.graphql | 3 + .../create_http_integration.mutation.graphql | 22 +- .../destroy_http_integration.mutation.graphql | 4 +- .../mutations/reset_http_token.mutation.graphql | 4 +- ...pdate_current_http_integration.mutation.graphql | 25 + .../update_current_intergration.mutation.graphql | 19 - ...current_prometheus_integration.mutation.graphql | 21 + .../update_http_integration.mutation.graphql | 4 +- .../queries/get_http_integrations.query.graphql | 12 + .../queries/parse_sample_payload.query.graphql | 9 + app/assets/javascripts/alerts_settings/index.js | 5 +- .../alerts_settings/utils/cache_updates.js | 34 + .../alerts_settings/utils/error_messages.js | 2 +- .../utils/mapping_transformations.js | 28 +- .../components/usage_ping_disabled.vue | 53 + .../devops_report/devops_score_empty_state.js | 27 + .../instance_statistics/components/app.vue | 48 - .../components/charts_config.js | 87 - .../components/instance_counts.vue | 64 - .../components/instance_statistics_count_chart.vue | 206 - .../components/projects_and_groups_chart.vue | 224 - .../instance_statistics/components/users_chart.vue | 143 - .../analytics/instance_statistics/constants.js | 5 - .../graphql/fragments/count.fragment.graphql | 4 - .../graphql/queries/groups.query.graphql | 13 - .../graphql/queries/instance_count.query.graphql | 13 - .../instance_statistics_count.query.graphql | 34 - .../graphql/queries/projects.query.graphql | 13 - .../graphql/queries/users.query.graphql | 13 - .../analytics/instance_statistics/index.js | 24 - .../analytics/instance_statistics/utils.js | 68 - .../analytics/usage_trends/components/app.vue | 41 + .../usage_trends/components/charts_config.js | 106 + .../usage_trends/components/usage_counts.vue | 63 + .../components/usage_trends_count_chart.vue | 206 + .../usage_trends/components/users_chart.vue | 143 + .../analytics/usage_trends/constants.js | 5 + .../graphql/fragments/count.fragment.graphql | 4 + .../graphql/queries/usage_count.query.graphql | 13 + .../queries/usage_trends_count.query.graphql | 34 + .../graphql/queries/users.query.graphql | 13 + .../javascripts/analytics/usage_trends/index.js | 24 + .../javascripts/analytics/usage_trends/utils.js | 68 + app/assets/javascripts/api.js | 39 +- .../two_factor_auth/components/recovery_codes.vue | 2 +- app/assets/javascripts/awards_handler.js | 9 +- app/assets/javascripts/badges/components/badge.vue | 2 +- .../javascripts/badges/components/badge_form.vue | 4 +- .../stores/modules/batch_comments/actions.js | 22 +- .../javascripts/behaviors/copy_to_clipboard.js | 38 +- .../javascripts/behaviors/toggler_behavior.js | 2 +- app/assets/javascripts/blob/blob_file_dropzone.js | 4 + app/assets/javascripts/blob/viewer/index.js | 9 +- app/assets/javascripts/blob_edit/blob_bundle.js | 2 + app/assets/javascripts/boards/boards_util.js | 28 +- .../boards/components/board_add_new_column.vue | 143 + .../components/board_add_new_column_form.vue | 131 + .../components/board_add_new_column_trigger.vue | 2 +- .../javascripts/boards/components/board_card.vue | 83 +- .../boards/components/board_card_deprecated.vue | 61 + .../boards/components/board_card_inner.vue | 268 + .../boards/components/board_card_layout.vue | 98 - .../components/board_card_layout_deprecated.vue | 3 +- .../javascripts/boards/components/board_column.vue | 21 +- .../boards/components/board_content.vue | 31 +- .../javascripts/boards/components/board_form.vue | 75 +- .../javascripts/boards/components/board_list.vue | 68 +- .../boards/components/board_list_deprecated.vue | 2 +- .../boards/components/board_list_header.vue | 47 +- .../boards/components/board_new_issue.vue | 7 +- .../components/board_new_issue_deprecated.vue | 6 +- .../javascripts/boards/components/board_sidebar.js | 6 +- .../boards/components/boards_selector.vue | 43 +- .../components/boards_selector_deprecated.vue | 7 +- .../boards/components/config_toggle.vue | 64 + .../boards/components/filtered_search.vue | 54 + .../boards/components/issue_card_inner.vue | 262 - .../components/issue_card_inner_deprecated.vue | 6 +- .../boards/components/issue_due_date.vue | 6 +- .../boards/components/issue_time_estimate.vue | 2 +- .../javascripts/boards/components/modal/list.vue | 6 +- .../boards/components/sidebar/remove_issue.vue | 88 - app/assets/javascripts/boards/config_toggle.js | 25 +- app/assets/javascripts/boards/constants.js | 5 + app/assets/javascripts/boards/filtered_search.js | 25 + .../boards/graphql/board_labels.query.graphql | 4 +- .../graphql/board_list_create.mutation.graphql | 20 +- .../boards/graphql/users_search.query.graphql | 11 - app/assets/javascripts/boards/index.js | 26 +- .../javascripts/boards/mixins/board_card_inner.js | 8 + .../javascripts/boards/mixins/issue_card_inner.js | 10 - .../boards/mount_multiple_boards_switcher.js | 6 +- app/assets/javascripts/boards/stores/actions.js | 104 +- app/assets/javascripts/boards/stores/getters.js | 20 +- .../javascripts/boards/stores/mutation_types.js | 10 +- app/assets/javascripts/boards/stores/mutations.js | 113 +- app/assets/javascripts/boards/stores/state.js | 14 +- app/assets/javascripts/captcha/captcha_modal.vue | 10 +- .../captcha/captcha_modal_axios_interceptor.js | 37 + .../javascripts/captcha/unsolved_captcha_error.js | 10 + .../captcha/wait_for_captcha_to_be_solved.js | 53 + .../components/ci_environments_dropdown.vue | 12 +- .../components/ci_variable_table.vue | 2 +- .../components/fluentd_output_settings.vue | 20 +- .../components/ingress_modsecurity_settings.vue | 12 +- .../javascripts/clusters_list/store/actions.js | 2 +- .../commit/pipelines/pipelines_bundle.js | 2 - .../commit/pipelines/pipelines_table.vue | 11 +- app/assets/javascripts/commons/bootstrap.js | 67 - app/assets/javascripts/commons/vue.js | 2 + .../create_cluster/eks_cluster/constants.js | 5 +- .../cycle_analytics/components/base.vue | 288 + .../cycle_analytics/cycle_analytics_bundle.js | 156 - app/assets/javascripts/cycle_analytics/index.js | 32 + .../deprecated_jquery_dropdown/gl_dropdown.js | 43 +- .../design_management/components/delete_button.vue | 16 +- .../components/design_destroyer.vue | 1 + .../components/design_notes/design_discussion.vue | 6 +- .../design_management/components/list/item.vue | 1 + .../design_management/components/toolbar/index.vue | 2 +- .../design_management/components/upload/button.vue | 2 +- .../javascripts/design_management/pages/index.vue | 5 +- app/assets/javascripts/diffs/components/app.vue | 14 +- .../diffs/components/diff_discussion_reply.vue | 5 +- .../javascripts/diffs/components/diff_file.vue | 14 +- .../diffs/components/diff_file_header.vue | 6 +- .../diffs/components/settings_dropdown.vue | 46 +- app/assets/javascripts/diffs/constants.js | 1 - app/assets/javascripts/diffs/i18n.js | 1 + app/assets/javascripts/diffs/index.js | 2 +- app/assets/javascripts/diffs/store/actions.js | 5 - app/assets/javascripts/diffs/store/utils.js | 2 +- app/assets/javascripts/diffs/utils/file_reviews.js | 7 +- app/assets/javascripts/diffs/utils/preferences.js | 13 +- app/assets/javascripts/editor/constants.js | 3 + .../editor/extensions/editor_lite_webide_ext.js | 164 + .../javascripts/emoji/components/category.vue | 61 + .../javascripts/emoji/components/emoji_group.vue | 35 + .../javascripts/emoji/components/emoji_list.vue | 44 + app/assets/javascripts/emoji/components/picker.vue | 121 + app/assets/javascripts/emoji/components/utils.js | 27 + app/assets/javascripts/emoji/constants.js | 14 + app/assets/javascripts/emoji/index.js | 16 +- .../environments/components/environments_app.vue | 6 +- .../mixins/environments_pagination_api_mixin.js | 2 + .../environments/services/environments_service.js | 4 +- .../javascripts/experimentation/constants.js | 1 + .../experimentation/experiment_tracking.js | 24 + app/assets/javascripts/experimentation/utils.js | 10 + .../components/configure_feature_flags_modal.vue | 13 +- .../feature_flags/components/edit_feature_flag.vue | 2 + .../feature_flags/components/feature_flags.vue | 8 +- app/assets/javascripts/flash.js | 2 +- app/assets/javascripts/gfm_auto_complete.js | 78 +- .../fragments/alert.fragment.graphql | 6 +- .../project_user_members_search.query.graphql | 14 + .../queries/users_search.query.graphql | 12 +- app/assets/javascripts/graphql_shared/utils.js | 34 + .../javascripts/groups/components/group_item.vue | 43 +- .../groups/components/invite_members_banner.vue | 4 +- .../javascripts/groups/components/item_caret.vue | 4 +- app/assets/javascripts/groups_select.js | 30 +- .../javascripts/helpers/cve_id_request_helper.js | 50 + .../javascripts/ide/components/branches/item.vue | 2 +- .../ide/components/branches/search_list.vue | 7 +- .../ide/components/file_templates/bar.vue | 4 +- .../ide/components/merge_requests/item.vue | 2 +- .../ide/components/merge_requests/list.vue | 9 +- app/assets/javascripts/ide/components/nav_form.vue | 25 +- .../javascripts/ide/components/pipelines/list.vue | 3 +- .../ide/components/preview/navigator.vue | 2 +- .../javascripts/ide/components/repo_editor.vue | 81 +- app/assets/javascripts/ide/components/repo_tab.vue | 46 +- .../javascripts/ide/components/repo_tabs.vue | 6 +- .../ide/components/shared/tokened_input.vue | 4 +- app/assets/javascripts/ide/index.js | 1 - .../import_entities/components/import_status.vue | 2 +- .../javascripts/import_entities/constants.js | 6 + .../import_groups/components/import_table.vue | 92 +- .../import_groups/components/import_table_row.vue | 147 +- .../import_groups/graphql/client_factory.js | 78 +- .../graphql/queries/group.query.graphql | 5 + .../graphql/services/source_groups_manager.js | 83 +- .../graphql/services/status_poller.js | 12 +- .../import_entities/import_groups/index.js | 3 + .../javascripts/incidents_settings/constants.js | 4 +- .../edit/components/active_checkbox.vue | 2 +- .../edit/components/confirmation_modal.vue | 2 +- .../edit/components/integration_form.vue | 17 +- .../invite_members/components/group_select.vue | 103 + .../components/invite_group_trigger.vue | 34 + .../components/invite_members_modal.vue | 148 +- .../components/invite_members_trigger.vue | 29 +- .../components/members_token_select.vue | 4 +- app/assets/javascripts/invite_members/constants.js | 2 +- .../invite_members/init_invite_group_trigger.js | 20 + .../invite_members/init_invite_members_form.js | 7 + .../invite_members/init_invite_members_modal.js | 1 + .../issuable/components/csv_export_modal.vue | 100 + .../components/csv_import_export_buttons.vue | 87 + .../issuable/components/csv_import_modal.vue | 86 + app/assets/javascripts/issuable/constants.js | 6 + .../issuable/init_csv_import_export_buttons.js | 43 + app/assets/javascripts/issuable_form.js | 6 +- .../issuable_list/components/issuable_item.vue | 8 +- .../components/issuable_list_root.vue | 8 +- .../components/issuable_discussion.vue | 15 + .../components/issuable_show_root.vue | 10 + app/assets/javascripts/issue.js | 9 +- .../javascripts/issue_show/components/app.vue | 51 +- .../issue_show/components/description.vue | 15 +- .../issue_show/components/edit_actions.vue | 16 +- .../components/fields/description_template.vue | 4 +- .../javascripts/issue_show/components/form.vue | 6 +- .../issue_show/components/header_actions.vue | 3 +- .../javascripts/issue_show/services/index.js | 2 + app/assets/javascripts/issue_show/stores/index.js | 2 +- .../javascripts/issue_show/utils/parse_data.js | 2 +- .../issues_list/components/issuable.vue | 31 +- .../components/jira_issues_import_status_app.vue | 112 + .../components/jira_issues_list_root.vue | 112 - app/assets/javascripts/issues_list/index.js | 8 +- .../javascripts/jira_connect/components/app.vue | 48 +- .../jira_connect/components/groups_list_item.vue | 11 + app/assets/javascripts/jira_connect/constants.js | 1 + app/assets/javascripts/jira_connect/index.js | 5 +- .../jira_connect/store/mutation_types.js | 2 +- .../javascripts/jira_connect/store/mutations.js | 6 +- app/assets/javascripts/jira_connect/store/state.js | 2 +- app/assets/javascripts/jira_connect/utils.js | 33 + .../jobs/components/artifacts_block.vue | 2 +- .../javascripts/jobs/components/commit_block.vue | 11 +- .../jobs/components/job_container_item.vue | 2 +- .../jobs/components/job_log_controllers.vue | 15 +- .../jobs/components/job_sidebar_retry_button.vue | 4 +- app/assets/javascripts/jobs/components/sidebar.vue | 74 +- .../components/sidebar_job_details_container.vue | 2 +- .../jobs/components/stages_dropdown.vue | 2 +- .../javascripts/jobs/components/trigger_block.vue | 2 +- app/assets/javascripts/jobs/store/getters.js | 2 +- app/assets/javascripts/jobs/svg/scroll_down.svg | 4 - app/assets/javascripts/lib/chrome_84_icon_fix.js | 78 - app/assets/javascripts/lib/graphql.js | 3 +- .../javascripts/lib/utils/experimentation.js | 3 - app/assets/javascripts/lib/utils/http_status.js | 1 + app/assets/javascripts/lib/utils/number_utils.js | 21 + app/assets/javascripts/lib/utils/select2_utils.js | 25 + app/assets/javascripts/lib/utils/text_markdown.js | 6 +- .../lib/utils/unit_format/formatter_factory.js | 70 +- .../javascripts/lib/utils/unit_format/index.js | 342 +- app/assets/javascripts/lib/utils/url_utility.js | 5 +- app/assets/javascripts/locale/index.js | 20 + app/assets/javascripts/members.js | 111 - .../members/components/avatars/user_avatar.vue | 8 +- app/assets/javascripts/members/utils.js | 4 +- .../merge_conflicts/components/diff_file_editor.js | 115 - .../components/diff_file_editor.vue | 128 + .../components/inline_conflict_lines.js | 22 - .../components/inline_conflict_lines.vue | 47 + .../components/parallel_conflict_lines.js | 37 - .../components/parallel_conflict_lines.vue | 47 + .../javascripts/merge_conflicts/constants.js | 20 + .../merge_conflict_resolver_app.vue | 217 + .../merge_conflicts/merge_conflicts_bundle.js | 26 +- .../javascripts/merge_conflicts/store/actions.js | 120 + .../javascripts/merge_conflicts/store/getters.js | 117 + .../javascripts/merge_conflicts/store/index.js | 16 + .../merge_conflicts/store/mutation_types.js | 8 + .../javascripts/merge_conflicts/store/mutations.js | 40 + .../javascripts/merge_conflicts/store/state.js | 13 + app/assets/javascripts/merge_conflicts/utils.js | 228 + app/assets/javascripts/merge_request_tabs.js | 2 - app/assets/javascripts/milestone.js | 27 - app/assets/javascripts/milestone_select.js | 2 +- .../javascripts/monitoring/stores/actions.js | 2 +- .../monitoring/stores/embed_group/index.js | 2 - .../javascripts/notes/components/comment_form.vue | 208 +- .../notes/components/discussion_actions.vue | 4 +- .../discussion_notes_replies_wrapper.vue | 2 +- .../components/discussion_reply_placeholder.vue | 29 +- .../javascripts/notes/components/note_actions.vue | 92 +- .../javascripts/notes/components/note_form.vue | 4 +- .../javascripts/notes/components/noteable_note.vue | 9 +- .../javascripts/notes/components/notes_app.vue | 3 + .../notes/components/sidebar_subscription.vue | 58 + app/assets/javascripts/notes/i18n.js | 26 + app/assets/javascripts/notes/stores/actions.js | 44 +- app/assets/javascripts/notes/stores/utils.js | 4 +- .../components/custom_notifications_modal.vue | 17 +- .../components/notifications_dropdown.vue | 71 +- .../components/notifications_dropdown_item.vue | 8 +- app/assets/javascripts/notifications/constants.js | 5 +- app/assets/javascripts/notifications_dropdown.js | 35 - app/assets/javascripts/notifications_form.js | 48 - .../details/components/composer_installation.vue | 5 +- .../details/components/conan_installation.vue | 5 +- .../details/components/installation_title.vue | 38 + .../details/components/maven_installation.vue | 128 +- .../details/components/npm_installation.vue | 5 +- .../details/components/nuget_installation.vue | 6 +- .../details/components/pypi_installation.vue | 5 +- .../javascripts/packages/details/constants.js | 3 + .../javascripts/packages/details/store/getters.js | 16 + app/assets/javascripts/packages/list/constants.js | 2 +- .../shared/components/package_list_row.vue | 2 +- app/assets/javascripts/packages/shared/utils.js | 2 +- .../group/components/group_settings_app.vue | 5 +- .../settings/group/components/maven_settings.vue | 3 +- app/assets/javascripts/pages/admin/admin.js | 32 - .../pages/admin/dev_ops_report/index.js | 4 +- .../pages/admin/impersonation_tokens/index.js | 4 +- .../pages/admin/instance_statistics/index.js | 3 - .../javascripts/pages/admin/usage_trends/index.js | 3 + .../javascripts/pages/dashboard/issues/index.js | 16 +- .../pages/dashboard/milestones/show/index.js | 2 - .../pages/dashboard/projects/index/index.js | 7 +- .../pages/dashboard/todos/index/index.js | 2 +- .../javascripts/pages/groups/activity/index.js | 3 +- app/assets/javascripts/pages/groups/edit/index.js | 3 + .../pages/groups/group_members/index.js | 9 +- .../pages/groups/milestones/show/index.js | 2 - app/assets/javascripts/pages/groups/new/index.js | 14 + .../pages/groups/settings/ci_cd/show/index.js | 27 +- .../groups/settings/integrations/edit/index.js | 16 +- .../settings/packages_and_registries/index.js | 3 + .../pages/groups/settings/repository/show/index.js | 11 +- .../pages/groups/shared/group_details.js | 13 +- app/assets/javascripts/pages/groups/show/index.js | 6 +- app/assets/javascripts/pages/profiles/index.js | 28 +- .../javascripts/pages/profiles/index/index.js | 7 - .../pages/profiles/notifications/show/index.js | 4 - .../pages/profiles/personal_access_tokens/index.js | 5 +- .../javascripts/pages/projects/blob/edit/index.js | 2 +- .../javascripts/pages/projects/blob/new/index.js | 2 +- .../javascripts/pages/projects/blob/show/index.js | 98 +- .../javascripts/pages/projects/boards/index.js | 8 +- .../pages/projects/branches/index/index.js | 8 +- .../pages/projects/branches/new/index.js | 11 +- .../pages/projects/compare/show/index.js | 3 + .../pages/projects/cycle_analytics/show/index.js | 2 +- .../feature_flags_user_lists/edit/index.js | 22 +- .../projects/feature_flags_user_lists/new/index.js | 28 +- .../feature_flags_user_lists/show/index.js | 19 +- .../pages/projects/forks/new/components/app.vue | 72 + .../projects/forks/new/components/fork_form.vue | 304 + .../forks/new/components/fork_groups_list_item.vue | 20 +- .../javascripts/pages/projects/forks/new/index.js | 48 +- .../pages/projects/imports/show/index.js | 4 +- .../pages/projects/issues/index/index.js | 2 + .../javascripts/pages/projects/jobs/index/index.js | 30 +- .../pages/projects/labels/edit/index.js | 2 +- .../learn_gitlab/components/learn_gitlab_a.vue | 8 +- .../learn_gitlab/components/learn_gitlab_b.vue | 109 +- .../components/learn_gitlab_info_card.vue | 70 + .../pages/projects/learn_gitlab/constants/index.js | 56 +- .../javascripts/pages/projects/logs/index.js | 2 +- .../pages/projects/merge_requests/edit/index.js | 6 +- .../pages/projects/merge_requests/index/index.js | 2 + .../pages/projects/milestones/edit/index.js | 4 +- .../pages/projects/milestones/index/index.js | 2 +- .../pages/projects/milestones/new/index.js | 2 +- .../pages/projects/milestones/show/index.js | 6 +- app/assets/javascripts/pages/projects/new/index.js | 42 +- .../pages/projects/project_members/index.js | 110 +- .../projects/prometheus/metrics/edit/index.js | 4 +- .../pages/projects/prometheus/metrics/new/index.js | 4 +- .../pages/projects/settings/access_tokens/index.js | 2 +- .../pages/projects/settings/ci_cd/show/index.js | 3 + .../projects/settings/operations/show/index.js | 5 + .../projects/settings/repository/show/index.js | 3 + .../permissions/components/settings_panel.vue | 36 +- .../pages/projects/shared/permissions/constants.js | 6 +- .../javascripts/pages/projects/show/index.js | 21 +- .../javascripts/pages/projects/tags/new/index.js | 8 +- .../pages/projects/tags/releases/index.js | 6 +- app/assets/javascripts/pages/search/show/index.js | 4 +- .../pages/shared/wikis/components/wiki_alert.vue | 31 + app/assets/javascripts/pages/shared/wikis/index.js | 28 +- app/assets/javascripts/pages/users/index.js | 10 +- app/assets/javascripts/performance/constants.js | 21 + .../components/performance_bar_app.vue | 9 +- app/assets/javascripts/performance_bar/index.js | 2 + .../components/commit/commit_form.vue | 16 +- .../components/commit/commit_section.vue | 18 +- .../components/editor/ci_config_merged_preview.vue | 2 +- .../components/header/pipeline_editor_header.vue | 47 +- .../components/header/pipeline_status.vue | 120 + .../components/header/validation_segment.vue | 18 +- .../components/ui/pipeline_editor_empty_state.vue | 56 + .../javascripts/pipeline_editor/constants.js | 1 - .../graphql/queries/client/current_branch.graphql | 3 + .../graphql/queries/client/pipeline.graphql | 17 + .../pipeline_editor/graphql/resolvers.js | 23 + app/assets/javascripts/pipeline_editor/index.js | 4 + .../pipeline_editor/pipeline_editor_app.vue | 77 +- .../pipeline_editor/pipeline_editor_home.vue | 1 + .../pipeline_new/components/pipeline_new_form.vue | 189 +- .../pipeline_new/components/refs_dropdown.vue | 113 + app/assets/javascripts/pipeline_new/constants.js | 1 + app/assets/javascripts/pipeline_new/index.js | 14 +- .../pipelines/components/graph/graph_component.vue | 24 +- .../components/graph/graph_component_wrapper.vue | 63 +- .../components/graph/linked_pipelines_column.vue | 33 +- .../pipelines/components/graph/utils.js | 97 +- .../pipelines/components/graph_shared/api.js | 8 + .../components/graph_shared/links_inner.vue | 72 +- .../components/graph_shared/links_layer.vue | 7 +- .../components/pipeline_graph/pipeline_graph.vue | 15 +- .../components/pipelines_list/empty_state.vue | 12 +- .../pipelines_list/pipeline_mini_graph.vue | 54 + .../pipelines_list/pipeline_operations.vue | 119 + .../components/pipelines_list/pipeline_stage.vue | 152 + .../pipelines_list/pipeline_triggerer.vue | 12 +- .../components/pipelines_list/pipeline_url.vue | 92 +- .../components/pipelines_list/pipelines.vue | 10 - .../pipelines_list/pipelines_actions.vue | 102 - .../pipelines_list/pipelines_artifacts.vue | 2 + .../components/pipelines_list/pipelines_commit.vue | 85 + .../pipelines_list/pipelines_manual_actions.vue | 103 + .../pipelines_list/pipelines_status_badge.vue | 37 + .../components/pipelines_list/pipelines_table.vue | 212 +- .../pipelines_list/pipelines_table_row.vue | 61 +- .../pipelines/components/pipelines_list/stage.vue | 234 - .../components/pipelines_list/time_ago.vue | 41 +- app/assets/javascripts/pipelines/constants.js | 3 +- .../pipelines/pipeline_details_bundle.js | 3 +- .../pipelines/pipeline_details_graph.js | 9 +- .../javascripts/pipelines/pipelines_index.js | 4 - .../profile/account/components/update_username.vue | 8 +- .../preferences/components/profile_preferences.vue | 26 +- app/assets/javascripts/profile/profile.js | 1 + .../javascripts/projects/commits/store/actions.js | 2 +- .../projects/compare/components/app.vue | 79 +- .../projects/compare/components/app_legacy.vue | 89 + .../projects/compare/components/repo_dropdown.vue | 93 + .../projects/compare/components/revision_card.vue | 65 + .../compare/components/revision_dropdown.vue | 115 +- .../components/revision_dropdown_legacy.vue | 145 + app/assets/javascripts/projects/compare/index.js | 42 +- .../javascripts/projects/details/upload_button.vue | 49 + .../components/new_project_push_tip_popover.vue | 66 + .../components/welcome.vue | 14 +- .../experiment_new_project_creation/index.js | 6 + .../feature_flags_user_lists/show/index.js | 23 + .../charts/components/pipeline_charts.vue | 6 +- app/assets/javascripts/projects/project_new.js | 35 - .../components/service_desk_root.vue | 2 +- .../components/service_desk_setting.vue | 2 + .../javascripts/projects/upload_file_experiment.js | 24 + .../protected_branches/protected_branch_create.js | 7 + .../protected_branches/protected_branch_edit.js | 21 +- .../ref/components/ref_results_section.vue | 8 +- .../javascripts/ref/components/ref_selector.vue | 239 +- app/assets/javascripts/ref/constants.js | 5 + app/assets/javascripts/ref/stores/actions.js | 17 +- .../javascripts/ref/stores/mutation_types.js | 2 + app/assets/javascripts/ref/stores/mutations.js | 3 + app/assets/javascripts/ref/stores/state.js | 25 +- .../registry/explorer/components/delete_button.vue | 1 + .../components/details_page/details_header.vue | 32 +- .../components/details_page/tags_list_row.vue | 1 + .../explorer/components/list_page/image_list.vue | 1 - .../components/list_page/image_list_row.vue | 7 +- .../components/list_page/registry_header.vue | 19 +- .../registry/explorer/constants/common.js | 3 + .../registry/explorer/constants/details.js | 8 +- .../explorer/constants/expiration_policies.js | 3 - .../registry/explorer/constants/index.js | 1 + .../registry/explorer/pages/details.vue | 7 +- .../javascripts/registry/explorer/pages/list.vue | 1 - .../components/related_issuable_input.vue | 1 + .../releases/components/app_edit_new.vue | 11 +- .../releases/components/asset_links_form.vue | 3 + .../releases/components/tag_field_new.vue | 70 +- .../reports/components/grouped_issues_list.vue | 13 + .../components/grouped_test_reports_app.vue | 42 +- .../javascripts/reports/components/issues_list.vue | 13 + .../reports/components/report_section.vue | 2 +- .../javascripts/reports/components/summary_row.vue | 32 +- .../reports/components/test_issue_body.vue | 74 +- .../repository/components/upload_blob_modal.vue | 218 + app/assets/javascripts/repository/index.js | 19 +- app/assets/javascripts/right_sidebar.js | 3 + .../components/configuration_table.vue | 23 +- .../components/features_constants.js | 112 - .../components/manage_sast.vue | 8 +- .../components/scanners_constants.js | 136 + .../security_configuration/components/upgrade.vue | 10 +- .../javascripts/security_configuration/index.js | 3 +- app/assets/javascripts/sentry/sentry_config.js | 2 +- app/assets/javascripts/sentry/wrapper.js | 26 - app/assets/javascripts/shared/popover.js | 33 - .../components/assignees/issuable_assignees.vue | 9 +- .../assignees/sidebar_assignees_widget.vue | 50 +- .../assignees/uncollapsed_assignee_list.vue | 2 +- .../confidential/confidential_issue_sidebar.vue | 113 - .../sidebar/components/confidential/edit_form.vue | 64 - .../components/confidential/edit_form_buttons.vue | 81 - .../update_issue_confidential.mutation.graphql | 8 - .../sidebar_confidentiality_content.vue | 64 + .../confidential/sidebar_confidentiality_form.vue | 136 + .../sidebar_confidentiality_widget.vue | 143 + .../reviewers/uncollapsed_reviewer_list.vue | 16 +- .../sidebar/components/sidebar_editable_item.vue | 37 +- .../components/subscriptions/subscriptions.vue | 2 + .../components/time_tracking/help_state.vue | 6 +- app/assets/javascripts/sidebar/constants.js | 17 + app/assets/javascripts/sidebar/graphql.js | 8 + app/assets/javascripts/sidebar/mount_sidebar.js | 69 +- .../queries/epic_confidential.query.graphql | 10 + .../queries/issue_confidential.query.graphql | 10 + .../sidebar/queries/sidebarDetailsMR.query.graphql | 7 + .../update_epic_confidential.mutation.graphql | 9 + .../update_issue_confidential.mutation.graphql | 9 + .../sidebar/services/sidebar_service.js | 15 +- app/assets/javascripts/sidebar/sidebar_mediator.js | 1 + app/assets/javascripts/single_file_diff.js | 2 +- .../javascripts/snippets/components/edit.vue | 5 +- .../components/snippet_visibility_edit.vue | 7 +- .../javascripts/static_site_editor/constants.js | 2 +- .../javascripts/tooltips/components/tooltips.vue | 6 +- app/assets/javascripts/tooltips/index.js | 1 + app/assets/javascripts/tracking.js | 62 +- app/assets/javascripts/user_popovers.js | 26 +- .../components/deployment/deployment_list.vue | 92 + .../components/mr_collapsible_extension.vue | 25 +- .../components/mr_widget_how_to_merge_modal.vue | 12 +- .../components/mr_widget_pipeline.vue | 37 +- .../components/mr_widget_pipeline_container.vue | 48 +- .../states/mr_widget_auto_merge_enabled.vue | 2 +- .../components/states/mr_widget_conflicts.vue | 82 +- .../components/states/nothing_to_merge.vue | 36 +- .../components/states/ready_to_merge.vue | 85 +- .../components/states/squash_before_merge.vue | 2 +- .../components/states/work_in_progress.vue | 5 +- .../mixins/mr_widget_pipeline.js | 5 - .../queries/toggle_wip.mutation.graphql | 1 + .../stores/mr_widget_store.js | 2 +- .../alert_details/components/alert_details.vue | 10 +- .../alert_details/components/alert_metrics.vue | 2 +- .../vue_shared/components/awards_list.vue | 22 + .../vue_shared/components/changed_file_icon.vue | 8 +- .../javascripts/vue_shared/components/ci_icon.vue | 8 +- .../vue_shared/components/clipboard_button.vue | 12 +- .../components/diff_viewer/viewers/renamed.vue | 8 +- .../vue_shared/components/file_icon.vue | 3 +- .../vue_shared/components/header_ci_component.vue | 10 +- .../components/markdown/suggestion_diff_header.vue | 22 +- .../vue_shared/components/notes/timeline_icon.vue | 3 + .../components/registry/code_instruction.vue | 40 +- .../vue_shared/components/registry/list_item.vue | 2 +- .../registry/persisted_dropdown_selection.vue | 59 + .../vue_shared/components/select2_select.vue | 6 + .../components/settings/settings_block.vue | 7 +- .../sidebar/labels_select_vue/dropdown_value.vue | 5 +- .../labels_select_vue/labels_select_root.vue | 6 + .../components/sidebar/multiselect_dropdown.vue | 11 +- .../queries/get_issue_participants.query.graphql | 4 +- .../queries/get_mr_participants.query.graphql | 2 +- .../update_issue_assignees.mutation.graphql | 4 +- .../javascripts/vue_shared/components/tabs/tab.vue | 47 - .../javascripts/vue_shared/components/tabs/tabs.js | 76 - .../vue_shared/components/tooltip_on_truncate.vue | 7 +- .../components/upload_dropzone/upload_dropzone.vue | 21 +- .../components/user_access_role_badge.vue | 22 + .../javascripts/vue_shared/directives/tooltip.js | 35 - .../vue_shared/gl_feature_flags_plugin.js | 7 +- .../security_reports/components/help_icon.vue | 2 +- .../vue_shared/security_reports/constants.js | 3 +- app/assets/stylesheets/_page_specific_files.scss | 2 - app/assets/stylesheets/bootstrap_migration.scss | 23 +- app/assets/stylesheets/components/avatar.scss | 5 +- .../stylesheets/components/milestone_combobox.scss | 18 +- .../stylesheets/components/ref_selector.scss | 16 +- app/assets/stylesheets/disable_animations.scss | 6 - app/assets/stylesheets/framework.scss | 1 - app/assets/stylesheets/framework/awards.scss | 2 + app/assets/stylesheets/framework/buttons.scss | 40 +- app/assets/stylesheets/framework/diffs.scss | 1 - app/assets/stylesheets/framework/dropdowns.scss | 26 +- app/assets/stylesheets/framework/editor-lite.scss | 5 + app/assets/stylesheets/framework/emojis.scss | 23 + app/assets/stylesheets/framework/filters.scss | 3 +- app/assets/stylesheets/framework/forms.scss | 3 +- app/assets/stylesheets/framework/layout.scss | 3 +- app/assets/stylesheets/framework/lists.scss | 11 - app/assets/stylesheets/framework/mixins.scss | 1 - app/assets/stylesheets/framework/modal.scss | 16 - app/assets/stylesheets/framework/tooltips.scss | 6 - app/assets/stylesheets/framework/typography.scss | 21 +- app/assets/stylesheets/framework/variables.scss | 6 +- .../stylesheets/highlight/conflict_colors.scss | 2 - app/assets/stylesheets/highlight/themes/dark.scss | 2 +- .../stylesheets/highlight/themes/monokai.scss | 2 + app/assets/stylesheets/highlight/white_base.scss | 6 +- .../lazy_bundles/select2_overrides.scss | 16 + app/assets/stylesheets/mailer_client_specific.scss | 1 - .../mailers/highlighted_diff_email.scss | 6 +- app/assets/stylesheets/page_bundles/boards.scss | 11 +- app/assets/stylesheets/page_bundles/build.scss | 29 - .../stylesheets/page_bundles/cycle_analytics.scss | 32 - app/assets/stylesheets/page_bundles/ide.scss | 3 +- .../page_bundles/ide_themes/_solarized-light.scss | 8 +- app/assets/stylesheets/page_bundles/import.scss | 7 + .../stylesheets/page_bundles/jira_connect.scss | 56 +- .../stylesheets/page_bundles/learn_gitlab.scss | 3 + app/assets/stylesheets/page_bundles/members.scss | 255 + .../stylesheets/page_bundles/oncall_schedules.scss | 7 - app/assets/stylesheets/page_bundles/pipelines.scss | 19 +- app/assets/stylesheets/page_bundles/reports.scss | 5 - app/assets/stylesheets/page_bundles/signup.scss | 5 - app/assets/stylesheets/pages/clusters.scss | 1 + app/assets/stylesheets/pages/groups.scss | 4 - app/assets/stylesheets/pages/login.scss | 11 - app/assets/stylesheets/pages/members.scss | 253 - app/assets/stylesheets/pages/merge_requests.scss | 27 +- app/assets/stylesheets/pages/note_form.scss | 41 +- app/assets/stylesheets/pages/projects.scss | 71 +- app/assets/stylesheets/pages/trials.scss | 15 - app/assets/stylesheets/startup/startup-signin.scss | 5 - app/assets/stylesheets/test_environment.scss | 11 + app/assets/stylesheets/themes/theme_helper.scss | 5 + app/assets/stylesheets/themes/theme_light.scss | 20 +- app/assets/stylesheets/utilities.scss | 15 + app/assets/stylesheets/vendors/atwho.scss | 5 +- .../admin/application_settings_controller.rb | 5 +- .../admin/instance_statistics_controller.rb | 18 - app/controllers/admin/usage_trends_controller.rb | 12 + app/controllers/application_controller.rb | 12 +- app/controllers/concerns/boards_responses.rb | 4 +- app/controllers/concerns/check_rate_limit.rb | 23 + app/controllers/concerns/comment_and_close_flag.rb | 11 - .../concerns/multiple_boards_actions.rb | 2 +- app/controllers/concerns/notes_actions.rb | 8 +- .../security_and_compliance_permissions.rb | 15 + app/controllers/concerns/spammable_actions.rb | 15 +- app/controllers/concerns/wiki_actions.rb | 3 +- app/controllers/dashboard/todos_controller.rb | 2 +- app/controllers/explore/projects_controller.rb | 2 +- app/controllers/graphql_controller.rb | 14 +- app/controllers/groups/boards_controller.rb | 7 +- .../dependency_proxy_for_containers_controller.rb | 13 +- app/controllers/groups_controller.rb | 1 - app/controllers/help_controller.rb | 1 + app/controllers/ide_controller.rb | 24 + app/controllers/import/bulk_imports_controller.rb | 13 +- app/controllers/import/gitlab_groups_controller.rb | 7 +- .../jira_connect/subscriptions_controller.rb | 3 - .../notification_settings_controller.rb | 61 - .../profiles/personal_access_tokens_controller.rb | 4 + app/controllers/profiles/preferences_controller.rb | 3 +- app/controllers/projects/blob_controller.rb | 10 +- app/controllers/projects/boards_controller.rb | 6 +- .../daily_build_group_report_results_controller.rb | 49 +- .../projects/ci/pipeline_editor_controller.rb | 3 +- app/controllers/projects/commit_controller.rb | 9 +- app/controllers/projects/compare_controller.rb | 56 +- app/controllers/projects/forks_controller.rb | 4 + app/controllers/projects/graphs_controller.rb | 2 +- app/controllers/projects/issues_controller.rb | 3 +- .../projects/merge_requests_controller.rb | 7 +- app/controllers/projects/notes_controller.rb | 17 - .../projects/pipelines/tests_controller.rb | 2 +- app/controllers/projects/pipelines_controller.rb | 5 +- .../projects/project_members_controller.rb | 4 - .../projects/protected_branches_controller.rb | 1 + .../projects/security/configuration_controller.rb | 2 + app/controllers/projects/services_controller.rb | 2 - .../projects/settings/operations_controller.rb | 4 - app/controllers/projects/templates_controller.rb | 2 +- app/controllers/projects_controller.rb | 40 +- .../repositories/git_http_controller.rb | 6 +- app/controllers/root_controller.rb | 4 +- app/controllers/search_controller.rb | 8 +- app/controllers/user_callouts_controller.rb | 11 +- app/experiments/application_experiment.rb | 78 +- app/finders/admin/plans_finder.rb | 24 + app/finders/boards/boards_finder.rb | 32 + .../ci/daily_build_group_report_results_finder.rb | 103 +- .../daily_build_group_report_results_finder.rb | 88 - app/finders/issuable_finder.rb | 52 +- app/finders/issuable_finder/params.rb | 27 - app/finders/issuables/author_filter.rb | 41 + app/finders/issuables/base_filter.rb | 36 + app/finders/merge_request_target_project_finder.rb | 11 +- .../merge_requests/oldest_per_commit_finder.rb | 32 +- app/finders/namespaces/projects_finder.rb | 64 + app/finders/packages/maven/package_finder.rb | 5 +- app/finders/packages/npm/package_finder.rb | 38 +- app/finders/projects/groups_finder.rb | 68 + .../repositories/changelog_commits_finder.rb | 101 + .../repositories/commits_with_trailer_finder.rb | 82 - app/finders/repositories/previous_tag_finder.rb | 12 +- .../security/license_compliance_jobs_finder.rb | 2 +- app/finders/template_finder.rb | 16 +- app/finders/users_finder.rb | 9 +- app/graphql/gitlab_schema.rb | 2 - app/graphql/mutations/boards/create.rb | 4 +- app/graphql/mutations/boards/destroy.rb | 2 +- .../mutations/boards/issues/issue_move_list.rb | 45 +- app/graphql/mutations/boards/lists/create.rb | 2 +- app/graphql/mutations/boards/lists/destroy.rb | 2 +- app/graphql/mutations/boards/lists/update.rb | 4 +- app/graphql/mutations/boards/update.rb | 2 +- app/graphql/mutations/branches/create.rb | 2 - .../concerns/mutations/can_mutate_spammable.rb | 21 +- app/graphql/mutations/custom_emoji/create.rb | 1 + app/graphql/mutations/merge_requests/accept.rb | 88 + app/graphql/mutations/merge_requests/set_wip.rb | 2 +- app/graphql/mutations/notes/create/diff_note.rb | 16 + app/graphql/mutations/notes/update/base.rb | 12 +- .../mutations/notes/update/image_diff_note.rb | 23 +- app/graphql/mutations/notes/update/note.rb | 13 +- app/graphql/mutations/release_asset_links/base.rb | 17 + .../mutations/release_asset_links/create.rb | 36 + app/graphql/mutations/snippets/create.rb | 2 +- app/graphql/mutations/snippets/update.rb | 2 +- app/graphql/mutations/todos/restore_many.rb | 2 +- app/graphql/mutations/user_callouts/create.rb | 30 + .../instance_statistics/measurements_resolver.rb | 47 - .../usage_trends/measurements_resolver.rb | 47 + .../resolvers/alert_management/alert_resolver.rb | 3 +- .../alert_management/http_integrations_resolver.rb | 23 + app/graphql/resolvers/base_resolver.rb | 11 +- app/graphql/resolvers/board_lists_resolver.rb | 2 +- app/graphql/resolvers/board_resolver.rb | 2 +- app/graphql/resolvers/boards_resolver.rb | 2 +- app/graphql/resolvers/branch_commit_resolver.rb | 3 +- app/graphql/resolvers/ci/config_resolver.rb | 2 +- .../resolvers/concerns/resolves_snippets.rb | 2 +- app/graphql/resolvers/full_path_resolver.rb | 2 +- app/graphql/resolvers/group_packages_resolver.rb | 27 + app/graphql/resolvers/last_commit_resolver.rb | 2 + .../resolvers/metrics/dashboard_resolver.rb | 21 +- .../resolvers/namespace_projects_resolver.rb | 35 +- app/graphql/resolvers/packages_resolver.rb | 19 - .../resolvers/project_merge_requests_resolver.rb | 2 +- app/graphql/resolvers/project_packages_resolver.rb | 19 + app/graphql/resolvers/project_pipeline_resolver.rb | 32 +- app/graphql/resolvers/snippets/blobs_resolver.rb | 1 + app/graphql/resolvers/tree_resolver.rb | 2 + app/graphql/types/access_level_enum.rb | 13 +- .../measurement_identifier_enum.rb | 25 - .../instance_statistics/measurement_type.rb | 26 - .../usage_trends/measurement_identifier_enum.rb | 25 + .../analytics/usage_trends/measurement_type.rb | 26 + .../types/alert_management/alert_sort_enum.rb | 28 +- app/graphql/types/alert_management/alert_type.rb | 6 + .../types/alert_management/domain_filter_enum.rb | 4 +- .../alert_management/http_integration_type.rb | 2 + .../alert_management/integration_type_enum.rb | 4 +- app/graphql/types/base_argument.rb | 1 - app/graphql/types/base_field.rb | 55 +- app/graphql/types/blob_viewers/type_enum.rb | 6 +- app/graphql/types/board_list_type.rb | 8 +- app/graphql/types/board_type.rb | 4 +- .../types/boards/board_issue_input_base_type.rb | 2 - app/graphql/types/boards/board_issue_input_type.rb | 2 - app/graphql/types/ci/config/status_enum.rb | 4 +- .../types/ci/job_artifact_file_type_enum.rb | 3 +- app/graphql/types/ci/job_type.rb | 4 + app/graphql/types/ci/pipeline_type.rb | 7 + .../sast/analyzers_entity_input_type.rb | 1 - .../ci_configuration/sast/entity_input_type.rb | 1 - .../types/ci_configuration/sast/input_type.rb | 2 +- .../sast/ui_component_size_enum.rb | 6 +- app/graphql/types/commit_action_mode_enum.rb | 10 +- app/graphql/types/commit_action_type.rb | 2 - app/graphql/types/commit_encoding_enum.rb | 4 +- .../types/concerns/gitlab_style_deprecations.rb | 2 +- .../types/container_repository_sort_enum.rb | 4 +- app/graphql/types/current_user_todos.rb | 5 +- .../design_management/design_version_event_enum.rb | 2 +- app/graphql/types/diff_paths_input_type.rb | 2 - .../error_tracking/sentry_error_status_enum.rb | 8 +- app/graphql/types/global_id_type.rb | 5 +- app/graphql/types/group_type.rb | 4 + app/graphql/types/issuable_sort_enum.rb | 12 +- app/graphql/types/issuable_state_enum.rb | 8 +- app/graphql/types/issue_sort_enum.rb | 10 +- app/graphql/types/issue_state_event_enum.rb | 4 +- app/graphql/types/jira_users_mapping_input_type.rb | 2 - app/graphql/types/label_type.rb | 4 + app/graphql/types/merge_request_sort_enum.rb | 4 +- app/graphql/types/merge_request_state_enum.rb | 2 +- app/graphql/types/merge_request_type.rb | 6 +- app/graphql/types/merge_strategy_enum.rb | 9 + app/graphql/types/milestone_state_enum.rb | 4 +- app/graphql/types/mutation_operation_mode_enum.rb | 6 +- app/graphql/types/mutation_type.rb | 14 +- .../types/notes/diff_image_position_input_type.rb | 2 - .../types/notes/diff_position_base_input_type.rb | 2 - .../types/notes/diff_position_input_type.rb | 4 +- app/graphql/types/notes/position_type_enum.rb | 4 +- .../notes/update_diff_image_position_input_type.rb | 3 - app/graphql/types/project_type.rb | 8 +- .../types/projects/namespace_project_sort_enum.rb | 4 +- app/graphql/types/query_type.rb | 12 +- app/graphql/types/range_input_type.rb | 2 - app/graphql/types/release_asset_link_input_type.rb | 17 +- .../release_asset_link_shared_input_arguments.rb | 25 + app/graphql/types/release_assets_input_type.rb | 1 - app/graphql/types/release_sort_enum.rb | 8 +- .../types/snippets/blob_action_input_type.rb | 2 +- app/graphql/types/snippets/blob_type.rb | 1 - app/graphql/types/sort_enum.rb | 16 +- app/graphql/types/timeframe_input_type.rb | 2 - app/graphql/types/todo_action_enum.rb | 16 +- app/graphql/types/todo_state_enum.rb | 4 +- app/graphql/types/todo_target_enum.rb | 10 +- app/graphql/types/tree/blob_type.rb | 1 + .../types/user_callout_feature_name_enum.rb | 12 + app/graphql/types/user_callout_type.rb | 12 + app/graphql/types/user_state_enum.rb | 6 +- app/graphql/types/user_type.rb | 4 + app/graphql/types/visibility_levels_enum.rb | 2 +- app/helpers/analytics/navbar_helper.rb | 2 +- app/helpers/application_settings_helper.rb | 10 +- app/helpers/auth_helper.rb | 24 +- app/helpers/avatars_helper.rb | 29 +- app/helpers/blob_helper.rb | 4 +- app/helpers/ci/pipeline_editor_helper.rb | 3 +- app/helpers/commits_helper.rb | 4 +- app/helpers/compare_helper.rb | 37 +- app/helpers/diff_helper.rb | 6 +- app/helpers/gitlab_routing_helper.rb | 5 + app/helpers/ide_helper.rb | 33 +- app/helpers/in_product_marketing_helper.rb | 2 +- app/helpers/invite_members_helper.rb | 10 +- .../issuables_description_templates_helper.rb | 17 +- app/helpers/issuables_helper.rb | 5 +- app/helpers/jira_connect_helper.rb | 6 - app/helpers/learn_gitlab_helper.rb | 17 +- app/helpers/merge_requests_helper.rb | 12 + app/helpers/notifications_helper.rb | 46 - app/helpers/preferences_helper.rb | 1 + app/helpers/projects/project_members_helper.rb | 4 +- .../projects/security/configuration_helper.rb | 13 + app/helpers/projects_helper.rb | 15 +- app/helpers/search_helper.rb | 2 +- app/helpers/stat_anchors_helper.rb | 3 +- app/helpers/user_callouts_helper.rb | 2 +- app/helpers/visibility_level_helper.rb | 4 +- app/helpers/wiki_helper.rb | 18 - app/helpers/workhorse_helper.rb | 10 +- app/mailers/emails/merge_requests.rb | 8 + app/mailers/emails/pipelines.rb | 2 +- app/mailers/emails/profile.rb | 5 +- app/mailers/previews/notify_preview.rb | 14 +- app/models/analytics/instance_statistics.rb | 9 - .../analytics/instance_statistics/measurement.rb | 61 - app/models/analytics/usage_trends/measurement.rb | 61 + app/models/application_setting.rb | 12 +- app/models/application_setting_implementation.rb | 21 +- app/models/bulk_imports/entity.rb | 9 +- app/models/ci/build.rb | 26 +- app/models/ci/daily_build_group_report_result.rb | 14 - app/models/ci/group.rb | 2 +- app/models/ci/group_variable.rb | 4 +- app/models/ci/job_artifact.rb | 6 +- app/models/ci/legacy_stage.rb | 2 +- app/models/ci/pipeline.rb | 33 +- app/models/ci/processable.rb | 4 - app/models/ci/ref.rb | 2 +- app/models/ci/runner.rb | 40 +- app/models/ci/runner_namespace.rb | 9 +- app/models/ci/stage.rb | 4 +- app/models/ci/variable.rb | 1 - app/models/clusters/agent_token.rb | 5 +- app/models/clusters/applications/runner.rb | 2 +- app/models/clusters/instance.rb | 4 - app/models/commit_status.rb | 11 +- app/models/commit_with_pipeline.rb | 38 - .../concerns/analytics/cycle_analytics/stage.rb | 19 - app/models/concerns/avatarable.rb | 8 + app/models/concerns/boards/listable.rb | 20 + app/models/concerns/ci/contextable.rb | 16 +- app/models/concerns/ci/has_status.rb | 6 +- app/models/concerns/ci/has_variable.rb | 1 + app/models/concerns/issuable.rb | 1 + .../concerns/project_features_compatibility.rb | 12 + app/models/custom_emoji.rb | 2 + app/models/dependency_proxy.rb | 1 + app/models/dependency_proxy/manifest.rb | 7 +- app/models/environment.rb | 30 +- .../project_error_tracking_setting.rb | 10 +- app/models/experiment.rb | 20 +- app/models/group.rb | 57 +- app/models/hooks/web_hook_log.rb | 2 + app/models/hooks/web_hook_log_partitioned.rb | 17 + app/models/issue.rb | 4 + app/models/issue_email_participant.rb | 2 +- app/models/iteration.rb | 136 +- app/models/label.rb | 4 + app/models/list.rb | 21 +- app/models/merge_request.rb | 90 +- app/models/namespace.rb | 39 +- app/models/namespace/root_storage_statistics.rb | 5 +- app/models/note.rb | 12 +- app/models/notification_setting.rb | 3 +- app/models/onboarding_progress.rb | 8 + app/models/packages/nuget.rb | 2 + app/models/packages/package.rb | 34 +- app/models/packages/package_file.rb | 4 + app/models/packages/rubygems.rb | 10 + app/models/packages/rubygems/metadatum.rb | 1 - app/models/pages/lookup_path.rb | 6 +- app/models/personal_access_token.rb | 5 + app/models/project.rb | 43 +- app/models/project_feature.rb | 37 +- app/models/project_repository_storage_move.rb | 41 +- .../project_services/chat_notification_service.rb | 15 +- app/models/project_services/discord_service.rb | 3 + app/models/project_services/mattermost_service.rb | 2 +- app/models/project_services/prometheus_service.rb | 12 +- .../project_services/slack_mattermost/notifier.rb | 24 + app/models/project_services/slack_service.rb | 34 +- .../project_services/unify_circuit_service.rb | 2 +- app/models/project_services/webex_teams_service.rb | 2 +- app/models/projects/repository_storage_move.rb | 38 + app/models/protected_branch.rb | 9 + app/models/snippet.rb | 8 +- app/models/snippet_repository_storage_move.rb | 35 +- app/models/snippets/repository_storage_move.rb | 32 + app/models/todo.rb | 1 - app/models/user.rb | 23 +- app/models/user_callout.rb | 2 +- app/models/user_preference.rb | 1 + app/models/wiki.rb | 2 +- app/models/wiki_page.rb | 5 +- app/models/zoom_meeting.rb | 2 +- .../instance_statistics/measurement_policy.rb | 9 - .../analytics/usage_trends/measurement_policy.rb | 9 + app/policies/base_policy.rb | 11 +- app/policies/concerns/readonly_abilities.rb | 2 +- app/policies/global_policy.rb | 2 +- app/policies/group_policy.rb | 8 +- app/policies/merge_request_policy.rb | 11 +- app/policies/note_policy.rb | 4 + app/policies/project_policy.rb | 25 +- app/presenters/ci/build_runner_presenter.rb | 4 + app/presenters/ci/pipeline_presenter.rb | 2 +- app/presenters/dev_ops_report/metric_presenter.rb | 2 + .../packages/composer/packages_presenter.rb | 15 +- app/presenters/project_presenter.rb | 86 +- app/serializers/base_discussion_entity.rb | 2 +- app/serializers/build_details_entity.rb | 2 +- app/serializers/ci/pipeline_entity.rb | 6 +- app/serializers/current_board_entity.rb | 2 + app/serializers/merge_request_user_entity.rb | 12 +- app/serializers/merge_request_widget_entity.rb | 2 +- app/serializers/merge_requests/pipeline_entity.rb | 2 +- app/serializers/pipeline_serializer.rb | 5 +- app/serializers/test_suite_comparer_entity.rb | 12 + .../alert_management/create_alert_issue_service.rb | 11 + .../periodic_recalculate_service.rb | 4 +- app/services/boards/base_item_move_service.rb | 72 + app/services/boards/base_items_list_service.rb | 16 + app/services/boards/issues/list_service.rb | 16 - app/services/boards/issues/move_service.rb | 75 +- app/services/boards/list_service.rb | 32 - app/services/boards/lists/list_service.rb | 21 +- app/services/boards/lists/update_service.rb | 4 +- app/services/boards/update_service.rb | 11 + app/services/bulk_import_service.rb | 7 +- .../ci/create_downstream_pipeline_service.rb | 2 +- app/services/ci/create_pipeline_service.rb | 4 +- app/services/ci/expire_pipeline_cache_service.rb | 33 +- .../atomic_processing_service.rb | 4 +- .../atomic_processing_service/status_collection.rb | 2 +- app/services/ci/process_pipeline_service.rb | 2 + app/services/ci/register_job_service.rb | 193 +- app/services/ci/retry_build_service.rb | 4 +- app/services/ci/retry_pipeline_service.rb | 2 +- app/services/ci/update_build_queue_service.rb | 11 +- app/services/clusters/kubernetes.rb | 2 + .../create_or_update_service_account_service.rb | 32 + .../concerns/alert_management/alert_processing.rb | 19 +- .../find_or_create_manifest_service.rb | 7 +- .../dependency_proxy/head_manifest_service.rb | 6 +- .../dependency_proxy/pull_manifest_service.rb | 4 +- .../deployments/older_deployments_drop_service.rb | 2 +- .../deployments/update_environment_service.rb | 21 +- app/services/groups/create_service.rb | 2 +- app/services/groups/destroy_service.rb | 4 +- app/services/groups/group_links/create_service.rb | 2 +- app/services/groups/group_links/destroy_service.rb | 2 +- app/services/groups/group_links/update_service.rb | 2 +- app/services/import/github_service.rb | 34 +- app/services/issuable/clone/base_service.rb | 11 +- app/services/issuable/process_assignees.rb | 36 + app/services/issue_rebalancing_service.rb | 5 +- app/services/issues/clone_service.rb | 1 + app/services/issues/create_service.rb | 1 + app/services/issues/move_service.rb | 15 +- app/services/members/invite_service.rb | 97 +- .../merge_requests/after_create_service.rb | 10 + app/services/merge_requests/base_service.rb | 2 +- app/services/merge_requests/build_service.rb | 16 +- app/services/merge_requests/merge_service.rb | 3 +- app/services/merge_requests/post_merge_service.rb | 29 - app/services/merge_requests/refresh_service.rb | 13 +- .../merge_requests/retarget_chain_service.rb | 34 + app/services/merge_requests/update_service.rb | 191 +- app/services/notes/build_service.rb | 30 +- app/services/notes/update_service.rb | 16 +- app/services/notification_service.rb | 50 +- app/services/onboarding_progress_service.rb | 18 + .../packages/composer/create_package_service.rb | 2 + app/services/packages/conan/search_service.rb | 2 +- app/services/packages/create_event_service.rb | 14 +- .../packages/create_temporary_package_service.rb | 21 + .../debian/find_or_create_incoming_service.rb | 11 + .../debian/find_or_create_package_service.rb | 33 + .../debian/get_or_create_incoming_service.rb | 11 - .../maven/find_or_create_package_service.rb | 3 +- app/services/packages/maven/metadata.rb | 13 + .../maven/metadata/append_package_file_service.rb | 88 + .../maven/metadata/create_versions_xml_service.rb | 186 + .../packages/maven/metadata/sync_service.rb | 78 + .../packages/nuget/create_package_service.rb | 23 - .../nuget/update_package_from_metadata_service.rb | 3 +- .../rubygems/dependency_resolver_service.rb | 43 + app/services/pages/legacy_storage_lease.rb | 9 - app/services/projects/autocomplete_service.rb | 2 +- app/services/projects/create_service.rb | 2 + app/services/projects/destroy_service.rb | 7 +- ...schedule_bulk_repository_shard_moves_service.rb | 2 +- .../projects/update_pages_configuration_service.rb | 2 + app/services/projects/update_pages_service.rb | 1 + app/services/protected_branches/api_service.rb | 5 + app/services/repositories/changelog_service.rb | 6 +- app/services/security/vulnerability_uuid.rb | 9 + ...schedule_bulk_repository_shard_moves_service.rb | 2 +- app/services/spam/spam_action_service.rb | 8 +- app/services/system_hooks_service.rb | 32 +- app/services/system_note_service.rb | 10 +- .../system_notes/alert_management_service.rb | 15 + app/services/system_notes/issuables_service.rb | 8 +- .../system_notes/merge_requests_service.rb | 4 +- app/services/terraform/remote_state_handler.rb | 2 +- app/services/users/build_service.rb | 3 +- app/services/users/dismiss_user_callout_service.rb | 11 + .../users/refresh_authorized_projects_service.rb | 13 +- app/uploaders/dependency_proxy/file_uploader.rb | 12 + app/validators/gitlab/utils/zoom_url_validator.rb | 22 + .../json_schemas/security_scan_info.json | 28 + .../vulnerability_finding_details.json | 266 +- app/validators/zoom_url_validator.rb | 18 - app/views/abuse_reports/new.html.haml | 2 +- app/views/admin/appearances/_form.html.haml | 2 +- .../admin/appearances/preview_sign_in.html.haml | 2 +- .../admin/application_settings/_abuse.html.haml | 2 +- .../_account_and_limit.html.haml | 2 +- .../admin/application_settings/_ci_cd.html.haml | 2 +- .../application_settings/_diff_limits.html.haml | 2 +- .../admin/application_settings/_eks.html.haml | 6 +- .../admin/application_settings/_email.html.haml | 10 +- .../_external_authorization_service_form.html.haml | 2 +- .../admin/application_settings/_gitaly.html.haml | 2 +- .../admin/application_settings/_gitpod.html.haml | 2 +- .../admin/application_settings/_grafana.html.haml | 2 +- .../application_settings/_help_page.html.haml | 2 +- .../_import_export_limits.html.haml | 2 +- .../_initial_branch_name.html.haml | 2 +- .../application_settings/_ip_limits.html.haml | 2 +- .../application_settings/_issue_limits.html.haml | 2 +- .../admin/application_settings/_kroki.html.haml | 2 +- .../application_settings/_localization.html.haml | 2 +- .../application_settings/_note_limits.html.haml | 2 +- .../admin/application_settings/_outbound.html.haml | 2 +- .../_package_registry.html.haml | 4 +- .../admin/application_settings/_pages.html.haml | 2 +- .../application_settings/_performance.html.haml | 2 +- .../_performance_bar.html.haml | 2 +- .../admin/application_settings/_plantuml.html.haml | 2 +- .../application_settings/_prometheus.html.haml | 2 +- .../_protected_paths.html.haml | 2 +- .../admin/application_settings/_realtime.html.haml | 2 +- .../admin/application_settings/_registry.html.haml | 2 +- .../_repository_check.html.haml | 2 +- .../_repository_mirrors_form.html.haml | 2 +- .../_repository_static_objects.html.haml | 2 +- .../_repository_storage.html.haml | 11 +- .../admin/application_settings/_signin.html.haml | 2 +- .../admin/application_settings/_signup.html.haml | 2 +- .../admin/application_settings/_snowplow.html.haml | 2 +- .../application_settings/_sourcegraph.html.haml | 4 +- .../admin/application_settings/_spam.html.haml | 2 +- .../admin/application_settings/_terminal.html.haml | 2 +- .../admin/application_settings/_terms.html.haml | 2 +- .../_third_party_offers.html.haml | 2 +- .../admin/application_settings/_usage.html.haml | 4 +- .../_visibility_and_access.html.haml | 2 +- .../admin/application_settings/general.html.haml | 12 +- app/views/admin/applications/_form.html.haml | 4 +- app/views/admin/applications/index.html.haml | 2 +- app/views/admin/broadcast_messages/_form.html.haml | 4 +- app/views/admin/dashboard/index.html.haml | 2 +- app/views/admin/deploy_keys/edit.html.haml | 4 +- app/views/admin/deploy_keys/index.html.haml | 2 +- app/views/admin/deploy_keys/new.html.haml | 4 +- app/views/admin/dev_ops_report/_report.html.haml | 4 +- app/views/admin/groups/_form.html.haml | 4 +- app/views/admin/groups/_group.html.haml | 2 +- app/views/admin/groups/index.html.haml | 2 +- app/views/admin/groups/show.html.haml | 3 +- app/views/admin/hooks/edit.html.haml | 2 +- app/views/admin/hooks/index.html.haml | 2 +- .../admin/instance_statistics/index.html.haml | 4 - app/views/admin/labels/_form.html.haml | 4 +- app/views/admin/labels/index.html.haml | 2 +- app/views/admin/projects/_projects.html.haml | 2 +- app/views/admin/projects/index.html.haml | 2 +- app/views/admin/projects/show.html.haml | 1 + app/views/admin/serverless/domains/_form.html.haml | 2 +- app/views/admin/usage_trends/index.html.haml | 4 + app/views/admin/users/_cohorts_table.html.haml | 2 +- app/views/admin/users/_form.html.haml | 8 +- app/views/admin/users/_users.html.haml | 2 +- app/views/admin/users/index.html.haml | 2 +- app/views/ci/variables/_header.html.haml | 2 +- .../clusters/clusters/_advanced_settings.html.haml | 2 +- .../clusters/clusters/_cluster_list.html.haml | 4 +- app/views/clusters/clusters/_empty_state.html.haml | 2 +- .../clusters/_provider_details_form.html.haml | 2 +- app/views/clusters/clusters/gcp/_form.html.haml | 2 +- app/views/clusters/clusters/user/_form.html.haml | 2 +- app/views/dashboard/_groups_head.html.haml | 2 +- app/views/dashboard/_projects_head.html.haml | 2 +- app/views/dashboard/_snippets_head.html.haml | 2 +- app/views/dashboard/activity.html.haml | 2 +- app/views/dashboard/groups/index.html.haml | 2 +- app/views/dashboard/issues.html.haml | 2 +- app/views/dashboard/merge_requests.html.haml | 2 +- app/views/dashboard/projects/_projects.html.haml | 2 +- app/views/dashboard/projects/index.html.haml | 2 +- .../dashboard/projects/shared/_common.html.haml | 2 +- app/views/dashboard/todos/index.html.haml | 2 +- app/views/devise/confirmations/almost_there.haml | 16 +- app/views/devise/confirmations/new.html.haml | 2 +- app/views/devise/sessions/_new_base.html.haml | 2 +- app/views/devise/sessions/_new_crowd.html.haml | 2 +- app/views/devise/sessions/_new_ldap.html.haml | 2 +- app/views/devise/sessions/two_factor.html.haml | 2 +- app/views/devise/shared/_omniauth_box.html.haml | 2 +- app/views/devise/shared/_signup_box.html.haml | 2 +- .../shared/_signup_omniauth_providers_top.haml | 2 +- app/views/devise/unlocks/new.html.haml | 2 +- app/views/doorkeeper/applications/_form.html.haml | 2 +- app/views/doorkeeper/authorizations/new.html.haml | 2 +- app/views/events/event/_push.html.haml | 7 +- app/views/explore/groups/index.html.haml | 2 +- app/views/explore/projects/index.html.haml | 2 +- .../explore/projects/page_out_of_bounds.html.haml | 2 +- app/views/explore/projects/starred.html.haml | 2 +- app/views/explore/projects/trending.html.haml | 2 +- app/views/groups/_home_panel.html.haml | 11 +- ...ort_group_from_another_instance_panel.html.haml | 4 +- .../groups/_import_group_from_file_panel.html.haml | 6 +- app/views/groups/_new_group_fields.html.haml | 2 +- app/views/groups/group_members/index.html.haml | 6 +- app/views/groups/milestones/_form.html.haml | 4 +- app/views/groups/milestones/index.html.haml | 2 +- app/views/groups/projects.html.haml | 2 +- .../groups/registry/repositories/index.html.haml | 1 - app/views/groups/settings/_advanced.html.haml | 2 +- app/views/groups/settings/_general.html.haml | 4 +- .../groups/settings/_pages_settings.html.haml | 2 +- app/views/groups/settings/_permissions.html.haml | 2 +- .../settings/ci_cd/_auto_devops_form.html.haml | 2 +- app/views/groups/settings/ci_cd/_form.html.haml | 2 +- app/views/groups/settings/ci_cd/show.html.haml | 6 +- .../packages_and_registries/index.html.haml | 2 + .../repository/_initial_branch_name.html.haml | 2 +- .../groups/settings/repository/show.html.haml | 2 + app/views/groups/show.html.haml | 5 - .../groups/sidebar/_packages_settings.html.haml | 2 +- app/views/import/bulk_imports/status.html.haml | 3 +- app/views/import/github/new.html.haml | 4 +- .../import/shared/_new_project_form.html.haml | 4 +- .../jira_connect/subscriptions/index.html.haml | 78 +- app/views/layouts/_head.html.haml | 5 +- app/views/layouts/_snowplow.html.haml | 3 + app/views/layouts/jira_connect.html.haml | 6 +- .../layouts/nav/groups_dropdown/_show.html.haml | 6 + .../layouts/nav/projects_dropdown/_show.html.haml | 11 + app/views/layouts/nav/sidebar/_admin.html.haml | 9 +- app/views/layouts/nav/sidebar/_group.html.haml | 6 +- app/views/layouts/nav/sidebar/_profile.html.haml | 2 +- app/views/layouts/nav/sidebar/_project.html.haml | 14 +- app/views/notify/_users_list.html.haml | 10 + .../access_token_about_to_expire_email.html.haml | 8 +- .../access_token_about_to_expire_email.text.erb | 6 +- ...e_in_merge_request_draft_status_email.html.haml | 2 + ...ge_in_merge_request_draft_status_email.text.erb | 1 + .../notify/closed_merge_request_email.text.haml | 1 + .../notify/merge_request_status_email.text.haml | 1 + .../merge_request_unmergeable_email.text.haml | 1 + .../merge_when_pipeline_succeeds_email.html.haml | 18 +- .../merge_when_pipeline_succeeds_email.text.haml | 1 + .../notify/merged_merge_request_email.text.haml | 1 + .../new_mention_in_merge_request_email.text.erb | 3 +- app/views/notify/new_merge_request_email.html.haml | 7 +- app/views/notify/new_merge_request_email.text.erb | 1 + app/views/notify/unknown_sign_in_email.html.haml | 5 +- app/views/peek/_bar.html.haml | 1 + .../notifications/_group_settings.html.haml | 7 +- .../notifications/_project_settings.html.haml | 7 +- app/views/profiles/notifications/show.html.haml | 7 +- app/views/profiles/preferences/show.html.haml | 9 + app/views/profiles/show.html.haml | 6 +- app/views/profiles/two_factor_auths/show.html.haml | 2 +- app/views/projects/_home_panel.html.haml | 19 +- app/views/projects/_invite_members_link.html.haml | 4 - app/views/projects/_invite_members_modal.html.haml | 2 +- .../_merge_request_merge_method_settings.html.haml | 2 +- app/views/projects/_new_project_fields.html.haml | 4 +- app/views/projects/_new_project_push_tip.html.haml | 11 - .../projects/_service_desk_settings.html.haml | 2 +- app/views/projects/artifacts/browse.html.haml | 2 +- app/views/projects/blame/_age_map_legend.html.haml | 12 - app/views/projects/blame/_blame_group.html.haml | 26 - app/views/projects/blame/show.html.haml | 52 +- .../projects/blob/_template_selectors.html.haml | 2 +- app/views/projects/blob/_upload.html.haml | 2 +- app/views/projects/branches/_branch.html.haml | 4 +- app/views/projects/buttons/_clone.html.haml | 10 +- app/views/projects/buttons/_fork.html.haml | 13 +- app/views/projects/buttons/_star.html.haml | 18 +- .../projects/ci/pipeline_editor/show.html.haml | 10 +- app/views/projects/cleanup/_show.html.haml | 4 +- app/views/projects/commit/_pipelines_list.haml | 2 - app/views/projects/commits/_commit.html.haml | 2 +- app/views/projects/commits/show.html.haml | 4 +- app/views/projects/compare/_form.html.haml | 28 - app/views/projects/compare/index.html.haml | 6 +- app/views/projects/compare/show.html.haml | 3 +- .../cycle_analytics/_empty_stage.html.haml | 7 - .../projects/cycle_analytics/_no_access.html.haml | 7 - app/views/projects/cycle_analytics/show.html.haml | 66 +- app/views/projects/default_branch/_show.html.haml | 4 +- app/views/projects/diffs/_diffs.html.haml | 2 +- app/views/projects/diffs/_file.html.haml | 5 +- app/views/projects/edit.html.haml | 14 +- app/views/projects/empty.html.haml | 8 +- app/views/projects/forks/_fork_button.html.haml | 2 +- app/views/projects/forks/new.html.haml | 45 +- app/views/projects/issues/_form.html.haml | 2 +- app/views/projects/issues/_issue.html.haml | 2 +- app/views/projects/issues/_nav_btns.html.haml | 17 +- .../projects/issues/import_csv/_modal.html.haml | 4 +- app/views/projects/issues/index.html.haml | 2 +- app/views/projects/issues/new.html.haml | 4 +- app/views/projects/learn_gitlab/index.html.haml | 1 + .../projects/merge_requests/_nav_btns.html.haml | 12 +- .../conflicts/_commit_stats.html.haml | 11 - .../conflicts/_file_actions.html.haml | 12 - .../conflicts/_submit_form.html.haml | 24 - .../components/_diff_file_editor.html.haml | 10 - .../components/_inline_conflict_lines.html.haml | 14 - .../merge_requests/conflicts/show.html.haml | 32 +- app/views/projects/mirrors/_mirror_repos.html.haml | 4 +- app/views/projects/new.html.haml | 5 +- app/views/projects/no_repo.html.haml | 2 - .../_pipeline_schedule.html.haml | 6 +- app/views/projects/pipelines/charts.html.haml | 2 +- app/views/projects/pipelines/index.html.haml | 2 - app/views/projects/pipelines/new.html.haml | 5 +- app/views/projects/pipelines/show.html.haml | 2 +- .../projects/project_members/_groups.html.haml | 11 - app/views/projects/project_members/_team.html.haml | 22 - app/views/projects/project_members/index.html.haml | 54 +- .../_project_fields_form.html.haml | 2 +- .../shared/_branches_list.html.haml | 6 + .../shared/_create_protected_branch.html.haml | 9 +- .../protected_branches/shared/_index.html.haml | 4 +- .../protected_tags/shared/_index.html.haml | 4 +- .../projects/registry/repositories/index.html.haml | 1 - app/views/projects/runners/_runner.html.haml | 2 +- .../projects/security/configuration/show.html.haml | 2 +- .../prometheus/_configuration_banner.html.haml | 6 +- .../projects/services/prometheus/_help.html.haml | 2 +- app/views/projects/settings/_general.html.haml | 7 +- app/views/projects/settings/ci_cd/_badge.html.haml | 6 +- app/views/projects/settings/ci_cd/_form.html.haml | 2 +- app/views/projects/settings/ci_cd/show.html.haml | 20 +- .../operations/_configuration_banner.html.haml | 6 +- .../settings/operations/_prometheus.html.haml | 2 +- .../projects/settings/operations/show.html.haml | 2 + .../projects/settings/repository/show.html.haml | 2 + app/views/projects/show.html.haml | 3 - app/views/projects/tags/_tag.html.haml | 2 +- app/views/projects/tree/_tree_header.html.haml | 2 +- app/views/projects/update.js.haml | 10 - app/views/shared/_confirm_fork_modal.html.haml | 4 +- app/views/shared/_group_form.html.haml | 2 +- app/views/shared/_mobile_clone_panel.html.haml | 4 +- app/views/shared/_new_commit_form.html.haml | 7 +- .../shared/_new_project_item_select.html.haml | 4 +- app/views/shared/_recaptcha_form.html.haml | 2 +- app/views/shared/access_tokens/_form.html.haml | 6 +- app/views/shared/boards/_show.html.haml | 2 +- app/views/shared/boards/_switcher.html.haml | 2 +- .../shared/boards/components/_sidebar.html.haml | 4 - app/views/shared/deploy_keys/_index.html.haml | 4 +- .../deploy_keys/_project_group_form.html.haml | 2 +- app/views/shared/deploy_tokens/_form.html.haml | 2 +- app/views/shared/deploy_tokens/_index.html.haml | 4 +- .../shared/empty_states/_deploy_keys.html.haml | 2 +- app/views/shared/empty_states/_issues.html.haml | 8 +- app/views/shared/empty_states/_labels.html.haml | 6 +- .../shared/empty_states/_merge_requests.html.haml | 6 +- .../shared/empty_states/_profile_tabs.html.haml | 4 +- app/views/shared/empty_states/_snippets.html.haml | 2 +- app/views/shared/empty_states/_wikis.html.haml | 4 +- .../_apply_template_warning.html.haml | 4 +- .../shared/gitpod/_enable_gitpod_modal.html.haml | 4 +- app/views/shared/groups/_empty_state.html.haml | 2 +- app/views/shared/issuable/_form.html.haml | 8 +- .../shared/issuable/_label_page_create.html.haml | 2 +- app/views/shared/issuable/_search_bar.html.haml | 338 +- app/views/shared/issuable/_sidebar.html.haml | 12 +- .../shared/issuable/_sidebar_assignees.html.haml | 3 + .../shared/issuable/_sidebar_reviewers.html.haml | 15 +- .../shared/issuable/csv_export/_modal.html.haml | 8 +- app/views/shared/labels/_form.html.haml | 6 +- app/views/shared/labels/_nav.html.haml | 4 +- app/views/shared/members/_invite_group.html.haml | 2 +- app/views/shared/members/_invite_member.html.haml | 2 +- app/views/shared/members/_member.html.haml | 2 +- app/views/shared/milestones/_milestone.html.haml | 6 +- app/views/shared/notifications/_button.html.haml | 37 - .../notifications/_custom_notifications.html.haml | 34 - .../shared/notifications/_new_button.html.haml | 35 - .../notifications/_notification_dropdown.html.haml | 12 - app/views/shared/projects/_list.html.haml | 3 +- app/views/shared/projects/_project.html.haml | 9 +- app/views/shared/projects/_search_bar.html.haml | 2 +- .../_update_protected_branch.html.haml | 3 + app/views/shared/wikis/_form.html.haml | 4 +- app/views/shared/wikis/_main_links.html.haml | 2 +- app/views/shared/wikis/edit.html.haml | 3 +- app/views/users/show.html.haml | 14 +- app/workers/all_queues.yml | 116 +- .../count_job_trigger_worker.rb | 18 +- .../instance_statistics/counter_job_worker.rb | 22 +- .../usage_trends/count_job_trigger_worker.rb | 34 + .../analytics/usage_trends/counter_job_worker.rb | 35 + app/workers/archive_trace_worker.rb | 2 - app/workers/build_finished_worker.rb | 3 +- app/workers/chat_notification_worker.rb | 1 - app/workers/concerns/worker_attributes.rb | 8 + app/workers/emails_on_push_worker.rb | 2 +- app/workers/error_tracking_issue_link_worker.rb | 4 +- .../expire_build_instance_artifacts_worker.rb | 1 - app/workers/expire_job_cache_worker.rb | 10 +- app/workers/expire_pipeline_cache_worker.rb | 2 +- .../merge_requests/delete_source_branch_worker.rb | 24 + .../in_product_marketing_emails_worker.rb | 1 + .../namespaces/onboarding_issue_created_worker.rb | 20 + .../namespaces/onboarding_progress_worker.rb | 20 + .../packages/composer/cache_update_worker.rb | 23 + app/workers/packages/maven/metadata/sync_worker.rb | 59 + app/workers/pages_update_configuration_worker.rb | 6 + .../personal_access_tokens/expiring_worker.rb | 19 +- app/workers/post_receive.rb | 1 + ..._schedule_bulk_repository_shard_moves_worker.rb | 18 +- .../project_update_repository_storage_worker.rb | 32 +- .../schedule_bulk_repository_shard_moves_worker.rb | 15 + .../projects/update_repository_storage_worker.rb | 25 + app/workers/releases/create_evidence_worker.rb | 1 - ..._schedule_bulk_repository_shard_moves_worker.rb | 17 +- .../snippet_update_repository_storage_worker.rb | 32 +- .../schedule_bulk_repository_shard_moves_worker.rb | 15 + .../snippets/update_repository_storage_worker.rb | 25 + app/workers/stuck_ci_jobs_worker.rb | 2 +- babel.config.js | 2 - ...er-for-updating-the-maven-metadata-xml-file.yml | 5 + ...-improve-autofill-suggestions-for-usernames.yml | 5 + .../15332-add-draft-status-change-email.yml | 5 + ...ify-when-merge-request-draft-status-changes.yml | 5 + .../18792-add-container_registry_access_level.yml | 5 + ...rface-encourages-accidentally-closing-the-r.yml | 5 + .../205484-01-project-settings-headers-cicd.yml | 5 + ...-03-project-settings-headers-cicd-variables.yml | 5 + ...roject-settings-headers-repo-default-branch.yml | 5 + ...s-headers-repository-mirroring-repositories.yml | 5 + ...tings-headers-repository-protected-branches.yml | 5 + ...-settings-headers-repository-protected-tags.yml | 5 + ...project-settings-headers-repository-cleanup.yml | 5 + ...t-settings-headers-repository-deploy-tokens.yml | 5 + ...ect-settings-headers-repository-deploy-keys.yml | 5 + ...stall-commands-to-the-package-details-page-.yml | 5 + .../209061-remove-dashboard-pipeline-status-ff.yml | 5 + ...solve-discussion-opening-an-issue-when-issu.yml | 5 + ...-existing-vulnerabilities-occurrences-uuids.yml | 5 + ...loading-indicator-to-update-username-button.yml | 5 + .../218964-downstream-pipeline-caching.yml | 5 + ...-skip_orphaned_pool_repositories_on_restore.yml | 5 + .../225309-add-invite_email-quick-action.yml | 5 + ...er-with-gitlab-ui-popover-in-merge-conflict.yml | 5 + .../unreleased/228733-alert-issue-status.yml | 5 + .../unreleased/22901-add-predefined-variable.yml | 5 + ...graphql-mutation-to-remove-issue-from-board.yml | 5 + ...-fj-add-columns-to-track-group-wiki-storage.yml | 5 + .../231064-update-settings-buttons-to-pajamas.yml | 5 + changelogs/unreleased/231126-yo-gitlab-ui.yml | 6 + ...clearer-what-to-do-after-adding-a-namespace.yml | 5 + .../241058-mg-update-reply-placeholder.yml | 5 + ...ort-options-to-projects-and-groups-dropdown.yml | 5 + .../unreleased/246959-msj-opened-created-ui.yml | 5 + .../unreleased/247636-fix-logging-search-scope.yml | 5 + ...preference-to-turn-off-keystroke-formatting.yml | 5 + ...ser-2fa-status-should-not-be-publicly-shown.yml | 5 + ...-in-app-views-projects-issues-export_csv-_b.yml | 5 + .../255913-webex-teams-pipeline-notifications.yml | 5 + .../unreleased/259840-composer-v2-metadata-url.yml | 5 + ...262859-restrict-oncall-rotation-to-interval.yml | 5 + ...d-deleted-at-to-oncall-rotation-participant.yml | 5 + ...sive_approach_for_all_projects_feature_flag.yml | 5 + .../unreleased/267511-approval-gate-rule-type.yml | 5 + ...from_emails_on_push_recipients_when_sending.yml | 5 + .../273286-update-project-view-buttons.yml | 5 + ...audit-and-update-buttons-on-sessionscontrol.yml | 6 + ...audit-and-update-buttons-on-groupscontrolle.yml | 6 + ...audit-and-update-buttons-on-userscontroller.yml | 5 + ...audit-and-update-buttons-on-projects-jobsco.yml | 5 + ...ad-projects-has_external_issue_tracker-data.yml | 5 + .../275169-remove-service-desk-issue-prefix.yml | 5 + ...essages-to-security-widget-summary-diverged.yml | 6 + ...7327-fix-background-migration-argument-type.yml | 5 + ...-or-remove-single-file-mode-user-preference.yml | 5 + ...se-info-style-for-merged-instead-of-primary.yml | 5 + ...-rename-instance-statistics-to-usage-trends.yml | 6 + .../285467-package-registry-graphql-api.yml | 5 + ...6-wiki-edit-page-title-s-styling-mismatch-2.yml | 5 + changelogs/unreleased/28902_extend_group_api.yml | 5 + ...rs-setting-does-not-reflect-actual-behavior.yml | 5 + .../290288-composer-cache-build-pages-task.yml | 5 + .../unreleased/290288-composer-cache-hooks.yml | 5 + changelogs/unreleased/292128-fix-icon-spacing.yml | 5 + .../292239-schedule-duplicate-findings-removal.yml | 5 + changelogs/unreleased/292498-webid-extension.yml | 5 + ...2-remove-fetch_mirror_check_tags_changed-ff.yml | 5 + .../292824-track-assignee-reviewer-changes.yml | 5 + .../292824-track-label-milestone-change.yml | 5 + .../unreleased/292824-track-mr-lock-changes.yml | 5 + .../unreleased/292824-track-mr-time-changes.yml | 5 + ...55-de-emphasize-nested-reports-in-mr-widget.yml | 5 + changelogs/unreleased/293921-wrap-iterations.yml | 5 + .../294436-create-project-required-fields.yml | 5 + .../294443-move-wiki-helper-error-to-vue.yml | 5 + changelogs/unreleased/294482-conan-anonymous.yml | 5 + changelogs/unreleased/295665-fix-sidekiq-check.yml | 5 + .../296125-show-timeline-for-devops-score.yml | 5 + ...gistry-ui-header-copy-to-remove-expiration-.yml | 5 + ...20-linux-distribution-details-in-usage-ping.yml | 5 + ...240-enable-skip_dag_manual_and_delayed_jobs.yml | 5 + .../297404-remove-suggestions-custom-commit-ff.yml | 5 + .../297428-code-owner-optional-section.yml | 5 + ...tting-mr-diff-discussions-often-returns-500.yml | 5 + ...ct-authorizations-refresh-can-be-limited-to.yml | 6 + ...99884_remove_diff_highlighting_feature_flag.yml | 5 + ...xperiment-cleanup-customize_homepage-banner.yml | 5 + ...d-data-feature-flag-pages_serve_from_migrat.yml | 5 + changelogs/unreleased/30010-graphql-doc.yml | 5 + .../300150-cache-search-tab-counters.yml | 5 + .../300302-db-constraint-terraform-name.yml | 5 + .../unreleased/300417-agent-token-description.yml | 5 + changelogs/unreleased/300435-add-label.yml | 5 + changelogs/unreleased/300443-add-label.yml | 5 + ...ntext-with-requirements-events-from-the-fro.yml | 5 + ...00479-change-prefilled-mr-title-description.yml | 5 + .../300617-aqualls-prometheus-settings.yml | 5 + ...tiality-sidebar-component-to-use-vue-apollo.yml | 5 + ...g-token-in-personal-access-token-expiration.yml | 5 + ...s-information-to-closed-merge-request-email.yml | 5 + ...nformation-to-merge-request-email-notificat.yml | 5 + ...s-information-to-merge_request_status_email.yml | 5 + ...nformation-to-merge_request_unmergeable_ema.yml | 5 + ...s-information-to-merged-merge-request-email.yml | 5 + ...nformation-to-new_mention_in_merge_request_.yml | 5 + ...ifications-don-t-include-reviewer-informati.yml | 5 + ...00787-clean-up-block-class-for-jobs-feature.yml | 5 + ...827-alerts-integrations-UX-cleanup-2nd-part.yml | 5 + .../300827-split-alert-integrations-form.yml | 5 + .../300853-convert-compare-show-to-vue.yml | 5 + .../300865-default-confidentiality-of-replies.yml | 5 + .../301018-cablett-collapsed-epic-board-list.yml | 5 + .../unreleased/301032-license-creation-via-api.yml | 5 + ...he-geo-oauth-application-trusted-by-default.yml | 5 + ...-item-ui-make-action-buttons-in-list-items-.yml | 5 + ...tainer-page-says-image-repository-not-found.yml | 5 + .../unreleased/320949-ci-help-path-remove-prop.yml | 5 + ...027-enable-ci_trigger_payload_into_pipeline.yml | 5 + .../321054-enable-quick-actions-usage-data.yml | 5 + ...ce-related-to-package-lists-and-the-search-.yml | 5 + ...te_members_version_a-add-invite-members-to-.yml | 5 + .../321283-update-kubernetes-version-supported.yml | 5 + ...ad-only-metadata-for-markdown-video-include.yml | 5 + ...e-flag-rollout-of-vue_notification_dropdown.yml | 5 + ...th-lowercase-letters-in-package-registry-ui.yml | 5 + ...-view-render-version-dropdowns-above-navbar.yml | 5 + .../unreleased/321514-fix-clipboard-buttons.yml | 5 + ...ounts-in-project-list-where-issues-disabled.yml | 5 + .../unreleased/321659-handle-discord-errors.yml | 5 + changelogs/unreleased/321667-follow-first.yml | 5 + ...7-enable-pages-zip-file-protocol-by-default.yml | 5 + ...idx_on_issues_where_service_desk_reply_to_i.yml | 5 + .../321752-cablett-delete-epic-warning.yml | 5 + changelogs/unreleased/321788-fix-n-plus-1s.yml | 5 + .../unreleased/321790-load-refs-on-demand.yml | 5 + .../321827-fix-n-1-in-runner-validations.yml | 5 + ...834-fj-remove-nil-values-from-snippet-blobs.yml | 5 + ...321845-performance-pipeline-table-dropdowns.yml | 5 + .../321862_fix_long_commit_messages_error.yml | 5 + ...ce_info_column_for_the_security_scans_table.yml | 5 + ...mode-app-header-on-profile-preferences-page.yml | 5 + ...9-fix-error-when-rendering-project-pipeline.yml | 5 + ...npm-instance-level-api-with-scoped-packages.yml | 5 + ...nd-report-views-missing-left-sidebar-status.yml | 5 + ...emove-api_v3_repos_events_optimization-flag.yml | 5 + ...82-fix-invite-member-modal-dropdown-styling.yml | 5 + ...thorizations-refresh-jobs-to-distinct-users.yml | 6 + ...99-harden-addition-for-template-repositoriu.yml | 5 + ...99-sql-definition-for-template_repositories.yml | 5 + ...-dictionary-view-to-not-repeat-same-columns.yml | 5 + .../322125-add-prometheus-histo-on-retries.yml | 5 + .../322125-log-optimistic-locking-retries.yml | 5 + changelogs/unreleased/322128-token-used-field.yml | 5 + changelogs/unreleased/322424-btn-confirm.yml | 5 + ...ip_client_authentication_for_password_grant.yml | 5 + ...626-use-grouped-list-for-test-report-widget.yml | 5 + ...n-variant-on-integration-configuration-view.yml | 5 + .../322724-fix-compare-page-dropdown-loading.yml | 5 + .../unreleased/322745-add-missing-token-names.yml | 5 + .../322770-change-security-mr-widget-icon.yml | 5 + ...ease-contrast-of-solarized-light-in-web-ide.yml | 5 + .../unreleased/322901-fix-pagerduty-webhook.yml | 5 + ...on-in-assigning-team-members-on-boards-view.yml | 5 + ...y-field-in-custom-notification-events-modal.yml | 5 + .../323059-batch-load-findings-by-uuid.yml | 5 + ...-project-access-token-value-with-create-api.yml | 5 + ...atabase_transaction_seconds_sum-for-sidekiq.yml | 5 + ...75-database-timeout-in-pages-migration-task.yml | 5 + ...3376-security-configuration-ui-strings-ssot.yml | 5 + .../323474-update-incident-setting-copy.yml | 5 + ...3555-disable-gc-compacting-via-monkey-patch.yml | 5 + .../323674-initiate-web-hook-logs-partitioning.yml | 5 + .../323848-fix-diff-comment-hidden-menu.yml | 5 + changelogs/unreleased/33283-remove-svg.yml | 5 + ...age-naming-convention-for-project-level-api.yml | 5 + ...st-select-boxes-if-only-mouseup-outside-box.yml | 5 + .../35579-remove-graphql_logging-feature-flag.yml | 5 + .../unreleased/51727-allow-job-identiy-self.yml | 5 + .../55412-typo-in-pipeline-status-email.yml | 5 + .../unreleased/6utzeit-de-master-patch-15431.yml | 5 + changelogs/unreleased/ab-index-rename.yml | 5 + .../unreleased/add-allow-force-push-option.yml | 5 + .../add-client-id-application-context-metadata.yml | 5 + ...roduct-marketing-emails-application-setting.yml | 5 + .../add-environment-job-pipeline-hooks.yml | 5 + changelogs/unreleased/add-graphql-etag-caching.yml | 5 + changelogs/unreleased/add-kas-api-url-config.yml | 5 + ...traint-to-gitlab-subscriptions-namespace-id.yml | 5 + ...wed-user-activity-as-dashboard-user-choices.yml | 5 + .../add-pages-cache-settings-to-docs.yml | 5 + .../add-rails-application-config-hosts.yml | 5 + changelogs/unreleased/add-space-download-icon.yml | 5 + changelogs/unreleased/add_request_cve_issue.yml | 5 + ...and_rolebinding_for_cilium_network_policies.yml | 5 + changelogs/unreleased/admin-dashboard-typo.yml | 5 + ...aine-collapse-deployments-in-merge-requests.yml | 5 + changelogs/unreleased/ajk-graphql-accept-mr.yml | 5 + .../unreleased/ajk-reviewer-widget-approved.yml | 5 + .../unreleased/alert-incident-url-follow.yml | 5 + ...oley-remove_shared_group_membership_auth_ff.yml | 5 + changelogs/unreleased/align-mr-conflict-center.yml | 5 + .../auto-devops-default-branch-deploy.yml | 5 + .../auto-scroll-pipeline-editor-on-commit.yml | 5 + changelogs/unreleased/blame-performance.yml | 5 + changelogs/unreleased/board_args_consolidation.yml | 5 + .../unreleased/btn-confirm-abuse-reports.yml | 5 + .../unreleased/btn-confirm-admin-appearances.yml | 5 + .../btn-confirm-admin-application-settings.yml | 5 + .../unreleased/btn-confirm-admin-applications.yml | 5 + .../btn-confirm-admin-broadcast-messages.yml | 5 + .../unreleased/btn-confirm-admin-deploy-keys.yml | 5 + changelogs/unreleased/btn-confirm-admin-groups.yml | 5 + changelogs/unreleased/btn-confirm-admin-hooks.yml | 5 + changelogs/unreleased/btn-confirm-admin-labels.yml | 5 + .../unreleased/btn-confirm-admin-projects.yml | 5 + .../unreleased/btn-confirm-admin-serverless.yml | 5 + changelogs/unreleased/btn-confirm-admin-users.yml | 5 + changelogs/unreleased/btn-confirm-auth.yml | 5 + changelogs/unreleased/btn-confirm-clusters.yml | 5 + changelogs/unreleased/btn-confirm-doorkeeper.yml | 5 + changelogs/unreleased/btn-confirm-empty-states.yml | 5 + changelogs/unreleased/btn-confirm-envs.yml | 5 + .../unreleased/btn-confirm-group-milestones.yml | 5 + .../unreleased/btn-confirm-group-settings.yml | 5 + changelogs/unreleased/btn-confirm-group.yml | 5 + changelogs/unreleased/btn-confirm-home.yml | 5 + changelogs/unreleased/btn-confirm-js-2fa.yml | 5 + changelogs/unreleased/btn-confirm-js-badges.yml | 5 + .../btn-confirm-shared-access-tokens.yml | 5 + .../unreleased/btn-confirm-shared-deploy-keys.yml | 5 + .../btn-confirm-shared-deploy-tokens.yml | 5 + .../unreleased/btn-confirm-shared-gitpod.yml | 5 + .../unreleased/btn-confirm-shared-groups.yml | 5 + .../unreleased/btn-confirm-shared-members.yml | 5 + changelogs/unreleased/btn-confirm-shared-wikis.yml | 5 + changelogs/unreleased/btn-confirm-shared.yml | 5 + changelogs/unreleased/btn-confirm-subs-banner.yml | 5 + changelogs/unreleased/btn-default-admin-edit.yml | 5 + .../btn-default-admin-general-settings.yml | 5 + changelogs/unreleased/btn-default-mr-cancel.yml | 5 + changelogs/unreleased/btn-icon-commit-action.yml | 5 + changelogs/unreleased/btn-icon-schedules.yml | 5 + .../bugfix-linked-issue-autocomplete.yml | 5 + changelogs/unreleased/bump-reliable-fetch.yml | 5 + .../unreleased/bump_auto_deploy_image_version.yml | 4 + .../bvl-fix-create-release-worker-is-not-cron.yml | 5 + .../cablett-restore-database-structure.yml | 5 + .../unreleased/changelog-api-to-optional.yml | 5 + .../changelog-commits-without-description.yml | 5 + .../changelog-ignore-reverted-commits.yml | 5 + .../unreleased/changelog-include-merge-commits.yml | 5 + .../unreleased/chore-bump-swagger-ui-dist.yml | 5 + .../unreleased/chore-unknown-sign-in-info-text.yml | 5 + .../ci_register_job_service_one_by_one.yml | 5 + changelogs/unreleased/ci_temporary_lock.yml | 5 + ...eesMigrationProgressCheck-background-migrat.yml | 5 + .../cmiskell-upgrade-sidekiq-reliable-fetch.yml | 6 + .../unreleased/cngo-convert-tab-to-gl-tab.yml | 5 + ...onitoring-environment-picker-to-gl-dropdown.yml | 5 + .../cngo-fix-autocomplete-selecting-loading.yml | 5 + .../cngo-rename-comment-form-textarea-label.yml | 5 + changelogs/unreleased/cq-template-0-85-23.yml | 5 + .../cwoolley-gitlab-master-patch-20932.yml | 5 + .../unreleased/dblessing_bypass_2fa_setup_help.yml | 5 + .../dblessing_migrate_delayed_project_removal.yml | 5 + ...ult-enabled-api_always_use_application_json.yml | 5 + changelogs/unreleased/denys-fj-ide-routes.yml | 5 + .../unreleased/design-management-minor-fixe.yml | 5 + .../unreleased/dictionary-md-generated-links.yml | 5 + ...document-propagate-correlation-id-for-pages.yml | 5 + changelogs/unreleased/dora-metrics-modeling.yml | 5 + .../unreleased/dry-up-notes-build-service-spec.yml | 5 + .../unreleased/dz-fix-fork-thumbnail-height.yml | 5 + .../unreleased/ellipsis-expand-state-commits.yml | 5 + .../unreleased/emilyring-clustertoken-name.yml | 5 + .../unreleased/enable-trace_memory_allocations.yml | 5 + .../environment-scoped-group-variables.yml | 5 + changelogs/unreleased/environment-tier.yml | 5 + changelogs/unreleased/epic_count_query.yml | 6 + changelogs/unreleased/expand-stopped-env.yml | 5 + .../unreleased/expose-failure-reasons-features.yml | 5 + .../expose_project_container_registry_url.yml | 5 + ...plication-settings-package-file-size-limits.yml | 5 + .../feat-auto-enable-admin-mode-rake-runtime.yml | 5 + changelogs/unreleased/feature-230726-repo-tabs.yml | 5 + .../feature-gb-improve-builds-queueing.yml | 5 + changelogs/unreleased/fix-edited-timestamp.yml | 5 + .../fix-include-external-users-in-user-search.yml | 5 + changelogs/unreleased/fix-iteration-migr.yml | 5 + .../fix-locked-job-artifacts-expired-api.yml | 5 + .../fix-overflowing-width-at-mention-selector.yml | 5 + .../fix-project-import-visibility-error.yml | 5 + ...ix-relative-position-on-move-and-copy-issue.yml | 5 + changelogs/unreleased/fix-web-url-jira.yml | 5 + .../unreleased/fix_repo_storage_weights_admin.yml | 5 + ...fp-reduce-queries-when-ticking-runner-queue.yml | 5 + ...-reduce-runners-queries-when-picking-builds.yml | 5 + ...eorgekoltsov-bulk-import-migrate-milestones.yml | 5 + ...gekoltsov-fix-project-export-web-rate-limit.yml | 5 + changelogs/unreleased/gl-badge-runners.yml | 5 + changelogs/unreleased/gl-button-apply-template.yml | 5 + changelogs/unreleased/gl-button-audit-events.yml | 5 + changelogs/unreleased/gl-button-email-request.yml | 5 + changelogs/unreleased/gl-button-gh-import.yml | 5 + changelogs/unreleased/gl-button-labels.yml | 5 + changelogs/unreleased/gl-button-reaction.yml | 5 + .../unreleased/gl-button-repository-settings.yml | 5 + changelogs/unreleased/gl-button-time-tracking.yml | 5 + ...ouraria-notify-email-html-link-to-mr-on-top.yml | 5 + .../id-move-delete-branch-to-workers.yml | 5 + .../unreleased/ignore-unstable-changelog-tags.yml | 5 + .../unreleased/improve-retarget-merge-requests.yml | 5 + .../improve_vuln_tracking-backend_store_only.yml | 5 + .../issue_227753-remove_backup_labels_table.yml | 5 + .../unreleased/iterations-dates-validations.yml | 5 + changelogs/unreleased/iterations-in-the-past.yml | 5 + .../unreleased/jira-connect-app-style-cleanup.yml | 5 + ...vl-add-duration-finished-at-fields-job-type.yml | 5 + .../john_long-composer-package-relative-url.yml | 5 + ...better-destination-validation-error-message.yml | 5 + .../kassio-bulkimports-filter-group-labels.yml | 5 + ...o-bulkimports-import-group-label-timestamps.yml | 5 + ...sio-githubimporter-avoid-approval-exception.yml | 5 + .../kassio-githubimporter-import-merged-at.yml | 5 + ...sio-githubimporter-validate-repository-size.yml | 5 + ...o-graphql-expose-label-create-at-updated-at.yml | 5 + .../kerrizor-remove-oprhaned-feature-flag-yml.yml | 5 + .../unreleased/kp-sort-milestone-autocomplete.yml | 5 + ...-version-bump-gem-for-argument-deprecations.yml | 7 + .../ld-handle-gids-for-unknown-objects.yml | 5 + .../leipert-remove-chrome-84-workaround.yml | 5 + .../lm-add-short-sha-and-path-to-pipeline.yml | 5 + .../unreleased/lm-multiple-cache-per-file.yml | 5 + ...ckstage-reschedule-artifact-expiry-backfill.yml | 5 + ...ce-ci-minute-namespace-notification-db-load.yml | 5 + .../mc-bug-remove-reliance-on-branch-context.yml | 5 + .../mc-feature-add-user-callout-graphql.yml | 5 + .../mf-test-report-parsing-errors-frontend.yml | 5 + .../unreleased/mg-fix-firefox-textarea-styling.yml | 5 + .../mo-enable-cq-comparision-backend.yml | 5 + .../mo-filter-group-projects-by-ids-graphql.yml | 5 + .../unreleased/mo-refactor-coverage-finder.yml | 5 + .../unreleased/move-cancel-btn-integrations.yml | 5 + .../move_ci_config_path_project_variable.yml | 5 + .../mvanremmerden-master-patch-70791.yml | 5 + changelogs/unreleased/mwps-settings.yml | 5 + .../unreleased/nakayoshi-default-enabled.yml | 5 + ...iend-add-release-asset-link-create-mutation.yml | 5 + ...release-creation-on-existing-tag-through-ui.yml | 5 + .../nfriend-fix-gl-dropdown-double-scrollbars.yml | 5 + ...end-fix-milestone-combobox-double-scrollbar.yml | 5 + .../nfriend-fix-ref-selector-double-dropdown.yml | 5 + .../nfriend-ref-selector-dropdown-cleanup.yml | 5 + .../nfriend-turn-off-ref-selector-autocomplete.yml | 5 + ...r-record-issue-creation-onboarding-progress.yml | 5 + ...ina-fix-design-management-reply-placeholder.yml | 5 + ...tore-bare-class-name-for-batched-migrations.yml | 6 + .../pb-track-background-job-executions.yml | 5 + ...emove-vue_project_members_list-feature-flag.yml | 5 + .../ph-282476-fixGraphQLDiffComments.yml | 5 + .../ph-284212-moveCodeownersTipToVueApp.yml | 5 + .../ph-defaultEnableWidgetGraphqlFlag.yml | 5 + ...unningham-add-branch-to-dast-profile-322526.yml | 5 + .../unreleased/pipeline-editor-branch-param.yml | 5 + .../unreleased/pipeline-editor-empty-state.yml | 5 + .../pks-checks-skip-integrity-lfs-deletions.yml | 5 + .../preload-environments-for-ci-cd-variables.yml | 5 + changelogs/unreleased/preload-runner-tags.yml | 5 + .../ps-fix-heading-style-email-diffs.yml | 5 + changelogs/unreleased/psi-boards-scrollbar.yml | 5 + ...uyen0711-825-limit-the-size-of-sidekiq-jobs.yml | 5 + ...sentry-s-contexts-and-users-into-applicatio.yml | 5 + ...711-remove-latest-report-results-preloading.yml | 5 + .../reenable-sentry-pipeline-graph-only.yml | 5 + .../refactor-use-policies-framework-for-admin.yml | 5 + .../unreleased/relax-changelog-tag-restriction.yml | 5 + ...ve-bootstrap-dropdowns-from-note-components.yml | 6 + ...ove-ci_jwt_include_environment-feature-flag.yml | 5 + .../unreleased/remove-commit-paginate-ff.yml | 5 + .../unreleased/remove-deprecated-columns.yml | 5 + changelogs/unreleased/remove-index-add-index.yml | 5 + changelogs/unreleased/remove-margin-status.yml | 5 + ...emove-merge-request-count-with-merged-at-ff.yml | 5 + .../remove-new_jira_connect_ui-feature-flag.yml | 5 + ...remove-pipeline-editor-section-feature-flag.yml | 5 + .../remove-pkg-event-redis-feature-flag.yml | 5 + .../unreleased/remove-scroll-merge-instruction.yml | 5 + ...remove-transactionless-destroy-feature-flag.yml | 5 + .../unreleased/rename-vuln-fingerprint-indexes.yml | 5 + .../revert_sort_order_explore_projects.yml | 5 + .../unreleased/runners-api-context-metadata.yml | 5 + changelogs/unreleased/sanddown.yml | 5 + .../unreleased/security-jv-workhorse-router.yml | 5 + ...ity-workhorse-validate-path-logging-removal.yml | 5 + .../unreleased/selected-state-commit-view.yml | 5 + .../unreleased/sh-add-path-lock-confirmation.yml | 5 + changelogs/unreleased/sh-azure-ad-v2-omniauth.yml | 5 + changelogs/unreleased/sh-azure-blob-utf8-fix.yml | 5 + .../sh-improve-api-marginalia-comments.yml | 5 + .../sh-log-large-multipart-files-com.yml | 5 + .../unreleased/sh-update-batchloader-2-0-0.yml | 5 + changelogs/unreleased/sh-update-fog-aws-3-9.yml | 5 + changelogs/unreleased/sh-use-gitlab-fog-google.yml | 5 + changelogs/unreleased/show-nested-env.yml | 5 + changelogs/unreleased/sidebar-user-avatar.yml | 5 + .../unreleased/simplify-notifications-dropdown.yml | 5 + changelogs/unreleased/slack_service_usage_data.yml | 5 + .../unreleased/ssarka-master-patch-39936.yml | 5 + ...der-of-buttons-configure-feature-flag-modal.yml | 5 + .../unreleased/sy-add-end-date-to-rotations.yml | 5 + .../sy-system-note-for-resolving-alert.yml | 5 + changelogs/unreleased/sy-update-alert-title.yml | 5 + .../sy-update-operations-visibility-text.yml | 6 + .../unreleased/tc-add-custom-emoji-creator.yml | 5 + ...t_update_merge_request_worker_performance_2.yml | 5 + ...t_update_merge_request_worker_performance_3.yml | 5 + ...-defect-file-viewed-reviews-convert-to-vuex.yml | 5 + .../tor-defect-missing-popovers-from-async-DOM.yml | 6 + .../unreleased/tor-defect-mr-cog-checkboxes.yml | 5 + ...efect-network-error-message-show-api-errors.yml | 5 + ...-of-place-bold-label-in-diffs-dropdown-menu.yml | 5 + changelogs/unreleased/trial-button-confirm.yml | 5 + .../update-ci-template-default-branch-1.yml | 5 + .../update-ci-template-default-branch-3.yml | 5 + changelogs/unreleased/update-cicd-naming.yml | 5 + .../update-gitlab-runner-helm-chart-to-0-26-0.yml | 5 + changelogs/unreleased/update-mr-page-buttons.yml | 5 + .../update-terraform-states-user-foreign-key.yml | 5 + changelogs/unreleased/update-validate-url-gem.yml | 5 + changelogs/unreleased/update_latex_template.yml | 5 + .../usage-ping-dictionary-whitespace.yml | 5 + .../user-access-role-badge-component.yml | 5 + ...er-auth-bmiller-return-early-if-user-is-nil.yml | 5 + ...uusijani-gitlab-uusijani-master-patch-65195.yml | 5 + .../vs-break-long-code-line-in-markdown.yml | 5 + .../vs-enable-gitlab-stylelint-config.yml | 5 + .../vs-wrap-code-lines-blocks-properly.yml | 5 + changelogs/unreleased/x509-cert-loading.yml | 5 + .../xanf-allow-top-level-bulk-imports.yml | 5 + .../unreleased/yo-btn-confirm-shared-issuable.yml | 5 + .../unreleased/yo-btn-confirm-shared-labels.yml | 5 + config/application.rb | 5 +- config/feature_categories.yml | 7 +- .../allow_force_push_to_protected_branches.yml | 8 + .../api_always_use_application_json.yml | 2 +- ...ication_settings_tokens_optional_encryption.yml | 6 +- .../development/attachment_with_filename.yml | 8 + .../development/auto_devops_banner_disabled.yml | 2 +- .../development/avatar_cache_for_email.yml | 8 + .../development/boards_filtered_search.yml | 8 + config/feature_flags/development/chatops.yml | 6 +- .../development/ci_fix_commit_status_retried.yml | 8 + ...ci_fix_pipeline_status_for_dag_needs_manual.yml | 8 + .../development/ci_jwt_include_environment.yml | 8 - .../development/ci_mini_pipeline_gl_dropdown.yml | 8 - .../development/ci_pipeline_editor_page.yml | 8 - .../development/ci_preload_runner_tags.yml | 8 + ...ci_reduce_queries_when_ticking_runner_queue.yml | 8 + .../ci_register_job_service_one_by_one.yml | 8 + .../development/ci_register_job_temporary_lock.yml | 8 + ...remove_update_retried_from_process_pipeline.yml | 8 + .../development/ci_rules_variables.yml | 8 - .../ci_runners_short_circuit_assignable_for.yml | 8 + .../ci_trigger_payload_into_pipeline.yml | 2 +- .../clear_status_with_quick_options.yml | 8 - .../development/codequality_backend_comparison.yml | 2 +- .../development/collect_package_events_redis.yml | 7 - .../development/compare_repo_dropdown.yml | 8 + .../development/coverage_data_new_finder.yml | 8 - .../development/customize_homepage.yml | 8 + .../development/dashboard_pipeline_status.yml | 8 - .../design_management_allow_dangerous_images.yml | 2 +- .../development/dora_daily_metrics.yml | 8 + .../feature_flags/development/environment_tier.yml | 8 + .../development/fork_project_form.yml | 8 + .../development/gitlab_ci_builds_queue_limit.yml | 8 + .../gitlab_ci_builds_queuing_metrics.yml | 8 + .../feature_flags/development/graphql_logging.yml | 8 - .../development/group_devops_adoption.yml | 8 + .../groups_tokens_optional_encryption.yml | 6 +- .../development/improved_emoji_picker.yml | 8 + .../improved_merge_diff_highlighting.yml | 8 - .../development/inherited_issuable_templates.yml | 8 + .../development/instance_statistics.yml | 8 - .../development/introduce_marker_ranges.yml | 8 + .../development/issue_email_participants.yml | 8 + .../development/json_wrapper_legacy_mode.yml | 6 +- .../development/merge_request_widget_graphql.yml | 2 +- .../migrate_delayed_project_removal.yml | 8 + .../development/multiple_cache_per_job.yml | 8 + .../multiple_http_integrations_custom_mapping.yml | 8 - .../development/new_jira_connect_ui.yml | 8 - .../development/new_pipelines_table.yml | 8 + .../development/new_route_ci_minutes_purchase.yml | 8 + .../development/notes_create_service_tracking.yml | 6 +- ...d_merge_request_count_with_merged_at_filter.yml | 8 - .../development/or_issuable_queries.yml | 8 + .../development/pages_serve_from_deployments.yml | 8 - .../development/pages_serve_from_migrated_zip.yml | 2 +- .../pages_serve_with_zip_file_protocol.yml | 2 +- .../development/pages_use_legacy_storage_lease.yml | 8 - .../development/paginate_commit_view.yml | 8 - .../personal_access_tokens_scoped_to_projects.yml | 8 + .../pipeline_editor_empty_state_action.yml | 8 + .../pipeline_status_for_pipeline_editor.yml | 8 + .../pipelines_security_report_summary.yml | 8 - ...duct_intelligence_metrics_names_suggestions.yml | 8 + .../development/project_statistics_sync.yml | 6 +- .../project_transactionless_destroy.yml | 8 - .../projects_tokens_optional_encryption.yml | 6 +- .../query_deploymenys_via_finished_at_in_vsa.yml | 8 - .../recursive_approach_for_all_projects.yml | 8 - .../recursive_namespace_lookup_as_inner_join.yml | 8 + .../development/remove_comment_close_reopen.yml | 8 - .../development/retarget_merge_requests.yml | 2 +- .../development/saas_add_seats_button.yml | 8 - .../feature_flags/development/saml_group_links.yml | 8 - .../development/scoped_group_variables.yml | 8 + .../security_on_demand_scans_site_validation.yml | 8 - ...curity_orchestration_policies_configuration.yml | 8 + .../development/shared_group_membership_auth.yml | 8 - .../skip_dag_manual_and_delayed_jobs.yml | 2 +- .../development/suggestions_custom_commit.yml | 8 - .../development/trace_memory_allocations.yml | 2 +- .../usage_data_code_review_aggregation.yml | 8 + .../development/usage_data_design_action.yml | 2 +- .../development/usage_data_i_analytics_cohorts.yml | 8 + ...e_data_i_code_review_user_assignees_changed.yml | 8 + ...sage_data_i_code_review_user_labels_changed.yml | 8 + ...e_data_i_code_review_user_milestone_changed.yml | 8 + ...ata_i_code_review_user_mr_discussion_locked.yml | 8 + ...a_i_code_review_user_mr_discussion_unlocked.yml | 8 + ...e_data_i_code_review_user_reviewers_changed.yml | 8 + ...ta_i_code_review_user_time_estimate_changed.yml | 8 + ..._data_i_code_review_user_time_spent_changed.yml | 8 + .../usage_data_i_source_code_code_intelligence.yml | 8 - ...horing_unique_users_pushing_mr_ciconfigfile.yml | 8 + .../usage_data_track_ecosystem_slack_service.yml | 8 + .../development/usage_data_track_quickactions.yml | 4 +- .../development/validate_namespace_parent_type.yml | 8 + .../development/vue_notification_dropdown.yml | 8 - .../development/vue_project_members_list.yml | 8 - ...ci_syntax_templates_b_experiment_percentage.yml | 8 + .../ci_syntax_templates_experiment_percentage.yml | 8 - .../customize_homepage_experiment_percentage.yml | 8 - .../feature_flags/experiment/empty_repo_upload.yml | 8 + ...ite_members_version_a_experiment_percentage.yml | 8 - .../experiment/repo_integrations_link.yml | 8 + config/feature_flags/ops/marginalia.yml | 8 - config/gitlab.yml.example | 9 + config/helpers/incremental_webpack_compiler.js | 3 + config/helpers/is_eslint.js | 2 +- config/helpers/vendor_dll_hash.js | 2 +- config/initializers/0_marginalia.rb | 15 +- config/initializers/1_settings.rb | 15 +- config/initializers/doorkeeper.rb | 6 + config/initializers/gitlab_experiment.rb | 4 +- config/initializers/postgres_partitioning.rb | 1 + config/initializers/rack_multipart_patch.rb | 44 + config/initializers/rails_host_authorization.rb | 5 + config/initializers/validate_puma.rb | 4 - .../000_inflections.rb | 1 + .../003_gc_compact.rb | 21 + config/karma.config.js | 19 +- .../counts_28d/20210201124930_deployments.yml | 2 +- ...lytics_unique_visits_for_any_target_monthly.yml | 16 + ...0216174914_g_analytics_contribution_monthly.yml | 16 + ...20210216174918_g_analytics_insights_monthly.yml | 16 + .../20210216174921_g_analytics_issues_monthly.yml | 16 + ...0216174926_g_analytics_productivity_monthly.yml | 16 + ...10216174929_g_analytics_valuestream_monthly.yml | 16 + ...0210216174933_p_analytics_pipelines_monthly.yml | 16 + ...0216174937_p_analytics_code_reviews_monthly.yml | 16 + ...10216174941_p_analytics_valuestream_monthly.yml | 16 + ...20210216174945_p_analytics_insights_monthly.yml | 16 + .../20210216174949_p_analytics_issues_monthly.yml | 16 + .../20210216174953_p_analytics_repo_monthly.yml | 16 + .../20210216174956_i_analytics_cohorts_monthly.yml | 16 + ...216175000_i_analytics_dev_ops_score_monthly.yml | 16 + ...216175004_g_analytics_merge_request_monthly.yml | 16 + ...216175008_p_analytics_merge_request_monthly.yml | 16 + ...012_i_analytics_instance_statistics_monthly.yml | 16 + ...75016_analytics_total_unique_counts_monthly.yml | 16 + .../counts_28d/20210216175055_merge_requests.yml | 16 + ...able_overriding_approvers_per_merge_request.yml | 17 + ...able_overriding_approvers_per_merge_request.yml | 17 + .../20210216175101_merge_requests_users.yml | 16 + .../counts_28d/20210216175109_suggestions.yml | 16 + ...20210216175113_merge_request_action_monthly.yml | 16 + ...117_i_source_code_code_intelligence_monthly.yml | 16 + ...210216175120_i_code_review_mr_diffs_monthly.yml | 16 + ..._code_review_user_single_file_diffs_monthly.yml | 16 + ..._i_code_review_mr_single_file_diffs_monthly.yml | 17 + ...175132_i_code_review_user_create_mr_monthly.yml | 16 + ...6175136_i_code_review_user_close_mr_monthly.yml | 16 + ...175140_i_code_review_user_reopen_mr_monthly.yml | 16 + ...6175144_i_code_review_user_merge_mr_monthly.yml | 16 + ..._code_review_user_create_mr_comment_monthly.yml | 16 + ..._i_code_review_user_edit_mr_comment_monthly.yml | 16 + ..._code_review_user_remove_mr_comment_monthly.yml | 16 + ...9_i_code_review_user_add_suggestion_monthly.yml | 16 + ...i_code_review_user_apply_suggestion_monthly.yml | 16 + ...6175405_clusters_applications_cert_managers.yml | 19 + .../20210216175407_clusters_applications_helm.yml | 19 + ...0210216175409_clusters_applications_ingress.yml | 19 + ...0210216175411_clusters_applications_knative.yml | 19 + .../20210216175413_clusters_management_project.yml | 19 + .../20210216175415_clusters_disabled.yml | 19 + .../counts_28d/20210216175417_clusters_enabled.yml | 19 + .../20210216175419_clusters_platforms_gke.yml | 19 + .../20210216175420_clusters_platforms_eks.yml | 19 + .../20210216175422_clusters_platforms_user.yml | 19 + .../20210216175424_instance_clusters_disabled.yml | 19 + .../20210216175426_instance_clusters_enabled.yml | 19 + .../20210216175428_group_clusters_disabled.yml | 19 + .../20210216175430_group_clusters_enabled.yml | 19 + .../20210216175432_project_clusters_disabled.yml | 19 + .../20210216175434_project_clusters_enabled.yml | 19 + .../counts_28d/20210216175542_ci_builds.yml | 16 + .../20210216175544_ci_external_pipelines.yml | 16 + .../20210216175546_ci_internal_pipelines.yml | 16 + ...210216175548_ci_pipeline_config_auto_devops.yml | 16 + ...0210216175550_ci_pipeline_config_repository.yml | 16 + .../20210216175552_ci_pipeline_schedules.yml | 16 + .../counts_28d/20210216175554_ci_pipelines.yml | 17 + .../counts_28d/20210216175556_ci_triggers.yml | 19 + .../counts_28d/20210216175616_user_dast_jobs.yml | 16 + .../counts_28d/20210216175618_dast_pipeline.yml | 16 + .../20210216180308_personal_snippets.yml | 19 + .../counts_28d/20210216180310_project_snippets.yml | 19 + .../metrics/counts_28d/20210216180312_snippets.yml | 19 + .../metrics/counts_28d/20210216180317_snippets.yml | 19 + ...19_action_monthly_active_users_web_ide_edit.yml | 16 + ...180321_action_monthly_active_users_sfe_edit.yml | 16 + ...on_monthly_active_users_snippet_editor_edit.yml | 16 + ...180325_action_monthly_active_users_sse_edit.yml | 16 + ...180327_action_monthly_active_users_ide_edit.yml | 16 + .../20210216180330_g_edit_by_web_ide_monthly.yml | 16 + .../20210216180334_g_edit_by_sfe_monthly.yml | 16 + ...0210216180338_g_edit_by_snippet_ide_monthly.yml | 16 + ...180341_ide_edit_total_unique_counts_monthly.yml | 16 + .../20210216180355_user_api_fuzzing_jobs.yml | 16 + .../20210216180357_user_api_fuzzing_dnd_jobs.yml | 16 + .../20210216180424_i_search_total_monthly.yml | 18 + ...16180431_search_total_unique_counts_monthly.yml | 18 + ...ident_management_alerts_total_unique_counts.yml | 16 + ...nt_management_incidents_total_unique_counts.yml | 16 + .../20210216180524_projects_with_incidents.yml | 16 + ...0210216180526_projects_with_alert_incidents.yml | 17 + ...ent_management_alert_status_changed_monthly.yml | 16 + ..._incident_management_alert_assigned_monthly.yml | 16 + ...0537_incident_management_alert_todo_monthly.yml | 16 + ...ncident_management_incident_created_monthly.yml | 16 + ...cident_management_incident_reopened_monthly.yml | 16 + ...incident_management_incident_closed_monthly.yml | 16 + ...cident_management_incident_assigned_monthly.yml | 16 + ...6_incident_management_incident_todo_monthly.yml | 16 + ...ncident_management_incident_comment_monthly.yml | 16 + ...ident_management_incident_published_monthly.yml | 16 + ...incident_management_incident_relate_monthly.yml | 16 + ...cident_management_incident_unrelate_monthly.yml | 16 + ...gement_incident_change_confidential_monthly.yml | 16 + ...dent_management_total_unique_counts_monthly.yml | 16 + ...nt_management_alert_create_incident_monthly.yml | 17 + ...0210216180731_projects_imported_from_github.yml | 16 + ...tion_monthly_active_users_design_management.yml | 16 + ...80747_action_monthly_active_users_wiki_repo.yml | 16 + .../metrics/counts_28d/20210216180814_events.yml | 17 + .../metrics/counts_28d/20210216180816_groups.yml | 16 + .../counts_28d/20210216180818_users_created.yml | 17 + .../counts_28d/20210216180820_ldap_keys.yml | 16 + .../counts_28d/20210216180822_ldap_users.yml | 16 + ...10216180955_projects_with_prometheus_alerts.yml | 16 + .../metrics/counts_28d/20210216180956_clusters.yml | 16 + ...0216180958_clusters_applications_prometheus.yml | 16 + ...1000_operations_dashboard_default_dashboard.yml | 16 + ...0210216181002_projects_with_tracing_enabled.yml | 16 + ...181004_projects_with_error_tracking_enabled.yml | 16 + ...rations_dashboard_users_with_projects_added.yml | 16 + .../metrics/counts_28d/20210216181050_packages.yml | 16 + .../20210216181057_projects_with_packages.yml | 16 + .../metrics/counts_28d/20210216181139_issues.yml | 16 + config/metrics/counts_28d/20210216181141_notes.yml | 16 + .../metrics/counts_28d/20210216181143_projects.yml | 16 + config/metrics/counts_28d/20210216181145_todos.yml | 16 + ...0210216181147_service_desk_enabled_projects.yml | 17 + .../20210216181148_service_desk_issues.yml | 17 + .../20210216181150_projects_jira_active.yml | 16 + ...10216181152_projects_jira_dvcs_cloud_active.yml | 16 + ...0216181154_projects_jira_dvcs_server_active.yml | 16 + config/metrics/counts_28d/20210216181158_epics.yml | 16 + .../counts_28d/20210216181200_label_lists.yml | 16 + .../counts_28d/20210216181201_milestone_lists.yml | 16 + ...ject_management_issue_title_changed_monthly.yml | 16 + ...anagement_issue_description_changed_monthly.yml | 16 + ..._management_issue_made_confidential_monthly.yml | 16 + ...oject_management_issue_made_visible_monthly.yml | 16 + ..._g_project_management_issue_created_monthly.yml | 16 + ...6_g_project_management_issue_closed_monthly.yml | 16 + ...g_project_management_issue_reopened_monthly.yml | 16 + ...ject_management_issue_label_changed_monthly.yml | 16 + ..._management_issue_milestone_changed_monthly.yml | 16 + ..._management_issue_iteration_changed_monthly.yml | 16 + ...ect_management_issue_weight_changed_monthly.yml | 16 + ...t_management_issue_cross_referenced_monthly.yml | 16 + ...52_g_project_management_issue_moved_monthly.yml | 16 + ..._g_project_management_issue_related_monthly.yml | 16 + ..._project_management_issue_unrelated_monthly.yml | 16 + ...anagement_issue_marked_as_duplicate_monthly.yml | 16 + ...7_g_project_management_issue_locked_monthly.yml | 16 + ...g_project_management_issue_unlocked_monthly.yml | 16 + ...ject_management_issue_added_to_epic_monthly.yml | 16 + ..._management_issue_removed_from_epic_monthly.yml | 16 + ...oject_management_issue_changed_epic_monthly.yml | 16 + ...ject_management_issue_designs_added_monthly.yml | 16 + ...t_management_issue_designs_modified_monthly.yml | 16 + ...ct_management_issue_designs_removed_monthly.yml | 16 + ...t_management_issue_due_date_changed_monthly.yml | 16 + ...agement_issue_time_estimate_changed_monthly.yml | 16 + ...management_issue_time_spent_changed_monthly.yml | 16 + ...ject_management_issue_comment_added_monthly.yml | 16 + ...ect_management_issue_comment_edited_monthly.yml | 16 + ...ct_management_issue_comment_removed_monthly.yml | 16 + ...agement_issue_health_status_changed_monthly.yml | 16 + ...1_g_project_management_issue_cloned_monthly.yml | 16 + ...504_issues_edit_total_unique_counts_monthly.yml | 16 + ...210216181508_i_quickactions_approve_monthly.yml | 16 + ...181512_i_quickactions_assign_single_monthly.yml | 16 + ...1516_i_quickactions_assign_multiple_monthly.yml | 16 + ...16181519_i_quickactions_assign_self_monthly.yml | 16 + ...1523_i_quickactions_assign_reviewer_monthly.yml | 16 + ...20210216181527_i_quickactions_award_monthly.yml | 16 + ...216181530_i_quickactions_board_move_monthly.yml | 16 + ...216181534_i_quickactions_child_epic_monthly.yml | 16 + ...6181538_i_quickactions_clear_weight_monthly.yml | 16 + ...20210216181541_i_quickactions_clone_monthly.yml | 16 + ...20210216181545_i_quickactions_close_monthly.yml | 16 + ...6181549_i_quickactions_confidential_monthly.yml | 16 + ...actions_copy_metadata_merge_request_monthly.yml | 16 + ..._i_quickactions_copy_metadata_issue_monthly.yml | 16 + ...i_quickactions_create_merge_request_monthly.yml | 16 + .../20210216181604_i_quickactions_done_monthly.yml | 16 + ...20210216181607_i_quickactions_draft_monthly.yml | 16 + .../20210216181611_i_quickactions_due_monthly.yml | 16 + ...0216181615_i_quickactions_duplicate_monthly.yml | 16 + .../20210216181618_i_quickactions_epic_monthly.yml | 16 + ...10216181622_i_quickactions_estimate_monthly.yml | 16 + ...0216181626_i_quickactions_iteration_monthly.yml | 16 + ...20210216181629_i_quickactions_label_monthly.yml | 16 + .../20210216181633_i_quickactions_lock_monthly.yml | 16 + ...20210216181637_i_quickactions_merge_monthly.yml | 16 + ...0216181641_i_quickactions_milestone_monthly.yml | 16 + .../20210216181644_i_quickactions_move_monthly.yml | 16 + ...16181648_i_quickactions_parent_epic_monthly.yml | 16 + ...210216181652_i_quickactions_promote_monthly.yml | 16 + ...210216181655_i_quickactions_publish_monthly.yml | 16 + ...10216181659_i_quickactions_reassign_monthly.yml | 16 + ...03_i_quickactions_reassign_reviewer_monthly.yml | 16 + ...0210216181707_i_quickactions_rebase_monthly.yml | 16 + ...210216181710_i_quickactions_relabel_monthly.yml | 16 + ...0210216181714_i_quickactions_relate_monthly.yml | 16 + ...18_i_quickactions_remove_child_epic_monthly.yml | 16 + ...1721_i_quickactions_remove_due_date_monthly.yml | 16 + ...16181725_i_quickactions_remove_epic_monthly.yml | 16 + ...1729_i_quickactions_remove_estimate_monthly.yml | 16 + ...732_i_quickactions_remove_iteration_monthly.yml | 16 + ...736_i_quickactions_remove_milestone_monthly.yml | 16 + ...0_i_quickactions_remove_parent_epic_monthly.yml | 16 + ...44_i_quickactions_remove_time_spent_monthly.yml | 16 + ...16181747_i_quickactions_remove_zoom_monthly.yml | 16 + ...0210216181751_i_quickactions_reopen_monthly.yml | 16 + ...20210216181755_i_quickactions_shrug_monthly.yml | 16 + ...81758_i_quickactions_spend_subtract_monthly.yml | 16 + ...0216181802_i_quickactions_spend_add_monthly.yml | 16 + ...181806_i_quickactions_submit_review_monthly.yml | 16 + ...0216181809_i_quickactions_subscribe_monthly.yml | 16 + ...0216181813_i_quickactions_tableflip_monthly.yml | 16 + .../20210216181817_i_quickactions_tag_monthly.yml | 16 + ...181821_i_quickactions_target_branch_monthly.yml | 16 + ...20210216181824_i_quickactions_title_monthly.yml | 16 + .../20210216181828_i_quickactions_todo_monthly.yml | 16 + ...32_i_quickactions_unassign_specific_monthly.yml | 16 + ...6181835_i_quickactions_unassign_all_monthly.yml | 16 + ...39_i_quickactions_unassign_reviewer_monthly.yml | 16 + ...843_i_quickactions_unlabel_specific_monthly.yml | 16 + ...16181846_i_quickactions_unlabel_all_monthly.yml | 16 + ...0210216181850_i_quickactions_unlock_monthly.yml | 16 + ...16181854_i_quickactions_unsubscribe_monthly.yml | 16 + ...0210216181857_i_quickactions_weight_monthly.yml | 16 + .../20210216181901_i_quickactions_wip_monthly.yml | 16 + .../20210216181905_i_quickactions_zoom_monthly.yml | 16 + .../20210216181923_successful_deployments.yml | 16 + .../20210216181924_failed_deployments.yml | 16 + .../counts_28d/20210216181935_deployments.yml | 16 + .../20210216181937_failed_deployments.yml | 16 + .../metrics/counts_28d/20210216181939_releases.yml | 16 + .../20210216181941_successful_deployments.yml | 16 + ...43_projects_mirrored_with_pipelines_enabled.yml | 16 + ...20210216181951_clusters_applications_runner.yml | 19 + ...81956_user_unique_users_all_secure_scanners.yml | 16 + .../counts_28d/20210216182034_deploy_keys.yml | 16 + config/metrics/counts_28d/20210216182036_keys.yml | 16 + .../counts_28d/20210216182038_remote_mirrors.yml | 16 + ...40_action_monthly_active_users_project_repo.yml | 16 + ...82041_action_monthly_active_users_git_write.yml | 16 + ...2043_projects_enforcing_code_owner_approval.yml | 16 + ...45_projects_with_sectional_code_owner_rules.yml | 16 + ...16182049_projects_with_repositories_enabled.yml | 16 + .../20210216182051_protected_branches.yml | 16 + .../20210216182102_wiki_action_monthly.yml | 16 + .../20210216182106_design_action_monthly.yml | 16 + .../20210216182109_project_action_monthly.yml | 16 + .../counts_28d/20210216182125_user_sast_jobs.yml | 19 + .../20210216182127_user_secret_detection_jobs.yml | 19 + .../counts_28d/20210216182129_sast_pipeline.yml | 19 + .../20210216182131_secret_detection_pipeline.yml | 19 + ...16182136_i_testing_test_case_parsed_monthly.yml | 20 + ...g_metrics_report_artifact_uploaders_monthly.yml | 20 + ...eferences_group_overview_security_dashboard.yml | 18 + ...20210216183159_projects_with_alerts_created.yml | 16 + ...mpliance_features_track_unique_visits_union.yml | 16 + ...183203_product_analytics_test_metrics_union.yml | 16 + ...product_analytics_test_metrics_intersection.yml | 16 + ...09_i_testing_paid_monthly_active_user_total.yml | 16 + .../20210216183613_total_number_of_path_locks.yml | 16 + ...20210216183614_total_number_of_locked_files.yml | 16 + ...ect_rules_with_more_approvers_than_required.yml | 16 + ...ect_rules_with_less_approvers_than_required.yml | 16 + ...project_rules_with_exact_required_approvers.yml | 16 + .../20210216183627_omniauth_providers.yml | 16 + .../counts_28d/20210216183629_two-factor.yml | 16 + .../20210216183631_two-factor-via-u2f-device.yml | 16 + ...210216183633_two-factor-via-webauthn-device.yml | 16 + .../metrics/counts_28d/20210216183634_standard.yml | 16 + .../counts_28d/20210216183636_google_oauth2.yml | 16 + .../20210216183638_unique_users_all_imports.yml | 16 + .../metrics/counts_28d/20210216183640_gitlab.yml | 16 + .../counts_28d/20210216183642_gitlab_v1.yml | 16 + .../counts_28d/20210216183644_gitlab_project.yml | 16 + .../metrics/counts_28d/20210216183646_gitlab.yml | 16 + .../metrics/counts_28d/20210216183648_github.yml | 16 + .../counts_28d/20210216183650_bitbucket.yml | 16 + .../counts_28d/20210216183652_bitbucket_server.yml | 16 + config/metrics/counts_28d/20210216183653_gitea.yml | 16 + config/metrics/counts_28d/20210216183655_git.yml | 16 + .../metrics/counts_28d/20210216183657_manifest.yml | 16 + .../counts_28d/20210216183659_gitlab_migration.yml | 16 + config/metrics/counts_28d/20210216183701_jira.yml | 16 + .../metrics/counts_28d/20210216183703_fogbugz.yml | 16 + .../counts_28d/20210216183705_phabricator.yml | 16 + config/metrics/counts_28d/20210216183707_csv.yml | 16 + .../counts_28d/20210216183709_group_import.yml | 16 + .../counts_28d/20210216183711_gitlab_migration.yml | 16 + config/metrics/counts_28d/20210216183712_total.yml | 16 + .../counts_28d/20210216183714_gitlab_project.yml | 16 + .../metrics/counts_28d/20210216183716_gitlab.yml | 16 + .../metrics/counts_28d/20210216183718_github.yml | 16 + .../counts_28d/20210216183720_bitbucket.yml | 16 + .../counts_28d/20210216183722_bitbucket_server.yml | 16 + config/metrics/counts_28d/20210216183724_gitea.yml | 16 + config/metrics/counts_28d/20210216183726_git.yml | 16 + .../metrics/counts_28d/20210216183728_manifest.yml | 16 + config/metrics/counts_28d/20210216183730_jira.yml | 16 + .../metrics/counts_28d/20210216183731_fogbugz.yml | 16 + .../counts_28d/20210216183733_phabricator.yml | 16 + config/metrics/counts_28d/20210216183735_csv.yml | 16 + .../counts_28d/20210216183737_groups_imported.yml | 16 + ...0210216183753_projects_incident_sla_enabled.yml | 16 + .../20210216183817_user_coverage_fuzzing_jobs.yml | 16 + .../counts_28d/20210216183826_sast_scans.yml | 16 + .../20210216183828_dependency_scanning_scans.yml | 16 + .../20210216183830_container_scanning_scans.yml | 16 + .../counts_28d/20210216183832_dast_scans.yml | 16 + .../20210216183834_secret_detection_scans.yml | 16 + .../20210216183836_coverage_fuzzing_scans.yml | 16 + .../20210216183838_api_fuzzing_scans.yml | 16 + ...liance_unique_visits_for_any_target_monthly.yml | 16 + ...search_unique_visits_for_any_target_monthly.yml | 18 + ...210216183926_g_compliance_dashboard_monthly.yml | 16 + ...216183930_g_compliance_audit_events_monthly.yml | 16 + ...216183934_i_compliance_audit_events_monthly.yml | 16 + ...8_i_compliance_credential_inventory_monthly.yml | 16 + ...83942_a_compliance_audit_events_api_monthly.yml | 16 + ...3946_compliance_total_unique_counts_monthly.yml | 16 + .../20210216184024_g_edit_by_sse_monthly.yml | 16 + .../20210216184047_git_write_action_monthly.yml | 16 + ...6184140_testing_total_unique_counts_monthly.yml | 16 + ...rets_management_vault_build_created_monthly.yml | 16 + .../20210216184255_i_snippets_show_monthly.yml | 16 + ..._p_terraform_state_api_unique_users_monthly.yml | 16 + ...nique_users_committing_ciconfigfile_monthly.yml | 16 + ...eview_user_toggled_task_item_status_monthly.yml | 16 + ...84322_i_code_review_user_approve_mr_monthly.yml | 16 + ...326_i_code_review_user_unapprove_mr_monthly.yml | 16 + ...0_i_code_review_user_resolve_thread_monthly.yml | 16 + ...i_code_review_user_unresolve_thread_monthly.yml | 16 + ...6184338_i_code_review_edit_mr_title_monthly.yml | 16 + ...16184342_i_code_review_edit_mr_desc_monthly.yml | 16 + ...code_review_user_create_review_note_monthly.yml | 16 + ...7_i_code_review_user_publish_review_monthly.yml | 16 + ...ew_user_create_multiline_mr_comment_monthly.yml | 16 + ...view_user_edit_multiline_mr_comment_monthly.yml | 16 + ...ew_user_remove_multiline_mr_comment_monthly.yml | 16 + ...6184418_i_code_review_user_assigned_monthly.yml | 16 + ..._i_code_review_user_marked_as_draft_monthly.yml | 16 + ..._code_review_user_unmarked_as_draft_monthly.yml | 16 + ...i_code_review_user_review_requested_monthly.yml | 16 + ...ode_review_user_approval_rule_added_monthly.yml | 16 + ...e_review_user_approval_rule_deleted_monthly.yml | 16 + ...de_review_user_approval_rule_edited_monthly.yml | 16 + ...ode_review_user_vs_code_api_request_monthly.yml | 16 + ...de_review_user_create_mr_from_issue_monthly.yml | 16 + ...454_code_review_total_unique_counts_monthly.yml | 16 + ...p_ci_templates_implicit_auto_devops_monthly.yml | 16 + ...emplates_implicit_auto_devops_build_monthly.yml | 16 + ...mplates_implicit_auto_devops_deploy_monthly.yml | 16 + ...ci_templates_implicit_security_sast_monthly.yml | 16 + ..._implicit_security_secret_detection_monthly.yml | 16 + ...p_ci_templates_5_min_production_app_monthly.yml | 16 + ...16184523_p_ci_templates_auto_devops_monthly.yml | 16 + ...26_p_ci_templates_aws_cf_deploy_ec2_monthly.yml | 16 + ...84530_p_ci_templates_aws_deploy_ecs_monthly.yml | 16 + ...34_p_ci_templates_auto_devops_build_monthly.yml | 16 + ...8_p_ci_templates_auto_devops_deploy_monthly.yml | 16 + ...templates_auto_devops_deploy_latest_monthly.yml | 16 + ...184546_p_ci_templates_security_sast_monthly.yml | 16 + ...templates_security_secret_detection_monthly.yml | 16 + ..._ci_templates_terraform_base_latest_monthly.yml | 16 + ...59_ci_templates_total_unique_counts_monthly.yml | 16 + ...03_quickactions_total_unique_counts_monthly.yml | 16 + ...806_i_package_composer_deploy_token_monthly.yml | 16 + ...184810_i_package_conan_deploy_token_monthly.yml | 16 + ...14_i_package_container_deploy_token_monthly.yml | 16 + ...84818_i_package_debian_deploy_token_monthly.yml | 16 + ...4822_i_package_generic_deploy_token_monthly.yml | 16 + ...84826_i_package_golang_deploy_token_monthly.yml | 16 + ...184830_i_package_maven_deploy_token_monthly.yml | 16 + ...16184834_i_package_npm_deploy_token_monthly.yml | 16 + ...184838_i_package_nuget_deploy_token_monthly.yml | 16 + ...6184842_i_package_pypi_deploy_token_monthly.yml | 16 + ...16184846_i_package_tag_deploy_token_monthly.yml | 16 + ..._token_packages_total_unique_counts_monthly.yml | 16 + ...10216184854_i_package_composer_user_monthly.yml | 16 + ...20210216184858_i_package_conan_user_monthly.yml | 16 + ...0216184902_i_package_container_user_monthly.yml | 16 + ...0210216184906_i_package_debian_user_monthly.yml | 16 + ...210216184910_i_package_generic_user_monthly.yml | 16 + ...0210216184913_i_package_golang_user_monthly.yml | 16 + ...20210216184917_i_package_maven_user_monthly.yml | 16 + .../20210216184921_i_package_npm_user_monthly.yml | 16 + ...20210216184925_i_package_nuget_user_monthly.yml | 16 + .../20210216184929_i_package_pypi_user_monthly.yml | 16 + .../20210216184933_i_package_tag_user_monthly.yml | 16 + ...7_user_packages_total_unique_counts_monthly.yml | 16 + ..._ecosystem_jira_service_close_issue_monthly.yml | 16 + ...system_jira_service_cross_reference_monthly.yml | 16 + ..._ecosystem_jira_service_list_issues_monthly.yml | 16 + ...ecosystem_jira_service_create_issue_monthly.yml | 16 + ...84957_ecosystem_total_unique_counts_monthly.yml | 16 + ..._i_quickactions_invite_email_single_monthly.yml | 18 + ..._quickactions_invite_email_multiple_monthly.yml | 18 + ...e_review_user_time_estimate_changed_monthly.yml | 20 + ...code_review_user_time_spent_changed_monthly.yml | 20 + ...de_review_user_mr_discussion_locked_monthly.yml | 20 + ..._review_user_mr_discussion_unlocked_monthly.yml | 20 + ...nique_users_pushing_mr_ciconfigfile_monthly.yml | 20 + ..._code_review_user_milestone_changed_monthly.yml | 20 + ...7_i_code_review_user_labels_changed_monthly.yml | 20 + ..._code_review_user_assignees_changed_monthly.yml | 20 + ..._code_review_user_reviewers_changed_monthly.yml | 20 + ...em_slack_service_issue_notification_monthly.yml | 20 + ...tem_slack_service_push_notification_monthly.yml | 20 + ...ack_service_deployment_notification_monthly.yml | 20 + ...lack_service_wiki_page_notification_monthly.yml | 20 + ..._service_merge_request_notification_monthly.yml | 20 + ...tem_slack_service_note_notification_monthly.yml | 20 + ...slack_service_tag_push_notification_monthly.yml | 20 + ...vice_confidential_note_notification_monthly.yml | 20 + ...ice_confidential_issue_notification_monthly.yml | 20 + ...oject_management_issue_title_changed_weekly.yml | 6 +- .../20210216180422_i_search_total_weekly.yml | 18 + ...216180429_search_total_unique_counts_weekly.yml | 18 + ...216182134_i_testing_test_case_parsed_weekly.yml | 20 + ...ng_metrics_report_artifact_uploaders_weekly.yml | 20 + ...unique_users_pushing_mr_ciconfigfile_weekly.yml | 20 + ...tem_slack_service_issue_notification_weekly.yml | 20 + ...de_review_user_time_estimate_changed_weekly.yml | 20 + ..._code_review_user_time_spent_changed_weekly.yml | 20 + ...stem_slack_service_push_notification_weekly.yml | 20 + ...lack_service_deployment_notification_weekly.yml | 20 + ...slack_service_wiki_page_notification_weekly.yml | 20 + ...k_service_merge_request_notification_weekly.yml | 20 + ...stem_slack_service_note_notification_weekly.yml | 20 + ..._slack_service_tag_push_notification_weekly.yml | 20 + ...rvice_confidential_note_notification_weekly.yml | 20 + ...vice_confidential_issue_notification_weekly.yml | 20 + ...e_review_user_mr_discussion_unlocked_weekly.yml | 20 + ...ode_review_user_mr_discussion_locked_weekly.yml | 20 + ...i_code_review_user_milestone_changed_weekly.yml | 20 + ...48_i_code_review_user_labels_changed_weekly.yml | 20 + ...i_code_review_user_assignees_changed_weekly.yml | 20 + ...i_code_review_user_reviewers_changed_weekly.yml | 20 + .../counts_all/20210201124934_deployments.yml | 2 +- .../metrics/counts_all/20210204124930_servers.yml | 6 +- .../metrics/counts_all/20210204124932_clusters.yml | 6 +- .../counts_all/20210216174826_ldap_users.yml | 19 + .../counts_all/20210216174829_smtp_server.yml | 19 + .../20210216174832_cycle_analytics_views.yml | 16 + ...20210216174834_productivity_analytics_views.yml | 16 + .../20210216174836_g_analytics_contribution.yml | 16 + .../20210216174838_g_analytics_insights.yml | 16 + .../20210216174840_g_analytics_issues.yml | 16 + .../20210216174842_g_analytics_productivity.yml | 16 + .../20210216174844_g_analytics_valuestream.yml | 16 + .../20210216174846_p_analytics_pipelines.yml | 16 + .../20210216174848_p_analytics_code_reviews.yml | 16 + .../20210216174850_p_analytics_valuestream.yml | 16 + .../20210216174852_p_analytics_insights.yml | 16 + .../20210216174854_p_analytics_issues.yml | 16 + .../counts_all/20210216174856_p_analytics_repo.yml | 16 + .../20210216174858_i_analytics_cohorts.yml | 16 + .../20210216174900_i_analytics_dev_ops_score.yml | 16 + .../20210216174902_g_analytics_merge_request.yml | 16 + .../20210216174904_p_analytics_merge_request.yml | 16 + ...10216174906_i_analytics_instance_statistics.yml | 16 + ...4908_analytics_unique_visits_for_any_target.yml | 16 + ...10216175019_projects_with_prometheus_alerts.yml | 16 + .../20210216175021_pod_logs_usages_total.yml | 16 + ...0210216175024_service_desk_enabled_projects.yml | 17 + .../20210216175026_service_desk_issues.yml | 17 + .../20210216175028_requirements_created.yml | 16 + .../counts_all/20210216175037_suggestions.yml | 16 + .../counts_all/20210216175039_merge_requests.yml | 16 + .../20210216175041_merge_request_comment.yml | 16 + .../20210216175043_merge_request_create.yml | 16 + .../counts_all/20210216175045_merge_requests.yml | 16 + .../counts_all/20210216175053_suggestions.yml | 16 + ..._merged_merge_requests_using_approval_rules.yml | 16 + .../20210216175229_auto_devops_enabled.yml | 16 + .../20210216175231_auto_devops_disabled.yml | 16 + .../metrics/counts_all/20210216175232_clusters.yml | 19 + .../counts_all/20210216175234_clusters_enabled.yml | 19 + .../20210216175236_project_clusters_enabled.yml | 19 + .../20210216175238_group_clusters_enabled.yml | 19 + .../20210216175240_instance_clusters_enabled.yml | 19 + .../20210216175242_clusters_disabled.yml | 19 + .../20210216175244_project_clusters_disabled.yml | 19 + .../20210216175246_group_clusters_disabled.yml | 19 + .../20210216175248_instance_clusters_disabled.yml | 19 + .../20210216175250_clusters_platforms_eks.yml | 19 + .../20210216175251_clusters_platforms_gke.yml | 19 + .../20210216175253_clusters_platforms_user.yml | 19 + .../20210216175255_clusters_applications_helm.yml | 19 + ...0210216175257_clusters_applications_ingress.yml | 19 + ...6175259_clusters_applications_cert_managers.yml | 19 + ...0216175301_clusters_applications_crossplane.yml | 19 + ...0216175303_clusters_applications_prometheus.yml | 19 + ...20210216175305_clusters_applications_runner.yml | 19 + ...0210216175307_clusters_applications_knative.yml | 19 + ...6175309_clusters_applications_elastic_stack.yml | 19 + ...0210216175310_clusters_applications_jupyter.yml | 19 + ...20210216175312_clusters_applications_cilium.yml | 19 + .../20210216175314_clusters_management_project.yml | 19 + ...10216175320_projects_with_terraform_reports.yml | 16 + ...210216175322_projects_with_terraform_states.yml | 16 + .../20210216175324_terraform_reports.yml | 16 + .../counts_all/20210216175326_terraform_states.yml | 16 + ...6175329_clusters_applications_cert_managers.yml | 19 + .../20210216175331_clusters_applications_helm.yml | 19 + ...0210216175333_clusters_applications_ingress.yml | 19 + ...0210216175335_clusters_applications_knative.yml | 19 + .../20210216175337_clusters_management_project.yml | 19 + .../20210216175339_clusters_disabled.yml | 19 + .../counts_all/20210216175341_clusters_enabled.yml | 19 + .../20210216175343_clusters_platforms_gke.yml | 19 + .../20210216175345_clusters_platforms_eks.yml | 19 + .../20210216175346_clusters_platforms_user.yml | 19 + .../20210216175348_instance_clusters_disabled.yml | 19 + .../20210216175350_instance_clusters_enabled.yml | 19 + .../20210216175352_group_clusters_disabled.yml | 19 + .../20210216175354_group_clusters_enabled.yml | 19 + .../20210216175356_project_clusters_disabled.yml | 19 + .../20210216175358_project_clusters_enabled.yml | 19 + ...10216175403_projects_with_prometheus_alerts.yml | 19 + ...75442_ingress_modsecurity_packets_processed.yml | 20 + ...75444_ingress_modsecurity_packets_anomalous.yml | 20 + .../20210216175446_network_policy_forwards.yml | 20 + .../20210216175448_network_policy_drops.yml | 20 + .../20210216175450_ingress_modsecurity_logging.yml | 19 + ...20210216175452_ingress_modsecurity_blocking.yml | 19 + ...20210216175454_ingress_modsecurity_disabled.yml | 19 + ...216175456_ingress_modsecurity_not_installed.yml | 19 + .../counts_all/20210216175510_ci_builds.yml | 16 + .../20210216175512_ci_internal_pipelines.yml | 16 + .../20210216175514_ci_external_pipelines.yml | 16 + ...210216175516_ci_pipeline_config_auto_devops.yml | 16 + ...0210216175518_ci_pipeline_config_repository.yml | 16 + .../counts_all/20210216175520_ci_runners.yml | 16 + .../counts_all/20210216175521_ci_triggers.yml | 16 + .../20210216175523_ci_pipeline_schedules.yml | 16 + .../counts_all/20210216175525_ci_builds.yml | 16 + .../20210216175527_ci_external_pipelines.yml | 16 + .../20210216175529_ci_internal_pipelines.yml | 16 + ...210216175531_ci_pipeline_config_auto_devops.yml | 16 + ...0210216175533_ci_pipeline_config_repository.yml | 16 + .../20210216175535_ci_pipeline_schedules.yml | 16 + .../counts_all/20210216175537_ci_pipelines.yml | 17 + .../counts_all/20210216175539_ci_triggers.yml | 16 + .../counts_all/20210216175612_dast_jobs.yml | 16 + .../counts_all/20210216175614_user_dast_jobs.yml | 16 + .../counts_all/20210216175621_web_hooks.yml | 16 + .../20210216175623_projects_asana_active.yml | 19 + .../20210216175625_groups_asana_active.yml | 19 + .../20210216175627_templates_asana_active.yml | 19 + .../20210216175628_instances_asana_active.yml | 19 + ...0216175630_projects_inheriting_asana_active.yml | 19 + ...210216175632_groups_inheriting_asana_active.yml | 19 + .../20210216175634_projects_assembla_active.yml | 19 + .../20210216175636_groups_assembla_active.yml | 19 + .../20210216175638_templates_assembla_active.yml | 19 + .../20210216175640_instances_assembla_active.yml | 19 + ...6175642_projects_inheriting_assembla_active.yml | 19 + ...216175644_groups_inheriting_assembla_active.yml | 19 + .../20210216175645_projects_bamboo_active.yml | 19 + .../20210216175647_groups_bamboo_active.yml | 19 + .../20210216175649_templates_bamboo_active.yml | 19 + .../20210216175651_instances_bamboo_active.yml | 19 + ...216175653_projects_inheriting_bamboo_active.yml | 19 + ...10216175655_groups_inheriting_bamboo_active.yml | 19 + .../20210216175657_projects_bugzilla_active.yml | 19 + .../20210216175659_groups_bugzilla_active.yml | 19 + .../20210216175701_templates_bugzilla_active.yml | 19 + .../20210216175702_instances_bugzilla_active.yml | 19 + ...6175704_projects_inheriting_bugzilla_active.yml | 19 + ...216175706_groups_inheriting_bugzilla_active.yml | 19 + .../20210216175708_projects_buildkite_active.yml | 19 + .../20210216175710_groups_buildkite_active.yml | 19 + .../20210216175712_templates_buildkite_active.yml | 19 + .../20210216175714_instances_buildkite_active.yml | 19 + ...175716_projects_inheriting_buildkite_active.yml | 19 + ...16175717_groups_inheriting_buildkite_active.yml | 19 + .../20210216175719_projects_campfire_active.yml | 19 + .../20210216175721_groups_campfire_active.yml | 19 + .../20210216175723_templates_campfire_active.yml | 19 + .../20210216175725_instances_campfire_active.yml | 19 + ...6175727_projects_inheriting_campfire_active.yml | 19 + ...216175729_groups_inheriting_campfire_active.yml | 19 + .../20210216175731_projects_confluence_active.yml | 19 + .../20210216175733_groups_confluence_active.yml | 19 + .../20210216175734_templates_confluence_active.yml | 19 + .../20210216175736_instances_confluence_active.yml | 19 + ...75738_projects_inheriting_confluence_active.yml | 19 + ...6175740_groups_inheriting_confluence_active.yml | 19 + ...175742_projects_custom_issue_tracker_active.yml | 19 + ...16175744_groups_custom_issue_tracker_active.yml | 19 + ...75745_templates_custom_issue_tracker_active.yml | 19 + ...75747_instances_custom_issue_tracker_active.yml | 19 + ...ects_inheriting_custom_issue_tracker_active.yml | 19 + ...oups_inheriting_custom_issue_tracker_active.yml | 19 + .../20210216175753_projects_discord_active.yml | 19 + .../20210216175755_groups_discord_active.yml | 19 + .../20210216175756_templates_discord_active.yml | 19 + .../20210216175758_instances_discord_active.yml | 19 + ...16175800_projects_inheriting_discord_active.yml | 19 + ...0216175802_groups_inheriting_discord_active.yml | 19 + .../20210216175804_projects_drone_ci_active.yml | 19 + .../20210216175806_groups_drone_ci_active.yml | 19 + .../20210216175807_templates_drone_ci_active.yml | 19 + .../20210216175809_instances_drone_ci_active.yml | 19 + ...6175811_projects_inheriting_drone_ci_active.yml | 19 + ...216175813_groups_inheriting_drone_ci_active.yml | 19 + ...210216175815_projects_emails_on_push_active.yml | 19 + ...20210216175817_groups_emails_on_push_active.yml | 19 + ...10216175818_templates_emails_on_push_active.yml | 19 + ...10216175820_instances_emails_on_push_active.yml | 19 + ...2_projects_inheriting_emails_on_push_active.yml | 19 + ...824_groups_inheriting_emails_on_push_active.yml | 19 + ...0210216175826_projects_external_wiki_active.yml | 19 + .../20210216175828_groups_external_wiki_active.yml | 19 + ...210216175829_templates_external_wiki_active.yml | 19 + ...210216175831_instances_external_wiki_active.yml | 19 + ...33_projects_inheriting_external_wiki_active.yml | 19 + ...5835_groups_inheriting_external_wiki_active.yml | 19 + .../20210216175837_projects_flowdock_active.yml | 19 + .../20210216175839_groups_flowdock_active.yml | 19 + .../20210216175840_templates_flowdock_active.yml | 19 + .../20210216175842_instances_flowdock_active.yml | 19 + ...6175844_projects_inheriting_flowdock_active.yml | 19 + ...216175846_groups_inheriting_flowdock_active.yml | 19 + .../20210216175848_projects_github_active.yml | 19 + .../20210216175850_groups_github_active.yml | 19 + .../20210216175851_templates_github_active.yml | 19 + .../20210216175853_instances_github_active.yml | 19 + ...216175855_projects_inheriting_github_active.yml | 19 + ...10216175857_groups_inheriting_github_active.yml | 19 + ...0210216175859_projects_hangouts_chat_active.yml | 19 + .../20210216175901_groups_hangouts_chat_active.yml | 19 + ...210216175902_templates_hangouts_chat_active.yml | 19 + ...210216175904_instances_hangouts_chat_active.yml | 19 + ...06_projects_inheriting_hangouts_chat_active.yml | 19 + ...5908_groups_inheriting_hangouts_chat_active.yml | 19 + .../20210216175910_projects_hipchat_active.yml | 19 + .../20210216175912_groups_hipchat_active.yml | 19 + .../20210216175913_templates_hipchat_active.yml | 19 + .../20210216175915_instances_hipchat_active.yml | 19 + ...16175917_projects_inheriting_hipchat_active.yml | 19 + ...0216175919_groups_inheriting_hipchat_active.yml | 19 + .../20210216175921_projects_irker_active.yml | 19 + .../20210216175923_groups_irker_active.yml | 19 + .../20210216175924_templates_irker_active.yml | 19 + .../20210216175926_instances_irker_active.yml | 19 + ...0216175928_projects_inheriting_irker_active.yml | 19 + ...210216175930_groups_inheriting_irker_active.yml | 19 + .../20210216175932_projects_jenkins_active.yml | 19 + .../20210216175934_groups_jenkins_active.yml | 19 + .../20210216175935_templates_jenkins_active.yml | 19 + .../20210216175937_instances_jenkins_active.yml | 19 + ...16175939_projects_inheriting_jenkins_active.yml | 19 + ...0216175941_groups_inheriting_jenkins_active.yml | 19 + .../20210216175943_projects_jira_active.yml | 19 + .../20210216175945_groups_jira_active.yml | 19 + .../20210216175946_templates_jira_active.yml | 19 + .../20210216175948_instances_jira_active.yml | 19 + ...10216175950_projects_inheriting_jira_active.yml | 19 + ...0210216175952_groups_inheriting_jira_active.yml | 19 + .../20210216175954_projects_mattermost_active.yml | 19 + .../20210216175956_groups_mattermost_active.yml | 19 + .../20210216175957_templates_mattermost_active.yml | 19 + .../20210216175959_instances_mattermost_active.yml | 19 + ...80001_projects_inheriting_mattermost_active.yml | 19 + ...6180003_groups_inheriting_mattermost_active.yml | 19 + ...5_projects_mattermost_slash_commands_active.yml | 19 + ...006_groups_mattermost_slash_commands_active.yml | 19 + ..._templates_mattermost_slash_commands_active.yml | 19 + ..._instances_mattermost_slash_commands_active.yml | 19 + ...inheriting_mattermost_slash_commands_active.yml | 20 + ...inheriting_mattermost_slash_commands_active.yml | 20 + ...10216180016_projects_microsoft_teams_active.yml | 19 + ...0210216180018_groups_microsoft_teams_active.yml | 19 + ...0216180019_templates_microsoft_teams_active.yml | 19 + ...0216180021_instances_microsoft_teams_active.yml | 19 + ..._projects_inheriting_microsoft_teams_active.yml | 19 + ...25_groups_inheriting_microsoft_teams_active.yml | 19 + .../20210216180027_projects_packagist_active.yml | 19 + .../20210216180029_groups_packagist_active.yml | 19 + .../20210216180030_templates_packagist_active.yml | 19 + .../20210216180032_instances_packagist_active.yml | 19 + ...180034_projects_inheriting_packagist_active.yml | 19 + ...16180036_groups_inheriting_packagist_active.yml | 19 + ...10216180038_projects_pipelines_email_active.yml | 19 + ...0210216180040_groups_pipelines_email_active.yml | 19 + ...0216180041_templates_pipelines_email_active.yml | 19 + ...0216180043_instances_pipelines_email_active.yml | 19 + ..._projects_inheriting_pipelines_email_active.yml | 19 + ...47_groups_inheriting_pipelines_email_active.yml | 19 + ...210216180049_projects_pivotaltracker_active.yml | 19 + ...20210216180051_groups_pivotaltracker_active.yml | 19 + ...10216180052_templates_pivotaltracker_active.yml | 19 + ...10216180054_instances_pivotaltracker_active.yml | 19 + ...6_projects_inheriting_pivotaltracker_active.yml | 19 + ...058_groups_inheriting_pivotaltracker_active.yml | 19 + .../20210216180100_projects_pushover_active.yml | 19 + .../20210216180102_groups_pushover_active.yml | 19 + .../20210216180104_templates_pushover_active.yml | 19 + .../20210216180105_instances_pushover_active.yml | 19 + ...6180107_projects_inheriting_pushover_active.yml | 19 + ...216180109_groups_inheriting_pushover_active.yml | 19 + .../20210216180111_projects_redmine_active.yml | 19 + .../20210216180113_groups_redmine_active.yml | 19 + .../20210216180115_templates_redmine_active.yml | 19 + .../20210216180116_instances_redmine_active.yml | 19 + ...16180118_projects_inheriting_redmine_active.yml | 19 + ...0216180120_groups_inheriting_redmine_active.yml | 19 + .../20210216180122_projects_slack_active.yml | 19 + .../20210216180124_groups_slack_active.yml | 19 + .../20210216180126_templates_slack_active.yml | 19 + .../20210216180127_instances_slack_active.yml | 19 + ...0216180129_projects_inheriting_slack_active.yml | 19 + ...210216180131_groups_inheriting_slack_active.yml | 19 + ...180133_projects_slack_slash_commands_active.yml | 19 + ...16180135_groups_slack_slash_commands_active.yml | 19 + ...80137_templates_slack_slash_commands_active.yml | 19 + ...80138_instances_slack_slash_commands_active.yml | 19 + ...ects_inheriting_slack_slash_commands_active.yml | 19 + ...oups_inheriting_slack_slash_commands_active.yml | 19 + .../20210216180144_projects_teamcity_active.yml | 19 + .../20210216180146_groups_teamcity_active.yml | 19 + .../20210216180148_templates_teamcity_active.yml | 19 + .../20210216180149_instances_teamcity_active.yml | 19 + ...6180151_projects_inheriting_teamcity_active.yml | 19 + ...216180153_groups_inheriting_teamcity_active.yml | 19 + ...0210216180155_projects_unify_circuit_active.yml | 19 + .../20210216180157_groups_unify_circuit_active.yml | 19 + ...210216180159_templates_unify_circuit_active.yml | 19 + ...210216180201_instances_unify_circuit_active.yml | 19 + ...03_projects_inheriting_unify_circuit_active.yml | 19 + ...0204_groups_inheriting_unify_circuit_active.yml | 19 + .../20210216180206_projects_webex_teams_active.yml | 19 + .../20210216180208_groups_webex_teams_active.yml | 19 + ...20210216180210_templates_webex_teams_active.yml | 19 + ...20210216180212_instances_webex_teams_active.yml | 19 + ...0214_projects_inheriting_webex_teams_active.yml | 19 + ...180215_groups_inheriting_webex_teams_active.yml | 19 + .../20210216180217_projects_youtrack_active.yml | 19 + .../20210216180219_groups_youtrack_active.yml | 19 + .../20210216180221_templates_youtrack_active.yml | 19 + .../20210216180223_instances_youtrack_active.yml | 19 + ...6180225_projects_inheriting_youtrack_active.yml | 19 + ...216180226_groups_inheriting_youtrack_active.yml | 19 + .../20210216180228_projects_jira_server_active.yml | 19 + .../20210216180230_projects_jira_cloud_active.yml | 19 + ...10216180232_projects_jira_dvcs_cloud_active.yml | 19 + ...0216180234_projects_jira_dvcs_server_active.yml | 19 + .../20210216180239_personal_snippets.yml | 19 + .../counts_all/20210216180241_project_snippets.yml | 19 + .../counts_all/20210216180242_web_ide_commits.yml | 19 + .../counts_all/20210216180244_web_ide_views.yml | 19 + .../20210216180246_web_ide_merge_requests.yml | 19 + .../counts_all/20210216180248_web_ide_previews.yml | 19 + .../20210216180250_web_ide_terminals.yml | 19 + .../20210216180252_web_ide_pipelines.yml | 19 + .../counts_all/20210216180253_snippet_comment.yml | 19 + .../counts_all/20210216180255_snippet_create.yml | 19 + .../counts_all/20210216180257_snippet_update.yml | 19 + .../20210216180259_static_site_editor_views.yml | 19 + .../20210216180301_static_site_editor_commits.yml | 16 + ...216180303_static_site_editor_merge_requests.yml | 16 + ...180304_user_preferences_user_gitpod_enabled.yml | 19 + .../metrics/counts_all/20210216180306_snippets.yml | 19 + .../metrics/counts_all/20210216180316_snippets.yml | 19 + .../counts_all/20210216180344_api_fuzzing_jobs.yml | 16 + .../20210216180346_api_fuzzing_dnd_jobs.yml | 16 + .../20210216180348_user_api_fuzzing_jobs.yml | 16 + .../20210216180350_user_api_fuzzing_dnd_jobs.yml | 16 + .../20210216180410_pool_repositories.yml | 19 + .../counts_all/20210216180413_all_searches.yml | 19 + .../counts_all/20210216180414_navbar_searches.yml | 19 + .../counts_all/20210216180416_i_search_total.yml | 18 + ...ssues_created_from_gitlab_error_tracking_ui.yml | 16 + ...0216180436_issues_with_associated_zoom_link.yml | 19 + ...10216180438_issues_using_zoom_quick_actions.yml | 20 + ..._issues_with_embedded_grafana_charts_approx.yml | 19 + .../20210216180441_issues_created_from_alerts.yml | 19 + ...20210216180443_issues_created_gitlab_alerts.yml | 19 + ...6180445_issues_created_manually_from_alerts.yml | 19 + .../counts_all/20210216180447_incident_issues.yml | 19 + .../20210216180449_alert_bot_incident_issues.yml | 19 + .../20210216180451_incident_labeled_issues.yml | 19 + .../20210216180453_projects_creating_incidents.yml | 16 + ...180454_projects_with_error_tracking_enabled.yml | 19 + ...180456_projects_with_alerts_service_enabled.yml | 19 + ...20210216180458_projects_with_alerts_created.yml | 16 + ...00_projects_with_enabled_alert_integrations.yml | 16 + ...210216180502_status_page_incident_publishes.yml | 16 + ...0216180504_status_page_incident_unpublishes.yml | 16 + .../20210216180506_status_page_projects.yml | 16 + .../20210216180507_status_page_issues.yml | 16 + ...180517_projects_with_error_tracking_enabled.yml | 16 + .../20210216180518_projects_with_incidents.yml | 16 + ...0210216180520_projects_with_alert_incidents.yml | 16 + ...0210216180522_projects_incident_sla_enabled.yml | 16 + ...0210216180628_projects_imported_from_github.yml | 16 + ...0210216180630_projects_imported_from_github.yml | 16 + .../20210216180632_unique_users_all_imports.yml | 16 + .../metrics/counts_all/20210216180634_gitlab.yml | 17 + .../counts_all/20210216180636_gitlab_v1.yml | 16 + .../counts_all/20210216180638_gitlab_project.yml | 16 + .../metrics/counts_all/20210216180639_gitlab.yml | 16 + .../metrics/counts_all/20210216180641_github.yml | 16 + .../counts_all/20210216180643_bitbucket.yml | 16 + .../counts_all/20210216180645_bitbucket_server.yml | 16 + config/metrics/counts_all/20210216180647_gitea.yml | 16 + config/metrics/counts_all/20210216180649_git.yml | 16 + .../metrics/counts_all/20210216180650_manifest.yml | 16 + .../counts_all/20210216180652_gitlab_migration.yml | 16 + config/metrics/counts_all/20210216180654_jira.yml | 16 + .../metrics/counts_all/20210216180656_fogbugz.yml | 16 + .../counts_all/20210216180658_phabricator.yml | 16 + config/metrics/counts_all/20210216180700_csv.yml | 16 + .../counts_all/20210216180702_group_import.yml | 16 + .../counts_all/20210216180703_gitlab_migration.yml | 16 + config/metrics/counts_all/20210216180705_total.yml | 16 + .../counts_all/20210216180707_gitlab_project.yml | 16 + .../metrics/counts_all/20210216180709_gitlab.yml | 16 + .../metrics/counts_all/20210216180711_github.yml | 16 + .../counts_all/20210216180713_bitbucket.yml | 16 + .../counts_all/20210216180715_bitbucket_server.yml | 16 + config/metrics/counts_all/20210216180716_gitea.yml | 16 + config/metrics/counts_all/20210216180718_git.yml | 16 + .../metrics/counts_all/20210216180720_manifest.yml | 16 + config/metrics/counts_all/20210216180722_jira.yml | 16 + .../metrics/counts_all/20210216180724_fogbugz.yml | 16 + .../counts_all/20210216180726_phabricator.yml | 16 + config/metrics/counts_all/20210216180727_csv.yml | 17 + .../counts_all/20210216180729_groups_imported.yml | 16 + .../20210216180734_wiki_pages_create.yml | 16 + .../20210216180736_wiki_pages_update.yml | 16 + .../20210216180738_wiki_pages_delete.yml | 16 + ...0216180740_design_management_designs_create.yml | 16 + ...0216180741_design_management_designs_update.yml | 16 + ...0216180743_design_management_designs_delete.yml | 16 + .../metrics/counts_all/20210216180750_groups.yml | 19 + config/metrics/counts_all/20210216180752_keys.yml | 16 + .../metrics/counts_all/20210216180754_events.yml | 17 + .../metrics/counts_all/20210216180756_groups.yml | 16 + .../counts_all/20210216180758_users_created.yml | 16 + .../counts_all/20210216180800_ldap_keys.yml | 16 + .../counts_all/20210216180801_ldap_users.yml | 16 + .../metrics/counts_all/20210216180843_provider.yml | 19 + .../metrics/counts_all/20210216180852_provider.yml | 19 + .../metrics/counts_all/20210216180902_provider.yml | 19 + .../metrics/counts_all/20210216180903_enabled.yml | 19 + .../metrics/counts_all/20210216180911_provider.yml | 19 + .../metrics/counts_all/20210216180920_provider.yml | 19 + .../counts_all/20210216180922_duration_s.yml | 19 + .../metrics/counts_all/20210216180924_failures.yml | 19 + .../20210216180927_grafana_integrated_projects.yml | 16 + ...0210216180929_projects_with_tracing_enabled.yml | 16 + .../20210216180931_projects_prometheus_active.yml | 19 + .../20210216180933_groups_prometheus_active.yml | 19 + .../20210216180934_templates_prometheus_active.yml | 19 + .../20210216180936_instances_prometheus_active.yml | 19 + ...80938_projects_inheriting_prometheus_active.yml | 19 + ...6180940_groups_inheriting_prometheus_active.yml | 19 + ...0942_operations_dashboard_default_dashboard.yml | 16 + ...rations_dashboard_users_with_projects_added.yml | 16 + .../metrics/counts_all/20210216180945_clusters.yml | 16 + ...0216180947_clusters_applications_prometheus.yml | 16 + ...0949_operations_dashboard_default_dashboard.yml | 16 + ...0210216180951_projects_with_tracing_enabled.yml | 16 + ...rations_dashboard_users_with_projects_added.yml | 16 + .../counts_all/20210216181009_lfs_objects.yml | 16 + .../20210216181011_projects_with_packages.yml | 17 + .../metrics/counts_all/20210216181012_packages.yml | 16 + ...14_projects_with_expiration_policy_disabled.yml | 16 + ...016_projects_with_expiration_policy_enabled.yml | 16 + ...ation_policy_enabled_with_cadence_set_to_1d.yml | 16 + ...ation_policy_enabled_with_cadence_set_to_7d.yml | 16 + ...tion_policy_enabled_with_cadence_set_to_14d.yml | 16 + ...n_policy_enabled_with_cadence_set_to_1month.yml | 16 + ...n_policy_enabled_with_cadence_set_to_3month.yml | 16 + ...on_policy_enabled_with_older_than_set_to_7d.yml | 16 + ...n_policy_enabled_with_older_than_set_to_14d.yml | 16 + ...n_policy_enabled_with_older_than_set_to_30d.yml | 16 + ...n_policy_enabled_with_older_than_set_to_90d.yml | 16 + ...ration_policy_enabled_with_older_than_unset.yml | 16 + .../metrics/counts_all/20210216181051_vendor.yml | 17 + .../20210216181055_projects_with_packages.yml | 16 + .../metrics/counts_all/20210216181102_issues.yml | 19 + .../counts_all/20210216181104_label_lists.yml | 16 + .../counts_all/20210216181106_milestone_lists.yml | 16 + .../counts_all/20210216181108_milestones.yml | 16 + .../metrics/counts_all/20210216181109_uploads.yml | 19 + .../metrics/counts_all/20210216181111_labels.yml | 19 + config/metrics/counts_all/20210216181113_notes.yml | 19 + .../metrics/counts_all/20210216181115_issues.yml | 16 + config/metrics/counts_all/20210216181117_notes.yml | 16 + .../metrics/counts_all/20210216181119_projects.yml | 16 + config/metrics/counts_all/20210216181121_todos.yml | 16 + ...0210216181122_service_desk_enabled_projects.yml | 17 + .../20210216181124_service_desk_issues.yml | 17 + .../20210216181126_projects_jira_active.yml | 16 + ...10216181128_projects_jira_dvcs_cloud_active.yml | 16 + ...0216181130_projects_jira_dvcs_server_active.yml | 16 + config/metrics/counts_all/20210216181134_epics.yml | 16 + .../counts_all/20210216181135_label_lists.yml | 16 + .../counts_all/20210216181137_milestone_lists.yml | 16 + .../20210216181205_confidential_epics.yml | 16 + config/metrics/counts_all/20210216181206_epics.yml | 16 + .../20210216181210_issues_with_health_status.yml | 16 + .../counts_all/20210216181249_feature_flags.yml | 16 + .../metrics/counts_all/20210216181252_boards.yml | 16 + .../metrics/counts_all/20210216181254_projects.yml | 16 + config/metrics/counts_all/20210216181256_todos.yml | 19 + ...216181258_jira_imports_total_imported_count.yml | 19 + .../20210216181259_jira_imports_projects_count.yml | 19 + ...01_jira_imports_total_imported_issues_count.yml | 19 + .../counts_all/20210216181908_deploy_keys.yml | 16 + .../20210216181911_successful_deployments.yml | 16 + .../20210216181912_failed_deployments.yml | 16 + .../counts_all/20210216181914_environments.yml | 16 + .../counts_all/20210216181916_in_review_folder.yml | 16 + .../metrics/counts_all/20210216181918_releases.yml | 16 + ...20_projects_mirrored_with_pipelines_enabled.yml | 16 + .../counts_all/20210216181926_deployments.yml | 16 + .../20210216181928_failed_deployments.yml | 16 + .../metrics/counts_all/20210216181930_releases.yml | 16 + .../20210216181932_successful_deployments.yml | 16 + ...34_projects_mirrored_with_pipelines_enabled.yml | 16 + .../counts_all/20210216181946_pages_domains.yml | 16 + ...20210216181949_clusters_applications_runner.yml | 19 + ...81954_user_unique_users_all_secure_scanners.yml | 16 + ...16181959_projects_with_repositories_enabled.yml | 16 + .../20210216182001_protected_branches.yml | 16 + .../counts_all/20210216182002_remote_mirrors.yml | 16 + .../counts_all/20210216182004_commit_comment.yml | 16 + .../20210216182006_source_code_pushes.yml | 16 + .../20210216182008_template_repositories.yml | 16 + .../counts_all/20210216182010_deploy_keys.yml | 16 + config/metrics/counts_all/20210216182012_keys.yml | 16 + ...able_overriding_approvers_per_merge_request.yml | 17 + ...able_overriding_approvers_per_merge_request.yml | 17 + .../counts_all/20210216182017_remote_mirrors.yml | 16 + ...2019_projects_enforcing_code_owner_approval.yml | 16 + ...21_projects_with_sectional_code_owner_rules.yml | 16 + ...16182023_projects_with_repositories_enabled.yml | 16 + .../20210216182025_protected_branches.yml | 16 + .../20210216182027_total_number_of_path_locks.yml | 16 + ...20210216182028_total_number_of_locked_files.yml | 16 + .../counts_all/20210216182112_sast_jobs.yml | 19 + .../20210216182114_secret_detection_jobs.yml | 19 + .../counts_all/20210216182116_user_sast_jobs.yml | 19 + .../20210216182118_user_secret_detection_jobs.yml | 19 + ...203_user_preferences_group_overview_details.yml | 18 + ...eferences_group_overview_security_dashboard.yml | 18 + ...eferences_group_overview_security_dashboard.yml | 17 + ...216182454_protected_branches_except_default.yml | 16 + .../20210216182547_projects_datadog_active.yml | 16 + .../20210216182549_groups_datadog_active.yml | 16 + .../20210216182551_templates_datadog_active.yml | 16 + .../20210216182553_instances_datadog_active.yml | 16 + ...16182555_projects_inheriting_datadog_active.yml | 16 + ...0216182557_groups_inheriting_datadog_active.yml | 16 + .../20210216182614_projects_ewm_active.yml | 16 + .../20210216182616_groups_ewm_active.yml | 16 + .../20210216182618_templates_ewm_active.yml | 16 + .../20210216182620_instances_ewm_active.yml | 16 + ...210216182622_projects_inheriting_ewm_active.yml | 16 + ...20210216182623_groups_inheriting_ewm_active.yml | 16 + .../20210216182722_projects_mock_ci_active.yml | 16 + .../20210216182724_groups_mock_ci_active.yml | 16 + .../20210216182726_templates_mock_ci_active.yml | 16 + .../20210216182728_instances_mock_ci_active.yml | 16 + ...16182730_projects_inheriting_mock_ci_active.yml | 16 + ...0216182732_groups_inheriting_mock_ci_active.yml | 16 + ...10216182734_projects_mock_monitoring_active.yml | 16 + ...0210216182736_groups_mock_monitoring_active.yml | 16 + ...0216182738_templates_mock_monitoring_active.yml | 16 + ...0216182739_instances_mock_monitoring_active.yml | 16 + ..._projects_inheriting_mock_monitoring_active.yml | 16 + ...43_groups_inheriting_mock_monitoring_active.yml | 16 + ...ge_events_i_package_composer_delete_package.yml | 16 + ...kage_events_i_package_composer_pull_package.yml | 16 + ...kage_events_i_package_composer_push_package.yml | 16 + ...ckage_events_i_package_conan_delete_package.yml | 16 + ...package_events_i_package_conan_pull_package.yml | 16 + ...package_events_i_package_conan_push_package.yml | 16 + ...e_events_i_package_container_delete_package.yml | 16 + ...age_events_i_package_container_pull_package.yml | 16 + ...age_events_i_package_container_push_package.yml | 16 + ...kage_events_i_package_debian_delete_package.yml | 16 + ...ackage_events_i_package_debian_pull_package.yml | 16 + ...ackage_events_i_package_debian_push_package.yml | 16 + ...919_package_events_i_package_delete_package.yml | 16 + ...ts_i_package_delete_package_by_deploy_token.yml | 16 + ...ge_events_i_package_delete_package_by_guest.yml | 16 + ...age_events_i_package_delete_package_by_user.yml | 16 + ...age_events_i_package_generic_delete_package.yml | 16 + ...ckage_events_i_package_generic_pull_package.yml | 16 + ...ckage_events_i_package_generic_push_package.yml | 16 + ...kage_events_i_package_golang_delete_package.yml | 16 + ...ackage_events_i_package_golang_pull_package.yml | 16 + ...ackage_events_i_package_golang_push_package.yml | 16 + ...ckage_events_i_package_maven_delete_package.yml | 16 + ...package_events_i_package_maven_pull_package.yml | 16 + ...package_events_i_package_maven_push_package.yml | 16 + ...package_events_i_package_npm_delete_package.yml | 16 + ...6_package_events_i_package_npm_pull_package.yml | 16 + ...8_package_events_i_package_npm_push_package.yml | 16 + ...ckage_events_i_package_nuget_delete_package.yml | 16 + ...package_events_i_package_nuget_pull_package.yml | 16 + ...package_events_i_package_nuget_push_package.yml | 16 + ...82956_package_events_i_package_pull_package.yml | 16 + ...ents_i_package_pull_package_by_deploy_token.yml | 16 + ...kage_events_i_package_pull_package_by_guest.yml | 16 + ...ckage_events_i_package_pull_package_by_user.yml | 16 + ...83004_package_events_i_package_push_package.yml | 16 + ...ents_i_package_push_package_by_deploy_token.yml | 16 + ...kage_events_i_package_push_package_by_guest.yml | 16 + ...ckage_events_i_package_push_package_by_user.yml | 16 + ...ackage_events_i_package_pypi_delete_package.yml | 16 + ..._package_events_i_package_pypi_pull_package.yml | 16 + ..._package_events_i_package_pypi_push_package.yml | 16 + ...package_events_i_package_tag_delete_package.yml | 16 + ...9_package_events_i_package_tag_pull_package.yml | 16 + ...1_package_events_i_package_tag_push_package.yml | 16 + .../counts_all/20210216183023_wiki_pages_view.yml | 16 + .../20210216183146_coverage_fuzzing_jobs.yml | 16 + .../20210216183149_dast_on_demand_pipelines.yml | 16 + .../counts_all/20210216183241_filesystems.yml | 16 + .../counts_all/20210216183248_pg_system_id.yml | 16 + ...erge_requests_with_overridden_project_rules.yml | 16 + .../20210216183344_users_using_path_locks.yml | 16 + .../20210216183346_users_using_lfs_locks.yml | 16 + ...ect_rules_with_more_approvers_than_required.yml | 16 + ...ect_rules_with_less_approvers_than_required.yml | 16 + ...project_rules_with_exact_required_approvers.yml | 16 + .../20210216183400_omniauth_providers.yml | 16 + .../counts_all/20210216183402_two-factor.yml | 16 + .../20210216183404_two-factor-via-u2f-device.yml | 16 + ...210216183406_two-factor-via-webauthn-device.yml | 16 + .../metrics/counts_all/20210216183408_standard.yml | 16 + .../counts_all/20210216183410_google_oauth2.yml | 16 + .../20210216183514_user_coverage_fuzzing_jobs.yml | 16 + .../20210216183904_g_compliance_dashboard.yml | 16 + .../20210216183906_g_compliance_audit_events.yml | 16 + .../20210216183908_i_compliance_audit_events.yml | 16 + ...216183910_i_compliance_credential_inventory.yml | 16 + ...0210216183912_a_compliance_audit_events_api.yml | 16 + ...914_compliance_unique_visits_for_any_target.yml | 16 + .../metrics/license/20210201124932_recorded_at.yml | 2 +- config/metrics/license/20210201124933_uuid.yml | 2 +- .../20210204124854_license_management_jobs.yml | 3 +- .../20210204124926_license_trial_ends_on.yml | 6 +- config/metrics/license/20210204124928_version.yml | 6 +- config/metrics/license/20210204124936_version.yml | 6 +- .../20210204124938_recording_ce_finished_at.yml | 3 +- config/metrics/license/20210216175601_version.yml | 19 + .../license/20210216175602_installation_type.yml | 19 + config/metrics/license/20210216175604_edition.yml | 19 + config/metrics/license/20210216175609_version.yml | 16 + config/metrics/license/20210216181053_version.yml | 16 + config/metrics/license/20210216183237_version.yml | 16 + config/metrics/schema.json | 10 +- ...20210204124856_instance_auto_devops_enabled.yml | 6 +- .../20210204124858_container_registry_enabled.yml | 6 +- .../20210204124900_dependency_proxy_enabled.yml | 6 +- ...0210204124902_gitlab_shared_runners_enabled.yml | 6 +- .../settings/20210204124904_gravatar_enabled.yml | 6 +- .../settings/20210204124906_ldap_enabled.yml | 6 +- .../settings/20210204124908_mattermost_enabled.yml | 6 +- .../settings/20210204124910_omniauth_enabled.yml | 6 +- .../settings/20210204124912_prometheus_enabled.yml | 6 +- .../20210204124914_prometheus_metrics_enabled.yml | 6 +- .../20210204124916_reply_by_email_enabled.yml | 6 +- .../settings/20210204124918_signup_enabled.yml | 6 +- ...04124920_web_ide_clientside_preview_enabled.yml | 6 +- .../20210204124922_grafana_link_enabled.yml | 6 +- .../20210204124924_elasticsearch_enabled.yml | 14 - config/metrics/settings/20210204124934_enabled.yml | 6 +- .../20210216175459_ingress_modsecurity_enabled.yml | 19 + ...210216175606_ldap_encrypted_secrets_enabled.yml | 19 + .../settings/20210216180314_gitpod_enabled.yml | 19 + config/metrics/settings/20210216180836_enabled.yml | 19 + config/metrics/settings/20210216180838_enabled.yml | 19 + .../settings/20210216180840_direct_upload.yml | 19 + .../settings/20210216180841_background_upload.yml | 19 + config/metrics/settings/20210216180845_enabled.yml | 19 + config/metrics/settings/20210216180847_enabled.yml | 19 + .../settings/20210216180849_direct_upload.yml | 19 + .../settings/20210216180851_background_upload.yml | 20 + config/metrics/settings/20210216180854_enabled.yml | 19 + config/metrics/settings/20210216180856_enabled.yml | 19 + .../settings/20210216180858_direct_upload.yml | 19 + .../settings/20210216180900_background_upload.yml | 19 + config/metrics/settings/20210216180905_enabled.yml | 19 + .../settings/20210216180907_direct_upload.yml | 19 + .../settings/20210216180909_background_upload.yml | 19 + config/metrics/settings/20210216180913_enabled.yml | 19 + config/metrics/settings/20210216180915_enabled.yml | 19 + .../settings/20210216180916_direct_upload.yml | 19 + .../settings/20210216180918_background_upload.yml | 19 + .../settings/20210225045628_operating_system.yml | 20 + config/puma.example.development.rb | 2 +- config/puma.rb.example | 2 +- config/puma_actioncable.example.development.rb | 2 +- config/routes.rb | 25 +- config/routes/admin.rb | 3 +- config/routes/api.rb | 2 +- config/sidekiq_queues.yml | 24 + config/webpack.config.js | 65 +- config/webpack.vendor.config.js | 2 +- danger/changelog/Dangerfile | 6 +- danger/changes_size/Dangerfile | 4 +- danger/documentation/Dangerfile | 3 +- danger/feature_flag/Dangerfile | 2 +- danger/product_intelligence/Dangerfile | 49 +- db/fixtures/development/26_packages.rb | 6 +- db/fixtures/development/29_instance_statistics.rb | 39 - db/fixtures/development/29_usage_trends.rb | 40 + db/fixtures/development/30_composer_packages.rb | 8 +- ...816133024_add_cve_id_request_project_setting.rb | 13 + ...sue_email_participants_on_issue_id_and_email.rb | 23 + .../20201228110136_create_iterations_cadence.rb | 29 + ...1228110238_add_iterations_cadence_to_sprints.rb | 22 + ...20210106191305_rename_indexes_on_git_lab_com.rb | 57 + ...add_iterations_cadence_date_range_constraint.rb | 30 + ...remove_iteration_group_date_range_constraint.rb | 30 + ..._create_background_migration_tracking_tables.rb | 59 + ...4649_add_active_periods_to_on_call_rotations.rb | 10 + ...0210205134213_add_creator_id_to_custom_emoji.rb | 23 + ..._add_issue_created_at_to_onboarding_progress.rb | 9 + ...210208200914_add_ends_at_to_oncall_rotations.rb | 9 + ...0210209110019_create_external_approval_rules.rb | 44 + ...kdown_surround_selection_to_user_preferences.rb | 21 + ...the_geo_oauth_application_trusted_by_default.rb | 20 + ...n_pipeline_succeeds_to_notification_settings.rb | 12 + ...elayed_project_removal_to_namespace_settings.rb | 9 + ..._index_to_namespaces_delayed_project_removal.rb | 18 + ..._in_product_marketing_emails_enabled_setting.rb | 9 + ...10216193620_add_description_to_cluster_token.rb | 21 + ...sues_where_service_desk_reply_to_is_not_null.rb | 21 + ...0217101901_create_epic_list_user_preferences.rb | 20 + ...814_add_environment_scope_to_group_variables.rb | 45 + ...210218142626_change_finding_fingerprint_enum.rb | 15 + ...sprints_start_date_not_null_check_constraint.rb | 17 + ...d_sprints_due_date_not_null_check_constraint.rb | 17 + ...0137_add_creator_foreign_key_to_custom_emoji.rb | 23 + ...0210219111040_add_epic_issue_composite_index.rb | 18 + ...2030537_add_is_removed_to_oncall_participant.rb | 19 + ...5_add_is_removed_index_to_oncall_participant.rb | 21 + ...356_add_storage_size_to_namespace_statistics.rb | 19 + ...070413_add_wiki_size_to_namespace_statistics.rb | 19 + ...85529_add_epic_board_user_preference_user_fk.rb | 19 + ..._add_epic_board_user_preference_epic_list_fk.rb | 19 + ...22105120_add_container_registry_access_level.rb | 25 + ...210223053451_add_branch_name_to_dast_profile.rb | 23 + ...4_add_foreign_key_to_external_approval_rules.rb | 18 + ...o_external_approval_rules_protected_branches.rb | 18 + ..._add_null_constraint_to_terraform_state_name.rb | 11 + ...133337_add_name_field_to_cluster_agent_token.rb | 12 + .../20210225090801_create_dora_daily_metrics.rb | 31 + .../20210225135533_limit_cluster_token_size.rb | 17 + ...2_add_allow_force_push_to_protected_branches.rb | 19 + .../20210301150451_add_tier_to_environments.rb | 19 + ...sset_proxy_allowlist_on_application_settings.rb | 8 + ...eployment_id_index_to_project_pages_metadata.rb | 19 + ...move_index_for_security_orchestration_policy.rb | 18 + ...4_add_index_to_security_orchestration_policy.rb | 18 + ...10302212623_rename_vuln_fingerprints_indexes.rb | 35 + ...ast_edited_at_and_last_edited_by_id_to_notes.rb | 19 + ...0210303091651_add_index_to_environments_tier.rb | 19 + ...03165201_add_index_for_succeeded_deployments.rb | 18 + ...dd_not_null_constraint_to_cluster_token_name.rb | 18 + ...rraform_states_locked_by_user_id_foreign_key.rb | 29 + ...imit_to_group_ci_variables_environment_scope.rb | 17 + .../20210306121300_partition_web_hook_logs.rb | 19 + ...42_add_info_column_into_security_scans_table.rb | 9 + ...ckground_migrations_batch_class_name_default.rb | 10 + ...1019_add_last_used_at_to_cluster_agent_token.rb | 9 + ...e_request_assignees_migration_progress_check.rb | 18 - ...alculate_uuid_on_vulnerabilities_occurrences.rb | 37 + ...3921_schedule_set_default_iteration_cadences.rb | 26 + ...oxy_whitelist_rename_on_application_settings.rb | 10 +- ...hedule_uuid_population_for_security_findings.rb | 8 +- ...edule_uuid_population_for_security_findings2.rb | 34 + ...ill_updated_at_after_repository_storage_move.rb | 6 +- ...cts_with_bad_has_external_issue_tracker_data.rb | 84 + ...emoval_from_namespaces_to_namespace_settings.rb | 28 + ...215144909_migrate_usage_trends_sidekiq_queue.rb | 19 + ...ease_evidence_queue_out_of_cronjob_namespace.rb | 16 + ...18105431_remove_deprecated_ci_builds_columns.rb | 36 + ...218110552_remove_deprecated_ci_runner_column.rb | 22 + ...00_reschedule_set_default_iteration_cadences.rb | 30 + ...0222185538_remove_backup_labels_foreign_keys.rb | 21 + .../20210222192144_remove_backup_labels_table.rb | 36 + ...24150506_reschedule_artifact_expiry_backfill.rb | 44 + ...backfill_namespace_statistics_with_wiki_size.rb | 29 + ...traints_to_gitlab_subscriptions_namespace_id.rb | 19 + ..._gitlab_subscriptions_with_null_namespace_id.rb | 24 + ...165302_cleanup_cluster_tokens_with_null_name.rb | 25 + ...e_remove_duplicate_vulnerabilities_findings2.rb | 32 + ...306121310_backfill_partitioned_web_hook_logs.rb | 17 + db/schema_migrations/20190402224749 | 1 - db/schema_migrations/20200816133024 | 1 + db/schema_migrations/20201112130715 | 1 + db/schema_migrations/20201209163113 | 1 + db/schema_migrations/20201228110136 | 1 + db/schema_migrations/20201228110238 | 1 + db/schema_migrations/20201231133921 | 1 + db/schema_migrations/20210106191305 | 1 + db/schema_migrations/20210111075206 | 1 + db/schema_migrations/20210127152613 | 1 + db/schema_migrations/20210127202613 | 1 + db/schema_migrations/20210128172149 | 1 + db/schema_migrations/20210201034649 | 1 + db/schema_migrations/20210205134213 | 1 + db/schema_migrations/20210208103243 | 1 + db/schema_migrations/20210208200914 | 1 + db/schema_migrations/20210209110019 | 1 + db/schema_migrations/20210209232508 | 1 + db/schema_migrations/20210210221006 | 1 + db/schema_migrations/20210212153934 | 1 + db/schema_migrations/20210212163231 | 1 + db/schema_migrations/20210214201118 | 1 + db/schema_migrations/20210214205155 | 1 + db/schema_migrations/20210215095328 | 1 + db/schema_migrations/20210215144909 | 1 + db/schema_migrations/20210216122140 | 1 + db/schema_migrations/20210216193620 | 1 + db/schema_migrations/20210216223335 | 1 + db/schema_migrations/20210217100728 | 1 + db/schema_migrations/20210217101901 | 1 + db/schema_migrations/20210218040814 | 1 + db/schema_migrations/20210218105431 | 1 + db/schema_migrations/20210218110552 | 1 + db/schema_migrations/20210218142626 | 1 + db/schema_migrations/20210218144056 | 1 + db/schema_migrations/20210218144656 | 1 + db/schema_migrations/20210219100137 | 1 + db/schema_migrations/20210219102900 | 1 + db/schema_migrations/20210219111040 | 1 + db/schema_migrations/20210222030537 | 1 + db/schema_migrations/20210222042745 | 1 + db/schema_migrations/20210222070356 | 1 + db/schema_migrations/20210222070413 | 1 + db/schema_migrations/20210222085529 | 1 + db/schema_migrations/20210222085551 | 1 + db/schema_migrations/20210222105120 | 1 + db/schema_migrations/20210222185538 | 1 + db/schema_migrations/20210222192144 | 1 + db/schema_migrations/20210223053451 | 1 + db/schema_migrations/20210223132934 | 1 + db/schema_migrations/20210223133116 | 1 + db/schema_migrations/20210224132547 | 1 + db/schema_migrations/20210224133337 | 1 + db/schema_migrations/20210224150506 | 1 + db/schema_migrations/20210225090801 | 1 + db/schema_migrations/20210225135533 | 1 + db/schema_migrations/20210225153522 | 1 + db/schema_migrations/20210301150451 | 1 + db/schema_migrations/20210302074524 | 1 + db/schema_migrations/20210302103851 | 1 + db/schema_migrations/20210302155904 | 1 + db/schema_migrations/20210302160544 | 1 + db/schema_migrations/20210302212623 | 1 + db/schema_migrations/20210303053341 | 1 + db/schema_migrations/20210303064112 | 1 + db/schema_migrations/20210303064142 | 1 + db/schema_migrations/20210303091651 | 1 + db/schema_migrations/20210303165201 | 1 + db/schema_migrations/20210303165301 | 1 + db/schema_migrations/20210303165302 | 1 + db/schema_migrations/20210304133508 | 1 + db/schema_migrations/20210305002016 | 1 + db/schema_migrations/20210305013509 | 1 + db/schema_migrations/20210306121300 | 1 + db/schema_migrations/20210306121310 | 1 + db/schema_migrations/20210308125742 | 1 + db/schema_migrations/20210308190413 | 1 + db/schema_migrations/20210309181019 | 1 + db/structure.sql | 468 +- doc/.vale/gitlab/Admin.yml | 2 +- doc/.vale/gitlab/AlertBoxStyle.yml | 2 +- doc/.vale/gitlab/BadgeCapitalization.yml | 33 +- doc/.vale/gitlab/DefaultBranch.yml | 14 + doc/.vale/gitlab/RelativeLinksDoubleSlashes.yml | 13 + doc/.vale/gitlab/SubstitutionSuggestions.yml | 1 + doc/.vale/gitlab/spelling-exceptions.txt | 31 + doc/README.md | 2 +- doc/administration/audit_events.md | 2 +- doc/administration/auth/img/okta_admin_panel.png | Bin 26164 -> 0 bytes doc/administration/auth/ldap/google_secure_ldap.md | 2 +- doc/administration/auth/ldap/index.md | 17 +- .../auth/ldap/ldap-troubleshooting.md | 6 +- doc/administration/compliance.md | 2 +- doc/administration/consul.md | 2 +- doc/administration/feature_flags.md | 2 +- .../disaster_recovery/background_verification.md | 10 +- .../geo/disaster_recovery/planned_failover.md | 2 +- doc/administration/geo/glossary.md | 2 +- .../geo/replication/configuration.md | 2 +- doc/administration/geo/replication/datatypes.md | 26 +- .../geo/replication/location_aware_git_url.md | 4 +- .../geo/replication/remove_geo_node.md | 2 +- .../geo/replication/troubleshooting.md | 2 +- .../geo/replication/version_specific_updates.md | 8 + doc/administration/geo/setup/database.md | 2 +- doc/administration/geo/setup/external_database.md | 2 +- doc/administration/gitaly/configure_gitaly.md | 943 + .../gitaly/img/gitaly_network_13_9.png | Bin 0 -> 9791 bytes doc/administration/gitaly/index.md | 935 +- doc/administration/gitaly/praefect.md | 4 +- doc/administration/gitaly/reference.md | 2 +- doc/administration/index.md | 4 +- doc/administration/instance_limits.md | 4 +- doc/administration/integration/kroki.md | 2 +- doc/administration/integration/plantuml.md | 297 +- doc/administration/integration/terminal.md | 2 +- doc/administration/invalidate_markdown_cache.md | 4 +- doc/administration/issue_closing_pattern.md | 6 +- doc/administration/logs.md | 8 +- doc/administration/maintenance_mode/index.md | 2 +- .../gitlab_self_monitoring_project/index.md | 4 +- doc/administration/monitoring/index.md | 22 +- .../monitoring/performance/gitlab_configuration.md | 2 +- .../performance/grafana_configuration.md | 2 +- .../monitoring/performance/performance_bar.md | 6 +- .../monitoring/performance/request_profiling.md | 2 +- .../monitoring/prometheus/gitlab_metrics.md | 190 +- doc/administration/nfs.md | 23 +- doc/administration/object_storage.md | 16 +- .../operations/fast_ssh_key_lookup.md | 5 - .../operations/moving_repositories.md | 2 +- doc/administration/operations/rails_console.md | 20 + doc/administration/packages/container_registry.md | 98 +- doc/administration/packages/dependency_proxy.md | 4 + doc/administration/packages/index.md | 4 +- doc/administration/pages/index.md | 202 +- .../postgresql/replication_and_failover.md | 7 +- doc/administration/pseudonymizer.md | 4 +- doc/administration/raketasks/check.md | 6 + doc/administration/raketasks/github_import.md | 4 +- doc/administration/raketasks/maintenance.md | 7 +- .../reference_architectures/10k_users.md | 81 +- .../reference_architectures/25k_users.md | 886 +- .../reference_architectures/2k_users.md | 39 +- .../reference_architectures/3k_users.md | 863 +- .../reference_architectures/50k_users.md | 900 +- .../reference_architectures/5k_users.md | 841 +- .../reference_architectures/index.md | 4 +- .../reference_architectures/troubleshooting.md | 4 +- doc/administration/repository_checks.md | 2 +- doc/administration/repository_storage_paths.md | 38 +- doc/administration/repository_storage_types.md | 266 +- doc/administration/server_hooks.md | 12 +- .../static_objects_external_storage.md | 4 +- doc/administration/terraform_state.md | 29 +- doc/administration/troubleshooting/debug.md | 6 +- .../troubleshooting/elasticsearch.md | 23 +- .../troubleshooting/gitlab_rails_cheat_sheet.md | 61 + doc/administration/troubleshooting/log_parsing.md | 14 + doc/administration/uploads.md | 2 +- doc/api/README.md | 16 +- doc/api/api_resources.md | 2 + doc/api/branches.md | 4 +- doc/api/commits.md | 28 +- doc/api/deployments.md | 4 +- doc/api/discussions.md | 23 +- doc/api/dora4_group_analytics.md | 6 +- doc/api/dora4_project_analytics.md | 2 +- doc/api/feature_flags.md | 2 +- doc/api/geo_nodes.md | 14 +- doc/api/graphql/index.md | 52 +- doc/api/graphql/reference/gitlab_schema.graphql | 29539 ------- doc/api/graphql/reference/gitlab_schema.json | 85944 ------------------- doc/api/graphql/reference/index.md | 1994 +- doc/api/graphql/removed_items.md | 2 +- doc/api/group_repository_storage_moves.md | 4 +- doc/api/groups.md | 2 +- doc/api/invitations.md | 32 +- doc/api/issues.md | 2 +- doc/api/jobs.md | 70 + doc/api/members.md | 23 + doc/api/merge_request_approvals.md | 132 +- doc/api/merge_request_context_commits.md | 2 +- doc/api/merge_requests.md | 15 +- doc/api/merge_trains.md | 2 +- doc/api/notification_settings.md | 3 + doc/api/oauth2.md | 21 +- doc/api/openapi/openapi_interactive.md | 2 +- doc/api/plan_limits.md | 81 + doc/api/project_badges.md | 12 +- doc/api/project_import_export.md | 10 +- doc/api/project_repository_storage_moves.md | 4 +- doc/api/project_snippets.md | 2 +- doc/api/project_templates.md | 6 +- doc/api/project_vulnerabilities.md | 8 +- doc/api/projects.md | 91 +- doc/api/protected_branches.md | 23 +- doc/api/releases/index.md | 6 +- doc/api/remote_mirrors.md | 4 +- doc/api/repositories.md | 88 +- doc/api/repository_submodules.md | 2 +- doc/api/resource_access_tokens.md | 3 +- doc/api/search.md | 30 +- doc/api/services.md | 2 +- doc/api/settings.md | 9 +- doc/api/snippet_repository_storage_moves.md | 4 +- doc/api/snippets.md | 12 +- doc/api/tags.md | 7 +- doc/api/users.md | 31 +- doc/api/vulnerability_findings.md | 2 - doc/api/wikis.md | 2 +- .../container_registry_metadata_database/index.md | 359 + doc/ci/README.md | 3 + .../ci_cd_for_external_repos/github_integration.md | 2 +- doc/ci/cloud_deployment/ecs/img/container-name.png | Bin 0 -> 8813 bytes .../ecs/img/container-port-mapping.png | Bin 0 -> 8994 bytes .../cloud_deployment/ecs/img/ecs-launch-status.png | Bin 0 -> 13587 bytes doc/ci/cloud_deployment/ecs/img/ecs-policy.png | Bin 0 -> 10342 bytes .../ecs/img/ecs-task-definitions.png | Bin 0 -> 10367 bytes .../cloud_deployment/ecs/img/initial-pipeline.png | Bin 0 -> 8114 bytes doc/ci/cloud_deployment/ecs/img/rails-template.png | Bin 0 -> 13497 bytes doc/ci/cloud_deployment/ecs/img/registry.png | Bin 0 -> 5647 bytes .../cloud_deployment/ecs/img/service-parameter.png | Bin 0 -> 8170 bytes .../cloud_deployment/ecs/img/service-running.png | Bin 0 -> 5207 bytes .../ecs/img/view-running-app-2.png | Bin 0 -> 5082 bytes .../cloud_deployment/ecs/img/view-running-app.png | Bin 0 -> 5181 bytes doc/ci/cloud_deployment/ecs/quick_start_guide.md | 250 + doc/ci/cloud_deployment/index.md | 9 +- doc/ci/docker/index.md | 19 +- doc/ci/docker/using_docker_build.md | 101 +- doc/ci/docker/using_docker_images.md | 30 +- doc/ci/docker/using_kaniko.md | 2 +- doc/ci/environments/deployment_safety.md | 8 +- doc/ci/environments/img/deployments_list.png | Bin 0 -> 18119 bytes .../img/environment_auto_stop_v13_10.png | Bin 0 -> 53602 bytes .../img/environments_dynamic_groups_v13_10.png | Bin 0 -> 57387 bytes doc/ci/environments/img/environments_list.png | Bin 0 -> 17379 bytes ...nvironments_terminal_button_on_index_v13_10.png | Bin 0 -> 42113 bytes ...environments_terminal_button_on_show_v13_10.png | Bin 0 -> 53590 bytes doc/ci/environments/index.md | 848 +- doc/ci/environments/protected_environments.md | 16 +- doc/ci/examples/README.md | 6 +- .../authenticating-with-hashicorp-vault/index.md | 6 +- doc/ci/examples/deployment/README.md | 4 +- doc/ci/examples/deployment/composer-npm-deploy.md | 2 +- .../end_to_end_testing_webdriverio/index.md | 22 +- .../laravel_with_gitlab_and_envoy/index.md | 4 +- doc/ci/examples/semantic-release.md | 4 +- ...test-and-deploy-python-application-to-heroku.md | 101 +- .../test-and-deploy-ruby-application-to-heroku.md | 97 +- doc/ci/examples/test-clojure-application.md | 46 +- doc/ci/git_submodules.md | 96 +- doc/ci/img/deployments_view.png | Bin 23501 -> 12385 bytes doc/ci/img/environment_auto_stop_v12_8.png | Bin 16587 -> 0 bytes doc/ci/img/environments_available_13_10.png | Bin 0 -> 13245 bytes doc/ci/img/environments_available_13_7.png | Bin 29124 -> 0 bytes doc/ci/img/environments_dynamic_groups.png | Bin 21902 -> 0 bytes .../img/environments_manual_action_deployments.png | Bin 12635 -> 0 bytes .../environments_manual_action_environments.png | Bin 9485 -> 0 bytes doc/ci/img/environments_manual_action_jobs.png | Bin 8446 -> 0 bytes .../img/environments_manual_action_pipelines.png | Bin 14979 -> 0 bytes .../environments_manual_action_single_pipeline.png | Bin 10273 -> 0 bytes .../img/environments_terminal_button_on_index.png | Bin 11080 -> 0 bytes .../img/environments_terminal_button_on_show.png | Bin 7642 -> 0 bytes doc/ci/jobs/index.md | 4 +- doc/ci/merge_request_pipelines/index.md | 2 +- .../pipelines_for_merged_results/index.md | 2 +- doc/ci/metrics_reports.md | 10 +- doc/ci/multi_project_pipelines.md | 2 +- doc/ci/pipeline_editor/index.md | 39 +- .../img/pipelines_settings_test_coverage.png | Bin 2549 -> 0 bytes doc/ci/pipelines/index.md | 8 +- doc/ci/pipelines/schedules.md | 2 +- doc/ci/pipelines/settings.md | 106 +- doc/ci/quick_start/index.md | 15 +- doc/ci/review_apps/index.md | 16 +- doc/ci/runners/README.md | 4 +- doc/ci/ssh_keys/index.md | 6 +- doc/ci/test_cases/img/test_case_list_v13_6.png | Bin 70726 -> 0 bytes doc/ci/test_cases/img/test_case_show_v13_10.png | Bin 0 -> 27067 bytes doc/ci/test_cases/img/test_case_show_v13_6.png | Bin 63772 -> 0 bytes doc/ci/test_cases/index.md | 12 +- doc/ci/triggers/README.md | 22 +- doc/ci/troubleshooting.md | 10 +- doc/ci/unit_test_reports.md | 6 +- doc/ci/variables/README.md | 4 +- doc/ci/variables/predefined_variables.md | 284 +- doc/ci/variables/where_variables_can_be_used.md | 1 + doc/ci/yaml/README.md | 1021 +- doc/ci/yaml/gitlab_ci_yaml.md | 3 +- doc/ci/yaml/script.md | 35 +- doc/development/README.md | 3 +- doc/development/agent/user_stories.md | 2 +- doc/development/api_graphql_styleguide.md | 54 +- doc/development/application_limits.md | 12 +- doc/development/appsec/index.md | 32 + doc/development/architecture.md | 18 +- doc/development/auto_devops.md | 6 +- doc/development/build_test_package.md | 4 +- doc/development/changelog.md | 5 +- doc/development/chatops_on_gitlabcom.md | 2 +- doc/development/cicd/templates.md | 6 +- doc/development/code_intelligence/index.md | 2 +- doc/development/code_review.md | 10 +- doc/development/contributing/issue_workflow.md | 2 +- .../contributing/merge_request_workflow.md | 5 +- doc/development/contributing/style_guides.md | 16 +- .../database/client_side_connection_pool.md | 2 +- doc/development/database/index.md | 1 + .../database/setting_multiple_values.md | 59 +- doc/development/database_query_comments.md | 17 +- doc/development/directory_structure.md | 58 + doc/development/distributed_tracing.md | 2 +- doc/development/documentation/feature_flags.md | 6 +- .../documentation/site_architecture/index.md | 4 +- .../site_architecture/release_process.md | 228 +- doc/development/documentation/styleguide.md | 8 - doc/development/documentation/styleguide/index.md | 37 +- doc/development/documentation/testing.md | 6 +- doc/development/elasticsearch.md | 105 +- .../experiment_guide/experimentation.md | 399 + .../experiment_guide/gitlab_experiment.md | 547 + doc/development/experiment_guide/index.md | 397 +- doc/development/export_csv.md | 2 +- doc/development/fe_guide/accessibility.md | 193 +- doc/development/fe_guide/architecture.md | 7 + doc/development/fe_guide/dark_mode.md | 4 +- doc/development/fe_guide/dependencies.md | 2 +- doc/development/fe_guide/editor_lite.md | 222 +- doc/development/fe_guide/graphql.md | 61 +- doc/development/fe_guide/index.md | 2 +- doc/development/fe_guide/security.md | 2 +- doc/development/fe_guide/style/html.md | 23 +- doc/development/fe_guide/style/index.md | 2 +- doc/development/fe_guide/style/javascript.md | 23 +- doc/development/fe_guide/style/scss.md | 12 +- doc/development/fe_guide/style/vue.md | 36 +- doc/development/fe_guide/tooling.md | 91 +- doc/development/fe_guide/vue.md | 8 +- doc/development/fe_guide/vuex.md | 11 +- doc/development/fe_guide/widgets.md | 143 + doc/development/feature_flags/controls.md | 18 +- doc/development/feature_flags/development.md | 594 +- doc/development/feature_flags/index.md | 657 +- doc/development/feature_flags/process.md | 177 +- doc/development/features_inside_dot_gitlab.md | 4 +- doc/development/gemfile.md | 55 + doc/development/git_object_deduplication.md | 5 +- doc/development/go_guide/index.md | 16 +- doc/development/graphql_guide/graphql_pro.md | 4 +- doc/development/graphql_guide/index.md | 2 +- doc/development/i18n/translation.md | 12 +- doc/development/image_scaling.md | 2 +- doc/development/integrations/jenkins.md | 58 +- doc/development/integrations/jira_connect.md | 2 +- doc/development/integrations/secure.md | 34 +- .../integrations/secure_partner_integration.md | 4 +- doc/development/internal_api.md | 16 +- doc/development/licensed_feature_availability.md | 10 +- doc/development/maintenance_mode.md | 2 +- .../merge_request_performance_guidelines.md | 2 +- doc/development/migration_style_guide.md | 33 +- doc/development/multi_version_compatibility.md | 2 +- doc/development/namespaces_storage_statistics.md | 6 +- .../new_fe_guide/development/components.md | 2 +- doc/development/new_fe_guide/tips.md | 8 +- doc/development/packages.md | 60 +- doc/development/performance.md | 111 +- doc/development/pipelines.md | 35 +- doc/development/product_analytics/usage_ping.md | 4 +- doc/development/prometheus.md | 8 - doc/development/query_performance.md | 4 +- doc/development/rake_tasks.md | 4 + doc/development/redis.md | 9 +- doc/development/secure_coding_guidelines.md | 2 +- doc/development/service_measurement.md | 2 +- doc/development/sidekiq_style_guide.md | 2 +- doc/development/snowplow.md | 7 +- doc/development/sql.md | 14 +- doc/development/testing_guide/best_practices.md | 16 +- .../testing_guide/end_to_end/best_practices.md | 6 +- .../end_to_end/dynamic_element_validation.md | 6 +- .../end_to_end/environment_selection.md | 2 +- .../testing_guide/end_to_end/feature_flags.md | 4 +- .../testing_guide/end_to_end/page_objects.md | 2 +- .../running_tests_that_require_special_setup.md | 2 +- .../testing_guide/end_to_end/style_guide.md | 2 +- doc/development/testing_guide/frontend_testing.md | 161 +- doc/development/testing_guide/review_apps.md | 4 +- doc/development/transient/prevention-patterns.md | 2 +- doc/development/usage_ping.md | 1189 +- doc/development/usage_ping/dictionary.md | 18124 +++- doc/development/usage_ping/index.md | 1337 + doc/development/usage_ping/metrics_dictionary.md | 33 +- .../usage_ping/product_intelligence_review.md | 80 + doc/development/wikis.md | 2 +- doc/gitlab-basics/create-branch.md | 2 +- doc/gitlab-basics/feature_branch_workflow.md | 2 +- doc/gitlab-basics/index.md | 6 +- doc/gitlab-basics/start-using-git.md | 61 +- doc/install/aws/index.md | 29 +- doc/install/azure/index.md | 6 +- doc/install/digitaloceandocker.md | 2 +- doc/install/docker.md | 2 +- doc/install/google_cloud_platform/index.md | 2 +- doc/install/index.md | 105 +- doc/install/installation.md | 15 +- doc/install/openshift_and_gitlab/index.md | 4 +- doc/install/postgresql_extensions.md | 10 +- doc/install/relative_url.md | 2 +- doc/install/requirements.md | 29 +- doc/integration/README.md | 5 +- doc/integration/akismet.md | 2 +- doc/integration/auth0.md | 2 +- doc/integration/azure.md | 106 +- doc/integration/bitbucket.md | 11 +- doc/integration/cas.md | 2 +- doc/integration/elasticsearch.md | 85 +- doc/integration/external-issue-tracker.md | 2 +- doc/integration/facebook.md | 2 +- doc/integration/github.md | 17 +- doc/integration/gitlab.md | 2 +- doc/integration/gitpod.md | 7 +- doc/integration/gmail_action_buttons_for_gitlab.md | 2 +- doc/integration/google.md | 2 +- .../img/oauth_provider_admin_application.png | Bin 17071 -> 0 bytes doc/integration/jenkins.md | 14 +- doc/integration/jenkins_deprecated.md | 4 +- doc/integration/oauth2_generic.md | 2 +- doc/integration/omniauth.md | 3 +- doc/integration/openid_connect_provider.md | 2 +- doc/integration/recaptcha.md | 2 +- doc/integration/salesforce.md | 2 +- doc/integration/saml.md | 20 +- doc/integration/shibboleth.md | 2 +- doc/integration/slash_commands.md | 2 +- doc/integration/trello_power_up.md | 2 +- doc/integration/twitter.md | 2 +- doc/intro/index.md | 2 +- doc/operations/feature_flags.md | 6 +- doc/operations/incident_management/incidents.md | 2 +- doc/operations/incident_management/integrations.md | 4 +- doc/operations/incident_management/paging.md | 12 +- doc/operations/incident_management/status_page.md | 2 +- doc/operations/metrics/dashboards/variables.md | 2 +- doc/operations/metrics/embed.md | 4 +- doc/raketasks/backup_restore.md | 6 +- doc/raketasks/index.md | 2 +- doc/security/README.md | 1 + doc/security/token_overview.md | 108 + doc/security/two_factor_authentication.md | 13 +- doc/ssh/README.md | 312 +- doc/subscriptions/bronze_starter.md | 15 +- doc/subscriptions/gitlab_com/index.md | 4 +- doc/topics/autodevops/customize.md | 66 +- .../autodevops/img/alexj_autodevops_min_v13_8.png | Bin 20836 -> 0 bytes .../autodevops/img/kai_autodevops_min_v13_8.png | Bin 39770 -> 0 bytes doc/topics/autodevops/index.md | 510 +- doc/topics/autodevops/quick_start_guide.md | 8 +- doc/topics/autodevops/requirements.md | 12 +- doc/topics/autodevops/stages.md | 108 +- doc/topics/autodevops/troubleshooting.md | 247 + .../upgrading_auto_deploy_dependencies.md | 10 +- doc/topics/autodevops/upgrading_postgresql.md | 4 +- doc/topics/git/cherry_picking.md | 53 + doc/topics/git/feature_branch_development.md | 6 +- doc/topics/git/how_to_install_git/index.md | 4 +- doc/topics/git/index.md | 8 +- doc/topics/git/lfs/index.md | 43 + .../numerous_undo_possibilities_in_git/index.md | 2 +- doc/topics/git/partial_clone.md | 14 +- doc/topics/git/tags.md | 41 + doc/topics/git/troubleshooting_git.md | 2 +- doc/topics/gitlab_flow.md | 2 +- doc/university/index.md | 6 +- .../training/gitlab_flow/feature_branches.png | Bin 6202 -> 0 bytes doc/university/training/index.md | 1 - doc/university/training/topics/cherry_picking.md | 36 +- doc/university/training/topics/tags.md | 52 +- doc/update/index.md | 70 +- doc/update/upgrading_from_ce_to_ee.md | 4 +- doc/update/upgrading_from_source.md | 163 +- doc/user/abuse_reports.md | 4 +- .../admin_area/analytics/img/cohorts_v13_9.png | Bin 62434 -> 0 bytes doc/user/admin_area/analytics/index.md | 1 - .../admin_area/analytics/instance_statistics.md | 8 - doc/user/admin_area/analytics/usage_trends.md | 19 - doc/user/admin_area/analytics/user_cohorts.md | 36 +- doc/user/admin_area/approving_users.md | 49 +- doc/user/admin_area/credentials_inventory.md | 44 +- doc/user/admin_area/img/cohorts_v13_9.png | Bin 0 -> 62434 bytes .../img/credentials_inventory_gpg_keys_v13_10.png | Bin 0 -> 62501 bytes .../img/credentials_inventory_v13_10.png | Bin 0 -> 100241 bytes .../admin_area/img/credentials_inventory_v13_4.png | Bin 28945 -> 0 bytes doc/user/admin_area/index.md | 24 +- doc/user/admin_area/license.md | 2 +- .../settings/account_and_limit_settings.md | 28 +- .../admin_area/settings/continuous_integration.md | 17 +- doc/user/admin_area/settings/index.md | 2 +- .../settings/instance_template_repository.md | 12 +- .../settings/project_integration_management.md | 2 +- .../settings/push_event_activities_limit.md | 2 +- .../admin_area/settings/sign_up_restrictions.md | 25 +- doc/user/admin_area/settings/usage_statistics.md | 2 +- .../settings/visibility_and_access_controls.md | 6 +- doc/user/admin_area/user_cohorts.md | 36 + .../img/mr_mean_time_to_merge_metric_v13_9.png | Bin 0 -> 12299 bytes doc/user/analytics/index.md | 2 +- doc/user/analytics/merge_request_analytics.md | 9 + ...pi_fuzzing_postman_collection_edit_variable.png | Bin 0 -> 22389 bytes ...i_fuzzing_postman_environment_edit_variable.png | Bin 0 -> 17801 bytes .../img/api_fuzzing_postman_request_edit.png | Bin 0 -> 21915 bytes doc/user/application_security/api_fuzzing/index.md | 196 +- .../application_security/configuration/index.md | 49 +- .../container_scanning/index.md | 6 +- .../application_security/coverage_fuzzing/index.md | 2 +- .../dast/img/dast_single_v13_0.png | Bin 135324 -> 0 bytes doc/user/application_security/dast/index.md | 229 +- .../dependency_scanning/index.md | 37 +- .../img/create_mr_from_vulnerability_v13_4.png | Bin 33743 -> 49215 bytes ...lnerability_page_merge_request_button_v13_1.png | Bin 15394 -> 0 bytes ...lnerability_related_issues_add_button_v13_2.png | Bin 33345 -> 0 bytes .../vulnerability_related_issues_remove_v13_2.gif | Bin 35842 -> 0 bytes doc/user/application_security/index.md | 171 +- .../offline_deployments/index.md | 4 +- doc/user/application_security/sast/index.md | 50 +- .../application_security/secret_detection/index.md | 11 +- .../img/pipeline_security_dashboard_v13_10.png | Bin 0 -> 80367 bytes .../security_dashboard/index.md | 20 +- .../threat_monitoring/index.md | 4 +- .../application_security/vulnerabilities/index.md | 33 +- .../project_security_dashboard_dismissal_v13_9.png | Bin 37066 -> 0 bytes ...ject_security_dashboard_status_change_v13_9.png | Bin 0 -> 41154 bytes .../vulnerability_details_create_issue_v13_7.png | Bin 31816 -> 0 bytes .../vulnerability_report/index.md | 149 +- doc/user/asciidoc.md | 6 +- doc/user/clusters/agent/index.md | 214 +- doc/user/clusters/applications.md | 27 +- doc/user/compliance/license_compliance/index.md | 13 +- doc/user/discussions/index.md | 204 +- doc/user/group/custom_project_templates.md | 4 +- doc/user/group/epics/index.md | 2 +- doc/user/group/epics/manage_epics.md | 5 +- doc/user/group/img/access_requests_management.png | Bin 22616 -> 0 bytes doc/user/group/img/add_new_members_v13_7.png | Bin 58897 -> 0 bytes doc/user/group/img/create_new_group_info.png | Bin 27101 -> 0 bytes .../img/create_new_project_from_group_v13_6.png | Bin 40062 -> 0 bytes .../group/img/group_activity_analytics_v12_10.png | Bin 56709 -> 0 bytes .../group/img/group_activity_analytics_v13_10.png | Bin 0 -> 12597 bytes .../group/img/group_file_template_dropdown.png | Bin 9516 -> 0 bytes .../img/group_members_filter_2fa_disabled_13_7.png | Bin 39226 -> 0 bytes .../img/group_members_filter_2fa_enabled_13_7.png | Bin 41497 -> 0 bytes .../group/img/group_members_filter_direct_13_7.png | Bin 40549 -> 0 bytes .../img/group_members_filter_inherited_13_7.png | Bin 43436 -> 0 bytes doc/user/group/img/group_members_search_13_7.png | Bin 28622 -> 0 bytes doc/user/group/img/group_members_sort_13_7.png | Bin 41897 -> 0 bytes doc/user/group/img/group_settings.png | Bin 51335 -> 0 bytes doc/user/group/img/groups.png | Bin 61507 -> 0 bytes doc/user/group/img/ldap_sync_cn_v13_1.png | Bin 38094 -> 0 bytes doc/user/group/img/ldap_sync_filter_v13_1.png | Bin 44302 -> 0 bytes doc/user/group/img/manual_permissions_v13_7.png | Bin 69289 -> 0 bytes doc/user/group/img/member_lock.png | Bin 3168 -> 0 bytes doc/user/group/img/new_group_from_groups.png | Bin 25256 -> 0 bytes doc/user/group/img/new_group_from_other_pages.png | Bin 21593 -> 0 bytes doc/user/group/img/request_access_button.png | Bin 36258 -> 0 bytes doc/user/group/img/select_group_dropdown.png | Bin 64359 -> 0 bytes doc/user/group/img/select_group_dropdown_13_10.png | Bin 0 -> 11986 bytes doc/user/group/img/share_with_group_lock.png | Bin 7493 -> 0 bytes .../group/img/withdraw_access_request_button.png | Bin 36782 -> 0 bytes doc/user/group/import/index.md | 38 +- doc/user/group/index.md | 854 +- doc/user/group/repositories_analytics/index.md | 3 + doc/user/group/roadmap/index.md | 2 +- doc/user/group/saml_sso/group_managed_accounts.md | 12 +- doc/user/group/saml_sso/index.md | 33 +- doc/user/group/saml_sso/scim_setup.md | 9 + doc/user/group/subgroups/index.md | 6 +- doc/user/img/gitlab_snippet_v13_0.png | Bin 28925 -> 0 bytes doc/user/img/gitlab_snippet_v13_5.png | Bin 20563 -> 0 bytes .../new_personal_snippet_from_project_v12_10.png | Bin 77106 -> 0 bytes doc/user/img/new_personal_snippet_v12_10.png | Bin 39878 -> 0 bytes doc/user/index.md | 6 +- doc/user/infrastructure/index.md | 4 +- doc/user/infrastructure/terraform_state.md | 14 +- doc/user/markdown.md | 49 +- doc/user/packages/conan_repository/index.md | 9 +- doc/user/packages/container_registry/index.md | 6 +- doc/user/packages/dependency_proxy/index.md | 18 +- doc/user/packages/generic_packages/index.md | 22 +- doc/user/packages/go_proxy/index.md | 2 +- doc/user/packages/index.md | 4 +- doc/user/packages/npm_registry/index.md | 26 +- doc/user/packages/nuget_repository/index.md | 2 +- doc/user/packages/package_registry/index.md | 2 +- doc/user/packages/pypi_repository/index.md | 18 +- doc/user/packages/workflows/monorepo.md | 9 - doc/user/packages/workflows/project_registry.md | 5 + doc/user/permissions.md | 12 +- .../profile/account/two_factor_authentication.md | 14 +- .../img/busy_indicator_note_header_v13_9.png | Bin 0 -> 24006 bytes .../profile/img/busy_indicator_notes_v13_9.png | Bin 0 -> 41947 bytes .../img/busy_indicator_profile_page_v13_6.png | Bin 0 -> 25119 bytes .../img/busy_indicator_settings_menu_v13_6.png | Bin 0 -> 26843 bytes .../img/busy_indicator_sidebar_collapsed_v13_9.png | Bin 0 -> 6190 bytes .../profile/img/busy_indicator_sidebar_v13_9.png | Bin 0 -> 21914 bytes .../img/busy_indicator_user_popovers_v13_6.png | Bin 0 -> 32158 bytes doc/user/profile/index.md | 26 +- doc/user/profile/notifications.md | 3 +- doc/user/profile/personal_access_tokens.md | 2 +- doc/user/profile/preferences.md | 11 +- doc/user/project/autocomplete_characters.md | 47 +- doc/user/project/badges.md | 6 +- doc/user/project/clusters/add_eks_clusters.md | 10 +- doc/user/project/clusters/index.md | 21 +- .../container_host_security/quick_start_guide.md | 4 +- .../quick_start_guide.md | 4 +- doc/user/project/clusters/serverless/aws.md | 9 +- doc/user/project/clusters/serverless/index.md | 8 +- doc/user/project/code_intelligence.md | 7 +- doc/user/project/deploy_boards.md | 12 +- doc/user/project/deploy_tokens/index.md | 29 +- doc/user/project/description_templates.md | 77 +- doc/user/project/file_lock.md | 32 +- doc/user/project/git_attributes.md | 2 +- .../img/autocomplete_characters_example1_v12_0.png | Bin 17510 -> 0 bytes .../img/autocomplete_characters_example2_v12_0.png | Bin 14623 -> 0 bytes ..._owners_approval_new_protected_branch_v12_4.png | Bin 41386 -> 0 bytes ...owners_approval_new_protected_branch_v13_10.png | Bin 0 -> 30238 bytes ...code_owners_approval_protected_branch_v12_4.png | Bin 16195 -> 0 bytes ...ode_owners_approval_protected_branch_v13_10.png | Bin 0 -> 17263 bytes .../img/issue_boards_remove_issue_v13_6.png | Bin 27886 -> 0 bytes doc/user/project/import/github.md | 9 +- doc/user/project/index.md | 4 +- doc/user/project/integrations/bamboo.md | 2 +- doc/user/project/integrations/bugzilla.md | 2 +- .../project/integrations/custom_issue_tracker.md | 2 +- .../project/integrations/discord_notifications.md | 2 +- doc/user/project/integrations/emails_on_push.md | 2 +- doc/user/project/integrations/github.md | 2 +- doc/user/project/integrations/hangouts_chat.md | 2 +- doc/user/project/integrations/hipchat.md | 2 +- .../integrations/img/mattermost_config_help.png | Bin 102890 -> 0 bytes .../img/mattermost_console_integrations.png | Bin 114618 -> 0 bytes .../integrations/img/mattermost_goto_console.png | Bin 7746 -> 0 bytes .../img/mattermost_slash_command_configuration.png | Bin 24162 -> 0 bytes .../img/mattermost_slash_command_token.png | Bin 8624 -> 0 bytes .../img/mattermost_team_integrations.png | Bin 4757 -> 0 bytes doc/user/project/integrations/index.md | 2 +- doc/user/project/integrations/irker.md | 2 +- doc/user/project/integrations/jira.md | 2 +- .../integrations/jira_cloud_configuration.md | 2 +- doc/user/project/integrations/jira_integrations.md | 2 +- .../integrations/jira_server_configuration.md | 2 +- doc/user/project/integrations/mattermost.md | 2 +- .../integrations/mattermost_slash_commands.md | 161 +- doc/user/project/integrations/microsoft_teams.md | 2 +- doc/user/project/integrations/mock_ci.md | 2 +- doc/user/project/integrations/overview.md | 2 +- .../integrations/prometheus_library/cloudwatch.md | 35 +- doc/user/project/integrations/redmine.md | 2 +- doc/user/project/integrations/servicenow.md | 2 +- .../project/integrations/services_templates.md | 2 +- doc/user/project/integrations/slack.md | 2 +- doc/user/project/integrations/unify_circuit.md | 2 +- doc/user/project/integrations/webex_teams.md | 2 +- doc/user/project/integrations/webhooks.md | 24 +- doc/user/project/integrations/youtrack.md | 2 +- doc/user/project/issue_board.md | 101 +- doc/user/project/issues/associate_zoom_meeting.md | 2 +- doc/user/project/issues/index.md | 10 +- doc/user/project/issues/issue_data_and_actions.md | 8 +- doc/user/project/issues/managing_issues.md | 4 +- .../members/img/project_members_filter_v12_6.png | Bin 6381 -> 0 bytes doc/user/project/members/index.md | 29 +- .../project/members/share_project_with_groups.md | 2 +- .../project/merge_requests/allow_collaboration.md | 12 +- .../authorization_for_merge_requests.md | 2 +- .../merge_requests/browser_performance_testing.md | 9 +- doc/user/project/merge_requests/code_quality.md | 18 +- .../merge_requests/creating_merge_requests.md | 17 +- doc/user/project/merge_requests/drafts.md | 99 + .../project/merge_requests/fast_forward_merge.md | 8 +- doc/user/project/merge_requests/getting_started.md | 70 +- .../img/comment-on-any-diff-line.png | Bin 33199 -> 0 bytes .../img/comment-on-any-diff-line_v13_10.png | Bin 0 -> 21304 bytes .../img/draft_blocked_merge_button_v13_10.png | Bin 0 -> 4958 bytes .../img/draft_blocked_merge_button_v13_2.png | Bin 11774 -> 0 bytes .../img/filter_draft_merge_requests_v13_10.png | Bin 0 -> 3453 bytes .../img/filter_wip_merge_requests.png | Bin 11017 -> 0 bytes .../img/multiline-comment-highlighted.png | Bin 38822 -> 0 bytes .../img/scoped_to_protected_branch_v12_8.png | Bin 32970 -> 0 bytes .../img/scoped_to_protected_branch_v13_10.png | Bin 0 -> 39889 bytes .../img/update_approval_rule_v13_10.png | Bin 0 -> 42956 bytes .../img/update_approval_rule_v13_4.png | Bin 32006 -> 0 bytes doc/user/project/merge_requests/index.md | 35 +- .../merge_requests/load_performance_testing.md | 6 +- .../merge_requests/merge_request_approvals.md | 13 +- .../merge_requests/merge_request_dependencies.md | 7 +- .../merge_requests/merge_when_pipeline_succeeds.md | 4 +- .../project/merge_requests/resolve_conflicts.md | 2 +- doc/user/project/merge_requests/revert_changes.md | 26 +- .../reviewing_and_managing_merge_requests.md | 28 +- .../project/merge_requests/squash_and_merge.md | 20 +- .../merge_requests/test_coverage_visualization.md | 29 + doc/user/project/merge_requests/versions.md | 2 +- .../work_in_progress_merge_requests.md | 78 +- doc/user/project/milestones/burndown_charts.md | 8 - .../pages/getting_started/pages_ci_cd_template.md | 2 +- .../pages/getting_started/pages_from_scratch.md | 4 +- doc/user/project/pages/index.md | 4 +- doc/user/project/protected_branches.md | 60 +- doc/user/project/push_options.md | 10 +- doc/user/project/quick_actions.md | 199 +- doc/user/project/releases/index.md | 17 +- .../branches/img/branch_filter_search_box.png | Bin 23522 -> 0 bytes .../img/branch_filter_search_box_v13_10.png | Bin 0 -> 48672 bytes .../repository/branches/img/compare_branches.png | Bin 62436 -> 0 bytes .../branches/img/compare_branches_v13_10.png | Bin 0 -> 82538 bytes .../img/repository_filter_search_box_v13_10.png | Bin 0 -> 17166 bytes doc/user/project/repository/branches/index.md | 28 +- doc/user/project/repository/file_finder.md | 2 +- doc/user/project/repository/forking_workflow.md | 16 +- doc/user/project/repository/git_blame.md | 9 +- doc/user/project/repository/git_history.md | 9 +- .../project/repository/gpg_signed_commits/index.md | 11 +- doc/user/project/repository/index.md | 53 +- .../project/repository/jupyter_notebooks/index.md | 4 +- .../project/repository/repository_mirroring.md | 211 +- doc/user/project/repository/web_editor.md | 4 +- .../repository/x509_signed_commits/index.md | 4 +- doc/user/project/requirements/index.md | 10 +- doc/user/project/service_desk.md | 6 +- doc/user/project/settings/import_export.md | 4 +- doc/user/project/settings/index.md | 16 +- doc/user/project/settings/project_access_tokens.md | 30 - doc/user/project/static_site_editor/index.md | 2 +- doc/user/project/time_tracking.md | 3 +- .../web_ide/img/solarized_dark_theme_v13_1.png | Bin 117131 -> 43014 bytes .../web_ide/img/solarized_light_theme_v13_0.png | Bin 99981 -> 0 bytes doc/user/project/web_ide/index.md | 19 +- doc/user/project/wiki/index.md | 72 +- doc/user/project/working_with_projects.md | 4 +- doc/user/search/advanced_global_search.md | 70 - doc/user/search/advanced_search.md | 115 + doc/user/search/advanced_search_syntax.md | 90 - doc/user/search/img/advanced_global_search.png | Bin 15017 -> 0 bytes doc/user/search/img/advanced_search_v13.10.png | Bin 0 -> 46767 bytes doc/user/search/index.md | 23 +- doc/user/shortcuts.md | 117 +- doc/user/snippets.md | 278 +- .../usage_metric_definition/metric_definition.yml | 4 +- jest.config.base.js | 2 +- lefthook.yml | 24 +- lib/api/admin/plan_limits.rb | 57 + lib/api/api.rb | 4 +- lib/api/boards.rb | 20 +- lib/api/ci/runner.rb | 27 +- lib/api/commit_statuses.rb | 7 +- lib/api/composer_packages.rb | 14 + lib/api/concerns/packages/conan_endpoints.rb | 6 +- lib/api/concerns/packages/npm_endpoints.rb | 14 +- lib/api/entities/job_request/response.rb | 2 +- lib/api/entities/plan_limit.rb | 14 + lib/api/entities/project.rb | 2 + .../entities/project_repository_storage_move.rb | 9 - .../entities/projects/repository_storage_move.rb | 11 + lib/api/entities/protected_branch.rb | 1 + lib/api/entities/public_group_details.rb | 12 + .../entities/snippets/repository_storage_move.rb | 11 + lib/api/group_boards.rb | 16 +- lib/api/helpers.rb | 2 +- lib/api/helpers/issues_helpers.rb | 5 +- lib/api/helpers/packages/conan/api_helpers.rb | 2 +- lib/api/helpers/packages/npm.rb | 23 +- lib/api/helpers/runner.rb | 9 + lib/api/helpers/services_helpers.rb | 2 +- lib/api/invitations.rb | 33 + lib/api/issues.rb | 25 +- lib/api/job_artifacts.rb | 2 +- lib/api/jobs.rb | 21 +- lib/api/nuget_project_packages.rb | 5 +- lib/api/project_packages.rb | 6 +- lib/api/project_repository_storage_moves.rb | 24 +- lib/api/projects.rb | 30 + lib/api/protected_branches.rb | 3 + lib/api/repositories.rb | 2 +- lib/api/resource_access_tokens.rb | 2 +- lib/api/rubygem_packages.rb | 71 +- lib/api/settings.rb | 1 + lib/api/snippet_repository_storage_moves.rb | 24 +- lib/api/users.rb | 9 +- lib/api/v3/github.rb | 3 + lib/api/wikis.rb | 2 +- lib/backup/repositories.rb | 7 +- lib/banzai/filter/autolink_filter.rb | 2 +- lib/banzai/filter/markdown_pre_escape_filter.rb | 6 +- lib/banzai/filter/sanitization_filter.rb | 8 +- lib/banzai/filter/spaced_link_filter.rb | 2 +- lib/banzai/filter/video_link_filter.rb | 2 +- lib/bitbucket/collection.rb | 8 - lib/bitbucket_server/collection.rb | 8 - lib/bulk_imports/common/loaders/entity_loader.rb | 15 - .../common/transformers/award_emoji_transformer.rb | 27 - .../prohibited_attributes_transformer.rb | 6 +- .../transformers/user_reference_transformer.rb | 39 + .../groups/extractors/subgroups_extractor.rb | 2 - .../groups/graphql/get_labels_query.rb | 4 +- .../groups/graphql/get_milestones_query.rb | 54 + lib/bulk_imports/groups/loaders/group_loader.rb | 4 - lib/bulk_imports/groups/loaders/labels_loader.rb | 15 - lib/bulk_imports/groups/loaders/members_loader.rb | 17 - .../groups/pipelines/labels_pipeline.rb | 4 +- .../groups/pipelines/members_pipeline.rb | 6 +- .../groups/pipelines/milestones_pipeline.rb | 42 + .../groups/pipelines/subgroup_entities_pipeline.rb | 5 +- .../transformers/group_attributes_transformer.rb | 13 +- .../transformers/member_attributes_transformer.rb | 2 - .../transformers/subgroup_to_entity_transformer.rb | 2 - lib/bulk_imports/importers/group_importer.rb | 3 +- lib/bulk_imports/pipeline.rb | 88 +- lib/bulk_imports/pipeline/runner.rb | 41 +- lib/csv_builder.rb | 5 +- lib/declarative_policy/policy_dsl.rb | 2 +- lib/error_tracking/sentry_client.rb | 100 + lib/error_tracking/sentry_client/api_urls.rb | 41 + lib/error_tracking/sentry_client/event.rb | 36 + lib/error_tracking/sentry_client/issue.rb | 184 + lib/error_tracking/sentry_client/issue_link.rb | 52 + .../sentry_client/pagination_parser.rb | 25 + lib/error_tracking/sentry_client/projects.rb | 39 + lib/error_tracking/sentry_client/repo.rb | 38 + lib/expand_variables.rb | 3 + lib/feature/shared.rb | 12 - .../gitlab/usage_metric_definition_generator.rb | 28 +- lib/gitlab.rb | 4 + lib/gitlab/alert_management/payload/generic.rb | 2 +- lib/gitlab/analytics/cycle_analytics/average.rb | 48 + .../analytics/cycle_analytics/data_collector.rb | 6 + .../analytics/cycle_analytics/records_fetcher.rb | 6 +- lib/gitlab/analytics/cycle_analytics/sorting.rb | 27 + .../analytics/cycle_analytics/stage_events.rb | 4 +- .../cycle_analytics/stage_events/stage_event.rb | 4 + .../cycle_analytics/stage_query_helpers.rb | 4 +- .../workers_argument_builder.rb | 47 - .../usage_trends/workers_argument_builder.rb | 47 + lib/gitlab/application_context.rb | 52 +- lib/gitlab/application_rate_limiter.rb | 2 +- lib/gitlab/auth/current_user_mode.rb | 7 +- lib/gitlab/auth/o_auth/provider.rb | 11 +- lib/gitlab/auth/o_auth/user.rb | 3 +- lib/gitlab/avatar_cache.rb | 86 + ...ect_updated_at_after_repository_storage_move.rb | 2 +- .../primary_key_batching_strategy.rb | 38 + .../copy_column_using_background_migration_job.rb | 28 +- ...e_request_assignees_migration_progress_check.rb | 43 - ...late_finding_uuid_for_vulnerability_feedback.rb | 16 +- .../populate_namespace_statistics.rb | 16 + .../populate_uuids_for_security_findings.rb | 2 +- ...recalculate_vulnerabilities_occurrences_uuid.rb | 79 + .../set_default_iteration_cadences.rb | 60 + lib/gitlab/blame.rb | 8 +- lib/gitlab/checks/branch_check.rb | 2 +- lib/gitlab/checks/lfs_check.rb | 1 + lib/gitlab/ci/build/context/build.rb | 2 +- lib/gitlab/ci/build/context/global.rb | 3 +- .../build/credentials/registry/dependency_proxy.rb | 2 +- lib/gitlab/ci/config.rb | 10 +- lib/gitlab/ci/config/entry/cache.rb | 112 +- lib/gitlab/ci/config/entry/environment.rb | 11 +- lib/gitlab/ci/features.rb | 16 +- lib/gitlab/ci/jwt.rb | 6 +- lib/gitlab/ci/lint.rb | 2 +- .../ci/pipeline/chain/cancel_pending_pipelines.rb | 2 +- lib/gitlab/ci/pipeline/expression/statement.rb | 4 +- lib/gitlab/ci/pipeline/seed/build.rb | 48 +- lib/gitlab/ci/pipeline/seed/build/cache.rb | 22 +- lib/gitlab/ci/pipeline/seed/environment.rb | 6 + lib/gitlab/ci/queue/metrics.rb | 210 + .../ci/reports/codequality_reports_comparer.rb | 8 +- lib/gitlab/ci/reports/reports_comparer.rb | 13 +- lib/gitlab/ci/status/composite.rb | 16 +- lib/gitlab/ci/templates/Chef.gitlab-ci.yml | 5 - .../ci/templates/Jobs/Code-Quality.gitlab-ci.yml | 2 +- lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml | 20 +- .../ci/templates/Jobs/Deploy.latest.gitlab-ci.yml | 22 +- .../ci/templates/Jobs/Deploy/EC2.gitlab-ci.yml | 4 +- .../ci/templates/Jobs/Deploy/ECS.gitlab-ci.yml | 12 +- lib/gitlab/ci/templates/LaTeX.gitlab-ci.yml | 17 +- lib/gitlab/ci/templates/Pages/Brunch.gitlab-ci.yml | 4 +- .../ci/templates/Pages/Doxygen.gitlab-ci.yml | 4 +- lib/gitlab/ci/templates/Pages/Gatsby.gitlab-ci.yml | 4 +- lib/gitlab/ci/templates/Pages/HTML.gitlab-ci.yml | 4 +- lib/gitlab/ci/templates/Pages/Harp.gitlab-ci.yml | 4 +- lib/gitlab/ci/templates/Pages/Hexo.gitlab-ci.yml | 4 +- lib/gitlab/ci/templates/Pages/Hugo.gitlab-ci.yml | 6 +- lib/gitlab/ci/templates/Pages/Hyde.gitlab-ci.yml | 6 +- lib/gitlab/ci/templates/Pages/Jekyll.gitlab-ci.yml | 6 +- lib/gitlab/ci/templates/Pages/Jigsaw.gitlab-ci.yml | 4 +- lib/gitlab/ci/templates/Pages/Lektor.gitlab-ci.yml | 4 +- .../ci/templates/Pages/Metalsmith.gitlab-ci.yml | 4 +- .../ci/templates/Pages/Middleman.gitlab-ci.yml | 7 +- lib/gitlab/ci/templates/Pages/Nanoc.gitlab-ci.yml | 4 +- .../ci/templates/Pages/Octopress.gitlab-ci.yml | 4 +- .../ci/templates/Pages/SwaggerUI.gitlab-ci.yml | 4 +- .../templates/Security/API-Fuzzing.gitlab-ci.yml | 18 +- .../Security/Container-Scanning.gitlab-ci.yml | 3 + .../Security/Dependency-Scanning.gitlab-ci.yml | 15 + .../ci/templates/Security/SAST.gitlab-ci.yml | 53 +- .../Security/Secret-Detection.gitlab-ci.yml | 2 +- .../templates/Terraform/Base.latest.gitlab-ci.yml | 3 +- lib/gitlab/ci/variables/collection.rb | 33 +- lib/gitlab/ci/variables/collection/item.rb | 25 +- lib/gitlab/ci/variables/collection/sort.rb | 64 + lib/gitlab/ci/variables/collection/sorted.rb | 78 - lib/gitlab/cycle_analytics/summary/deploy.rb | 14 +- lib/gitlab/data_builder/build.rb | 13 +- lib/gitlab/data_builder/pipeline.rb | 12 +- lib/gitlab/database.rb | 30 +- .../database/background_migration/batched_job.rb | 23 + .../background_migration/batched_migration.rb | 56 + .../batched_migration_wrapper.rb | 46 + .../database/background_migration/scheduler.rb | 60 + lib/gitlab/database/migration_helpers.rb | 2 +- .../migrations/background_migration_helpers.rb | 87 +- lib/gitlab/database/migrations/observation.rb | 3 +- lib/gitlab/database/migrations/observers.rb | 3 +- .../migrations/observers/query_statistics.rb | 38 + .../table_management_helpers.rb | 2 +- lib/gitlab/database/similarity_score.rb | 7 +- lib/gitlab/dependency_linker/base_linker.rb | 2 +- lib/gitlab/dependency_linker/go_mod_linker.rb | 2 +- lib/gitlab/dependency_linker/go_sum_linker.rb | 2 +- lib/gitlab/diff/char_diff.rb | 4 +- lib/gitlab/diff/highlight.rb | 8 +- lib/gitlab/diff/highlight_cache.rb | 18 +- lib/gitlab/diff/inline_diff.rb | 100 +- lib/gitlab/diff/inline_diff_markdown_marker.rb | 4 +- lib/gitlab/diff/inline_diff_marker.rb | 4 +- lib/gitlab/diff/pair_selector.rb | 58 + lib/gitlab/email/handler/service_desk_handler.rb | 8 +- lib/gitlab/error_tracking.rb | 60 +- .../error_tracking/context_payload_generator.rb | 66 + lib/gitlab/error_tracking/detailed_error.rb | 2 + lib/gitlab/error_tracking/error.rb | 2 + lib/gitlab/error_tracking/error_collection.rb | 2 + lib/gitlab/error_tracking/error_event.rb | 2 + lib/gitlab/error_tracking/log_formatter.rb | 55 + .../processor/context_payload_processor.rb | 18 + lib/gitlab/error_tracking/project.rb | 2 + lib/gitlab/error_tracking/repo.rb | 2 + .../stack_trace_highlight_decorator.rb | 2 + lib/gitlab/etag_caching/middleware.rb | 8 +- lib/gitlab/etag_caching/router.rb | 105 +- lib/gitlab/etag_caching/router/graphql.rb | 41 + lib/gitlab/etag_caching/router/restful.rb | 112 + lib/gitlab/etag_caching/store.rb | 23 +- lib/gitlab/exception_log_formatter.rb | 10 - lib/gitlab/experimentation.rb | 24 +- lib/gitlab/experimentation/controller_concern.rb | 16 +- lib/gitlab/git/blame.rb | 9 +- lib/gitlab/git/commit.rb | 1 + lib/gitlab/gitaly_client.rb | 4 +- lib/gitlab/gitaly_client/storage_settings.rb | 3 +- .../importer/pull_request_merged_by_importer.rb | 33 +- .../importer/pull_request_review_importer.rb | 18 +- lib/gitlab/gon_helper.rb | 15 +- lib/gitlab/graphql/calls_gitaly.rb | 15 - lib/gitlab/graphql/calls_gitaly/field_extension.rb | 87 + lib/gitlab/graphql/calls_gitaly/instrumentation.rb | 40 - lib/gitlab/graphql/docs/helper.rb | 12 +- lib/gitlab/graphql/docs/templates/default.md.haml | 18 +- .../externally_paginated_array_extension.rb | 2 +- lib/gitlab/graphql/pagination/keyset/connection.rb | 1 + .../pagination/keyset/generic_keyset_pagination.rb | 47 + lib/gitlab/graphql/pagination/keyset/last_items.rb | 38 +- lib/gitlab/graphql/pagination/keyset/order_info.rb | 7 - lib/gitlab/graphql/present.rb | 23 +- lib/gitlab/graphql/present/field_extension.rb | 36 + lib/gitlab/graphql/present/instrumentation.rb | 49 - .../graphql/query_analyzers/logger_analyzer.rb | 4 - lib/gitlab/hook_data/project_member_builder.rb | 66 + lib/gitlab/http_connection_adapter.rb | 31 +- lib/gitlab/marginalia.rb | 9 - .../marginalia/active_record_instrumentation.rb | 12 - lib/gitlab/marginalia/comment.rb | 4 + lib/gitlab/marker_range.rb | 29 + lib/gitlab/memory/instrumentation.rb | 2 +- lib/gitlab/metrics/background_transaction.rb | 49 + lib/gitlab/metrics/samplers/ruby_sampler.rb | 2 +- lib/gitlab/metrics/subscribers/active_record.rb | 56 +- lib/gitlab/optimistic_locking.rb | 61 +- .../pagination/keyset/column_order_definition.rb | 224 + lib/gitlab/pagination/keyset/order.rb | 248 + .../redis_adapter_when_peek_enabled.rb | 8 +- lib/gitlab/query_limiting.rb | 11 +- .../query_limiting/active_support_subscriber.rb | 7 +- lib/gitlab/query_limiting/transaction.rb | 11 +- lib/gitlab/quick_actions/issue_actions.rb | 29 + lib/gitlab/regex.rb | 4 + lib/gitlab/relative_positioning/closed_range.rb | 13 + lib/gitlab/relative_positioning/ending_at.rb | 18 + lib/gitlab/relative_positioning/range.rb | 34 - lib/gitlab/relative_positioning/starting_from.rb | 18 + lib/gitlab/runtime.rb | 5 +- lib/gitlab/setup_helper.rb | 2 +- lib/gitlab/sidekiq_middleware.rb | 2 + lib/gitlab/sidekiq_middleware/server_metrics.rb | 3 +- .../sidekiq_middleware/size_limiter/client.rb | 19 + .../size_limiter/exceed_limit_error.rb | 29 + .../sidekiq_middleware/size_limiter/validator.rb | 97 + lib/gitlab/string_range_marker.rb | 18 +- lib/gitlab/template/base_template.rb | 4 +- lib/gitlab/template/issue_template.rb | 4 + lib/gitlab/template/merge_request_template.rb | 4 + lib/gitlab/tracking/standard_context.rb | 8 +- lib/gitlab/tree_summary.rb | 10 +- lib/gitlab/usage/docs/helper.rb | 35 +- lib/gitlab/usage/docs/templates/default.md.haml | 24 +- lib/gitlab/usage/docs/value_formatter.rb | 6 +- lib/gitlab/usage/metric_definition.rb | 5 + lib/gitlab/usage/metrics/aggregates/aggregate.rb | 24 +- .../metrics/aggregates/sources/postgres_hll.rb | 6 +- .../usage/metrics/names_suggestions/generator.rb | 61 + lib/gitlab/usage_data.rb | 47 +- .../aggregated_metrics/code_review.yml | 108 + .../aggregated_metrics/common.yml | 24 +- .../counter_events/package_events.yml | 3 + .../usage_data_counters/hll_redis_counter.rb | 6 +- .../known_events/code_review_events.yml | 40 + .../usage_data_counters/known_events/common.yml | 15 + .../usage_data_counters/known_events/ecosystem.yml | 46 + .../known_events/package_events.yml | 30 +- .../known_events/quickactions.yml | 10 + .../merge_request_activity_unique_counter.rb | 48 + .../quick_action_activity_unique_counter.rb | 14 +- lib/gitlab/usage_data_queries.rb | 4 + lib/gitlab/utils/usage_data.rb | 21 +- lib/gitlab/visibility_level.rb | 13 +- lib/gitlab/word_diff/chunk_collection.rb | 23 + lib/gitlab/word_diff/line_processor.rb | 45 + lib/gitlab/word_diff/parser.rb | 57 + lib/gitlab/word_diff/positions_counter.rb | 30 + lib/gitlab/word_diff/segments/chunk.rb | 36 + lib/gitlab/word_diff/segments/diff_hunk.rb | 40 + lib/gitlab/word_diff/segments/newline.rb | 13 + lib/gitlab/x509/signature.rb | 6 + lib/pager_duty/webhook_payload_parser.rb | 4 +- lib/peek/views/active_record.rb | 20 +- lib/quality/test_level.rb | 1 + lib/release_highlights/validator/entry.rb | 2 +- lib/rspec_flaky/config.rb | 21 - lib/rspec_flaky/example.rb | 48 - lib/rspec_flaky/flaky_example.rb | 38 - lib/rspec_flaky/flaky_examples_collection.rb | 38 - lib/rspec_flaky/listener.rb | 63 - lib/rspec_flaky/report.rb | 56 - lib/sentry/api_urls.rb | 39 - lib/sentry/client.rb | 100 - lib/sentry/client/event.rb | 36 - lib/sentry/client/issue.rb | 184 - lib/sentry/client/issue_link.rb | 52 - lib/sentry/client/projects.rb | 39 - lib/sentry/client/repo.rb | 38 - lib/sentry/pagination_parser.rb | 23 - .../concerns/has_spam_action_response_fields.rb | 37 + lib/system_check/sidekiq_check.rb | 24 +- lib/tasks/eslint.rake | 2 +- lib/tasks/gitlab/graphql.rake | 17 +- lib/tasks/gitlab/packages/composer.rake | 20 + lib/tasks/gitlab/packages/events.rake | 3 +- lib/tasks/lint.rake | 1 - lib/tasks/scss-lint.rake | 12 - locale/am_ET/gitlab.po | 2526 +- locale/ar_SA/gitlab.po | 2554 +- locale/as_IN/gitlab.po | 2526 +- locale/az_AZ/gitlab.po | 2526 +- locale/ba_RU/gitlab.po | 2519 +- locale/bg/gitlab.po | 2528 +- locale/bn_BD/gitlab.po | 2526 +- locale/bn_IN/gitlab.po | 2526 +- locale/br_FR/gitlab.po | 36990 ++++++++ locale/bs_BA/gitlab.po | 2533 +- locale/ca_ES/gitlab.po | 2532 +- locale/cs_CZ/gitlab.po | 2546 +- locale/cy_GB/gitlab.po | 2554 +- locale/da_DK/gitlab.po | 2526 +- locale/de/gitlab.po | 2666 +- locale/el_GR/gitlab.po | 2526 +- locale/eo/gitlab.po | 2528 +- locale/es/gitlab.po | 2958 +- locale/et_EE/gitlab.po | 2526 +- locale/fa_IR/gitlab.po | 2526 +- locale/fi_FI/gitlab.po | 2526 +- locale/fil_PH/gitlab.po | 2526 +- locale/fr/gitlab.po | 2584 +- locale/gitlab.pot | 1642 +- locale/gl_ES/gitlab.po | 2526 +- locale/he_IL/gitlab.po | 2540 +- locale/hi_IN/gitlab.po | 2526 +- locale/hr_HR/gitlab.po | 2533 +- locale/hu_HU/gitlab.po | 2526 +- locale/hy_AM/gitlab.po | 2526 +- locale/id_ID/gitlab.po | 2519 +- locale/ig_NG/gitlab.po | 2519 +- locale/is_IS/gitlab.po | 2526 +- locale/it/gitlab.po | 2528 +- locale/ja/gitlab.po | 2909 +- locale/ka_GE/gitlab.po | 2526 +- locale/kab/gitlab.po | 2526 +- locale/ko/gitlab.po | 2585 +- locale/ku_TR/gitlab.po | 2526 +- locale/ky_KG/gitlab.po | 2526 +- locale/lt_LT/gitlab.po | 2540 +- locale/mk_MK/gitlab.po | 2526 +- locale/mn_MN/gitlab.po | 2526 +- locale/nb_NO/gitlab.po | 2622 +- locale/nl_NL/gitlab.po | 2526 +- locale/pa_IN/gitlab.po | 2526 +- locale/pl_PL/gitlab.po | 2540 +- locale/pt_BR/gitlab.po | 2630 +- locale/pt_PT/gitlab.po | 2534 +- locale/ro_RO/gitlab.po | 2533 +- locale/ru/gitlab.po | 2658 +- locale/si_LK/gitlab.po | 2526 +- locale/sk_SK/gitlab.po | 2540 +- locale/sl_SI/gitlab.po | 2540 +- locale/sq_AL/gitlab.po | 2526 +- locale/sr_CS/gitlab.po | 2533 +- locale/sr_SP/gitlab.po | 2533 +- locale/sv_SE/gitlab.po | 2526 +- locale/sw_KE/gitlab.po | 2526 +- locale/tr_TR/gitlab.po | 2620 +- locale/uk/gitlab.po | 2690 +- locale/unfound_translations.rb | 1 + locale/ur_PK/gitlab.po | 2526 +- locale/uz_UZ/gitlab.po | 2526 +- locale/vi_VN/gitlab.po | 2519 +- locale/zh_CN/gitlab.po | 2807 +- locale/zh_HK/gitlab.po | 2523 +- locale/zh_TW/gitlab.po | 2523 +- package.json | 65 +- qa/Dockerfile | 8 + qa/Gemfile | 1 + qa/Gemfile.lock | 22 + qa/qa.rb | 7 + qa/qa/page/component/invite_members_modal.rb | 80 + qa/qa/page/component/issue_board/show.rb | 8 + qa/qa/page/component/new_snippet.rb | 6 +- qa/qa/page/component/note.rb | 3 +- qa/qa/page/dashboard/snippet/edit.rb | 6 +- qa/qa/page/group/members.rb | 29 +- qa/qa/page/group/menu.rb | 13 + qa/qa/page/group/settings/package_registries.rb | 42 + qa/qa/page/main/login.rb | 2 +- qa/qa/page/merge_request/show.rb | 32 +- qa/qa/page/project/import/github.rb | 8 + qa/qa/page/project/issue/index.rb | 15 +- qa/qa/page/project/members.rb | 35 +- qa/qa/page/project/operations/kubernetes/index.rb | 4 +- qa/qa/page/project/registry/show.rb | 40 + qa/qa/page/project/settings/main.rb | 13 +- qa/qa/page/project/settings/merge_request.rb | 8 +- qa/qa/page/project/sub_menus/packages.rb | 19 + qa/qa/page/project/sub_menus/settings.rb | 2 +- qa/qa/resource/clusters/agent_token.rb | 2 +- qa/qa/resource/members.rb | 13 + qa/qa/resource/merge_request.rb | 10 +- qa/qa/resource/personal_access_token.rb | 52 +- qa/qa/resource/project.rb | 14 +- qa/qa/resource/project_imported_from_github.rb | 4 +- qa/qa/resource/project_snippet.rb | 6 +- qa/qa/resource/registry_repository.rb | 53 + qa/qa/resource/snippet.rb | 37 +- qa/qa/resource/user.rb | 15 +- qa/qa/runtime/api/client.rb | 38 +- qa/qa/runtime/api/repository_storage_moves.rb | 22 +- qa/qa/runtime/env.rb | 26 +- qa/qa/service/praefect_manager.rb | 42 +- .../3_create/gitaly/backend_node_recovery_spec.rb | 15 +- .../push_options_remove_source_branch_spec.rb | 6 +- .../snippet_repository_storage_move_spec.rb | 45 + qa/qa/specs/features/api/4_verify/.gitkeep | 0 .../api/4_verify/pipeline_deletion_spec.rb | 82 - .../1_manage/group/transfer_project_spec.rb | 3 +- .../browser_ui/1_manage/login/2fa_recovery_spec.rb | 1 + .../1_manage/login/log_in_with_2fa_spec.rb | 1 + .../browser_ui/1_manage/login/register_spec.rb | 1 + .../1_manage/project/add_project_member_spec.rb | 12 +- .../1_manage/project/dashboard_images_spec.rb | 2 +- .../1_manage/project/import_github_repo_spec.rb | 1 + .../1_manage/project/protected_tags_spec.rb | 7 +- .../email/trigger_email_notification_spec.rb | 6 +- .../2_plan/issue/check_mentions_for_xss_spec.rb | 2 + .../browser_ui/2_plan/issue/mentions_spec.rb | 4 +- .../2_plan/issue/real_time_assignee_spec.rb | 1 + .../3_create/jenkins/jenkins_build_status_spec.rb | 2 +- .../merge_merge_request_from_fork_spec.rb | 2 +- .../merge_when_pipeline_succeeds_spec.rb | 84 + .../merge_request/rebase_merge_request_spec.rb | 4 +- .../browser_ui/3_create/repository/clone_spec.rb | 2 +- .../repository/move_project_create_fork_spec.rb | 1 + .../repository/push_http_private_token_spec.rb | 4 +- .../repository/push_over_http_file_size_spec.rb | 2 +- .../3_create/repository/push_over_http_spec.rb | 4 +- .../3_create/repository/push_over_ssh_spec.rb | 3 +- .../repository/push_protected_branch_spec.rb | 2 +- .../snippet/add_comment_to_snippet_spec.rb | 5 + .../3_create/snippet/add_file_to_snippet_spec.rb | 7 +- .../clone_push_pull_personal_snippet_spec.rb | 4 +- .../clone_push_pull_project_snippet_spec.rb | 6 +- .../snippet/copy_snippet_file_contents_spec.rb | 5 + .../snippet/create_personal_snippet_spec.rb | 2 +- .../snippet/delete_file_from_snippet_spec.rb | 7 +- .../3_create/snippet/share_snippet_spec.rb | 4 + .../5_package/container_registry_spec.rb | 77 + .../5_package/maven_gradle_repository_spec.rb | 2 +- .../browser_ui/5_package/maven_repository_spec.rb | 149 +- .../browser_ui/5_package/npm_registry_spec.rb | 6 +- .../browser_ui/5_package/nuget_repository_spec.rb | 12 +- .../create_project_with_auto_devops_spec.rb | 4 +- .../browser_ui/non_devops/performance_bar_spec.rb | 2 +- qa/qa/support/api.rb | 1 + qa/qa/tools/initialize_gitlab_auth.rb | 2 +- qa/spec/runtime/api/client_spec.rb | 2 +- qa/spec/runtime/env_spec.rb | 1 + qa/spec/specs/helpers/quarantine_spec.rb | 73 +- qa/spec/support/matchers/have_matcher.rb | 1 + qa/tls_certificates/authority/ca.crt | 32 + qa/tls_certificates/authority/ca.key | 51 + qa/tls_certificates/authority/ca.pem | 83 + rubocop/cop/graphql/authorize_types.rb | 5 +- rubocop/cop/graphql/descriptions.rb | 52 +- .../cop/migration/add_columns_to_wide_tables.rb | 4 +- .../with_lock_retries_disallowed_method.rb | 1 + rubocop/rubocop-migrations.yml | 1 + rubocop/rubocop-usage-data.yml | 1 + scripts/flaky_examples/prune-old-flaky-examples | 9 +- scripts/frontend/block_dependencies.js | 8 +- ...check_page_bundle_mixins_css_for_sideeffects.js | 2 +- scripts/frontend/execute-on-staged-files.sh | 25 + scripts/frontend/extract_gettext_all.js | 39 +- scripts/frontend/file_test_coverage.js | 44 +- scripts/frontend/frontend_script_utils.js | 20 - scripts/frontend/merge_coverage_frontend.js | 13 +- scripts/frontend/parallel_ci_sequencer.js | 24 +- scripts/frontend/prettier.js | 121 - .../stylelint/stylelint-duplicate-selectors.js | 6 +- .../stylelint/stylelint-utility-classes.js | 5 +- .../frontend/stylelint/stylelint-utility-map.js | 30 +- scripts/frontend/stylelint/stylelint-utils.js | 11 +- scripts/frontend/webpack_dev_server.js | 12 +- scripts/lint-doc.sh | 2 +- scripts/review_apps/base-config.yaml | 20 +- scripts/review_apps/review-apps.sh | 2 +- scripts/static-analysis | 7 +- scripts/update-workhorse | 59 - scripts/validate_migration_schema | 2 +- scripts/verify-tff-mapping | 6 + spec/bin/feature_flag_spec.rb | 11 +- .../admin/application_settings_controller_spec.rb | 4 +- .../admin/instance_statistics_controller_spec.rb | 17 - .../admin/usage_trends_controller_spec.rb | 17 + .../controllers/concerns/spammable_actions_spec.rb | 33 +- .../explore/projects_controller_spec.rb | 17 + spec/controllers/groups/boards_controller_spec.rb | 6 +- .../clusters/applications_controller_spec.rb | 3 +- .../controllers/groups/clusters_controller_spec.rb | 33 +- ...endency_proxy_for_containers_controller_spec.rb | 14 +- spec/controllers/groups_controller_spec.rb | 28 +- spec/controllers/help_controller_spec.rb | 27 + .../import/bulk_imports_controller_spec.rb | 31 +- .../notification_settings_controller_spec.rb | 202 - spec/controllers/projects/blob_controller_spec.rb | 72 +- .../controllers/projects/boards_controller_spec.rb | 8 +- .../projects/branches_controller_spec.rb | 8 +- ...y_build_group_report_results_controller_spec.rb | 52 +- .../projects/ci/pipeline_editor_controller_spec.rb | 13 - .../projects/compare_controller_spec.rb | 243 +- .../designs/raw_images_controller_spec.rb | 15 +- .../controllers/projects/issues_controller_spec.rb | 21 +- spec/controllers/projects/notes_controller_spec.rb | 50 +- .../projects/snippets_controller_spec.rb | 6 +- .../projects/templates_controller_spec.rb | 27 +- .../projects/web_ide_schemas_controller_spec.rb | 4 +- spec/controllers/projects_controller_spec.rb | 33 +- .../repositories/git_http_controller_spec.rb | 19 +- spec/controllers/root_controller_spec.rb | 22 +- spec/controllers/search_controller_spec.rb | 40 +- spec/controllers/snippets/notes_controller_spec.rb | 16 + spec/db/schema_spec.rb | 10 +- spec/deprecation_toolkit_env.rb | 1 + .../application_experiment/cache_spec.rb | 54 - spec/experiments/application_experiment_spec.rb | 64 +- spec/factories/alert_management/alerts.rb | 6 +- .../analytics/instance_statistics/measurement.rb | 25 - .../analytics/usage_trends/measurement.rb | 25 + spec/factories/ci/build_trace_chunks.rb | 2 +- spec/factories/ci/builds.rb | 2 +- spec/factories/ci/pipelines.rb | 8 +- spec/factories/clusters/agent_tokens.rb | 2 + spec/factories/custom_emoji.rb | 1 + spec/factories/dependency_proxy.rb | 3 +- spec/factories/design_management/versions.rb | 5 - spec/factories/environments.rb | 16 + .../database/background_migration/batched_jobs.rb | 12 + .../background_migration/batched_migrations.rb | 13 + spec/factories/go_module_commits.rb | 10 +- spec/factories/go_module_versions.rb | 40 +- spec/factories/go_modules.rb | 2 +- spec/factories/groups.rb | 32 +- spec/factories/iterations.rb | 66 - spec/factories/namespaces.rb | 40 +- spec/factories/packages.rb | 9 + spec/factories/project_repository_storage_moves.rb | 12 +- spec/factories/projects.rb | 2 +- spec/factories/prometheus_alert_event.rb | 5 - .../self_managed_prometheus_alert_event.rb | 11 - spec/factories/snippet_repository_storage_moves.rb | 12 +- spec/factories_spec.rb | 57 +- spec/features/admin/admin_projects_spec.rb | 97 +- spec/features/admin/admin_settings_spec.rb | 15 +- .../user_views_alerts_settings_spec.rb | 7 +- spec/features/boards/boards_spec.rb | 18 +- spec/features/boards/sidebar_spec.rb | 30 - .../boards/user_adds_lists_to_board_spec.rb | 92 + spec/features/commit_spec.rb | 16 +- spec/features/dashboard/group_spec.rb | 2 +- spec/features/dashboard/projects_spec.rb | 8 - spec/features/discussion_comments/commit_spec.rb | 2 +- spec/features/discussion_comments/issue_spec.rb | 4 +- .../discussion_comments/merge_request_spec.rb | 3 +- spec/features/discussion_comments/snippets_spec.rb | 4 +- spec/features/expand_collapse_diffs_spec.rb | 10 - spec/features/groups/container_registry_spec.rb | 8 +- spec/features/groups/members/list_members_spec.rb | 42 + .../features/groups/members/manage_members_spec.rb | 12 +- .../settings/user_searches_in_settings_spec.rb | 36 + spec/features/groups/show_spec.rb | 5 +- spec/features/groups_spec.rb | 22 +- ..._issue_for_discussions_in_merge_request_spec.rb | 2 + spec/features/issues/csv_spec.rb | 4 +- spec/features/issues/gfm_autocomplete_spec.rb | 682 +- spec/features/issues/issue_state_spec.rb | 26 +- .../issues/user_interacts_with_awards_spec.rb | 8 +- spec/features/labels_hierarchy_spec.rb | 2 +- spec/features/merge_request/batch_comments_spec.rb | 2 +- ...user_closes_reopens_merge_request_state_spec.rb | 33 +- .../merge_request/user_posts_diff_notes_spec.rb | 2 +- .../merge_request/user_posts_notes_spec.rb | 5 +- ...lves_diff_notes_and_discussions_resolve_spec.rb | 10 +- .../user_sees_avatar_on_diff_notes_spec.rb | 6 +- .../merge_request/user_sees_discussions_spec.rb | 2 +- .../user_sees_merge_request_pipelines_spec.rb | 1 + .../merge_request/user_sees_merge_widget_spec.rb | 2 - .../user_sees_mini_pipeline_graph_spec.rb | 217 +- .../user_sees_notes_from_forked_project_spec.rb | 2 +- .../user_selects_branches_for_new_mr_spec.rb | 8 +- .../user_suggests_changes_on_diff_spec.rb | 2 +- .../user_toggles_whitespace_changes_spec.rb | 4 +- .../merge_requests/user_exports_as_csv_spec.rb | 6 +- spec/features/participants_autocomplete_spec.rb | 1 + .../profiles/personal_access_tokens_spec.rb | 6 + .../profiles/user_visits_notifications_tab_spec.rb | 9 +- spec/features/project_group_variables_spec.rb | 2 +- spec/features/project_variables_spec.rb | 3 +- spec/features/projects/active_tabs_spec.rb | 6 +- spec/features/projects/ci/lint_spec.rb | 2 +- spec/features/projects/container_registry_spec.rb | 8 +- .../projects/environments/environments_spec.rb | 80 +- .../user_sees_feature_flag_list_spec.rb | 2 +- .../files/gitlab_ci_syntax_yml_dropdown_spec.rb | 54 +- spec/features/projects/fork_spec.rb | 270 +- .../members/anonymous_user_sees_members_spec.rb | 22 +- .../projects/members/group_members_spec.rb | 244 +- .../members/groups_with_access_list_spec.rb | 176 +- .../features/projects/members/invite_group_spec.rb | 77 +- spec/features/projects/members/list_spec.rb | 254 +- ...master_adds_member_with_expiration_date_spec.rb | 110 +- spec/features/projects/members/sorting_spec.rb | 186 +- spec/features/projects/members/tabs_spec.rb | 72 +- .../features/projects/merge_request_button_spec.rb | 64 +- spec/features/projects/new_project_spec.rb | 48 +- .../projects/pages/user_edits_settings_spec.rb | 4 +- spec/features/projects/pipelines/pipelines_spec.rb | 90 +- .../projects/releases/user_creates_release_spec.rb | 31 +- .../projects/settings/operations_settings_spec.rb | 2 +- .../projects/settings/service_desk_setting_spec.rb | 45 +- .../user_manages_merge_requests_settings_spec.rb | 8 +- .../settings/user_manages_project_members_spec.rb | 129 +- .../settings/user_searches_in_settings_spec.rb | 42 + .../show/user_manages_notifications_spec.rb | 34 +- .../projects/show/user_uploads_files_spec.rb | 20 + spec/features/projects/user_sees_sidebar_spec.rb | 4 +- spec/features/projects/user_uses_shortcuts_spec.rb | 4 +- spec/features/projects_spec.rb | 2 +- .../security/group/internal_access_spec.rb | 35 +- .../features/security/group/private_access_spec.rb | 42 +- spec/features/security/group/public_access_spec.rb | 35 +- spec/features/sentry_js_spec.rb | 2 +- spec/features/task_lists_spec.rb | 8 +- .../uploads/user_uploads_avatar_to_profile_spec.rb | 3 +- .../user_can_display_performance_bar_spec.rb | 24 + spec/finders/admin/plans_finder_spec.rb | 54 + spec/finders/boards/boards_finder_spec.rb | 24 + ...daily_build_group_report_results_finder_spec.rb | 91 +- ...daily_build_group_report_results_finder_spec.rb | 99 - spec/finders/issues_finder_spec.rb | 59 +- .../merge_request_target_project_finder_spec.rb | 11 +- .../oldest_per_commit_finder_spec.rb | 61 +- spec/finders/merge_requests_finder_spec.rb | 55 +- spec/finders/namespaces/projects_finder_spec.rb | 83 + .../finders/packages/group_packages_finder_spec.rb | 2 +- spec/finders/packages/npm/package_finder_spec.rb | 130 +- spec/finders/packages/package_finder_spec.rb | 2 +- spec/finders/packages/packages_finder_spec.rb | 2 +- spec/finders/projects/groups_finder_spec.rb | 103 + .../repositories/changelog_commits_finder_spec.rb | 93 + .../commits_with_trailer_finder_spec.rb | 38 - .../repositories/previous_tag_finder_spec.rb | 8 +- .../license_compliance_jobs_finder_spec.rb | 5 +- spec/finders/users_finder_spec.rb | 20 +- .../api/schemas/entities/test_suite_comparer.json | 9 +- .../public_api/v4/packages/composer/index.json | 5 +- spec/fixtures/dependency_proxy/manifest | 44 +- .../lib/gitlab/import_export/complex/project.json | 3 +- .../security_reports/master/gl-sast-report.json | 16 +- spec/frontend/.eslintrc.yml | 1 - spec/frontend/__helpers__/fake_date/fixtures.js | 4 + spec/frontend/__helpers__/fake_date/index.js | 1 + spec/frontend/__helpers__/vue_test_utils_helper.js | 13 +- .../__helpers__/vue_test_utils_helper_spec.js | 17 + spec/frontend/__mocks__/@gitlab/ui.js | 5 +- .../components/projects_field_spec.js | 131 + .../components/projects_token_selector_spec.js | 269 + spec/frontend/access_tokens/index_spec.js | 74 + spec/frontend/admin/users/tabs_spec.js | 37 + .../components/alert_management_table_spec.js | 82 +- .../alerts_settings_form_spec.js.snap | 700 +- .../components/alert_mapping_builder_spec.js | 28 +- .../components/alerts_settings_form_spec.js | 227 +- .../components/alerts_settings_wrapper_spec.js | 231 +- .../components/mocks/apollo_mock.js | 17 +- .../alerts_settings/mocks/alertFields.json | 123 - .../alerts_settings/mocks/alert_fields.json | 123 + .../alerts_settings/mocks/parsed_mapping.json | 122 + .../utils/mapping_transformations_spec.js | 34 +- .../instance_statistics/apollo_mock_data.js | 36 - .../instance_statistics_count_chart_spec.js.snap | 41 - .../instance_statistics/components/app_spec.js | 45 - .../components/instance_counts_spec.js | 54 - .../instance_statistics_count_chart_spec.js | 177 - .../components/projects_and_groups_chart_spec.js | 215 - .../components/users_chart_spec.js | 174 - .../analytics/instance_statistics/mock_data.js | 35 - .../analytics/instance_statistics/utils_spec.js | 81 - .../analytics/usage_trends/apollo_mock_data.js | 36 + .../usage_trends_count_chart_spec.js.snap | 41 + .../analytics/usage_trends/components/app_spec.js | 40 + .../components/instance_counts_spec.js | 54 + .../components/usage_trends_count_chart_spec.js | 177 + .../usage_trends/components/users_chart_spec.js | 174 + spec/frontend/analytics/usage_trends/mock_data.js | 35 + spec/frontend/analytics/usage_trends/utils_spec.js | 81 + spec/frontend/api_spec.js | 62 + .../keep_latest_artifact_checkbox_spec.js.snap | 1 - .../authentication/u2f/authenticate_spec.js | 2 - spec/frontend/authentication/u2f/register_spec.js | 2 - .../authentication/webauthn/authenticate_spec.js | 1 - .../authentication/webauthn/register_spec.js | 1 - spec/frontend/awards_handler_spec.js | 15 +- .../stores/modules/batch_comments/actions_spec.js | 59 +- spec/frontend/behaviors/quick_submit_spec.js | 2 - spec/frontend/behaviors/requires_input_spec.js | 1 - .../behaviors/shortcuts/shortcuts_issuable_spec.js | 2 - spec/frontend/blob/blob_file_dropzone_spec.js | 14 +- spec/frontend/blob/sketch/index_spec.js | 2 - spec/frontend/blob/viewer/index_spec.js | 8 +- spec/frontend/boards/board_card_inner_spec.js | 371 + spec/frontend/boards/board_list_spec.js | 43 +- .../boards/board_new_issue_deprecated_spec.js | 8 + .../components/board_add_new_column_form_spec.js | 166 + .../boards/components/board_add_new_column_spec.js | 115 + .../components/board_card_deprecated_spec.js | 219 + .../board_card_layout_deprecated_spec.js | 2 +- .../boards/components/board_card_layout_spec.js | 116 - spec/frontend/boards/components/board_card_spec.js | 265 +- spec/frontend/boards/components/board_form_spec.js | 9 + .../boards/components/board_list_header_spec.js | 76 +- .../boards/components/board_new_issue_spec.js | 3 +- .../boards/components/filtered_search_spec.js | 65 + .../sidebar/board_sidebar_due_date_spec.js | 8 +- .../sidebar/board_sidebar_issue_title_spec.js | 6 +- .../sidebar/board_sidebar_labels_select_spec.js | 4 +- .../sidebar/board_sidebar_milestone_select_spec.js | 6 +- .../sidebar/board_sidebar_subscription_spec.js | 2 +- .../boards/components/sidebar/remove_issue_spec.js | 28 - spec/frontend/boards/issue_card_inner_spec.js | 372 - spec/frontend/boards/stores/actions_spec.js | 206 +- spec/frontend/boards/stores/getters_spec.js | 59 +- spec/frontend/boards/stores/mutations_spec.js | 135 +- spec/frontend/bootstrap_linked_tabs_spec.js | 2 - .../captcha_modal_axios_interceptor_spec.js | 119 + .../captcha/wait_for_captcha_to_be_solved_spec.js | 56 + .../ci_variable_list/ci_variable_list_spec.js | 3 - .../native_form_variable_list_spec.js | 2 - .../components/ci_environments_dropdown_spec.js | 27 +- .../clusters_list/components/clusters_spec.js | 2 +- spec/frontend/clusters_list/store/actions_spec.js | 2 +- spec/frontend/collapsed_sidebar_todo_spec.js | 3 - spec/frontend/commit/pipelines/pipelines_spec.js | 4 - spec/frontend/create_item_dropdown_spec.js | 2 - spec/frontend/deprecated_jquery_dropdown_spec.js | 2 - .../components/delete_button_spec.js | 4 +- .../design_notes/design_discussion_spec.js | 10 +- .../design_management/components/list/item_spec.js | 2 +- .../components/toolbar/index_spec.js | 4 +- .../upload/__snapshots__/button_spec.js.snap | 4 +- .../frontend/design_management/pages/index_spec.js | 6 +- spec/frontend/diffs/components/app_spec.js | 22 - .../diffs/components/settings_dropdown_spec.js | 160 +- spec/frontend/diffs/mock_data/diff_with_commit.js | 2 - spec/frontend/diffs/store/utils_spec.js | 6 + spec/frontend/diffs/utils/file_reviews_spec.js | 10 +- spec/frontend/diffs/utils/preferences_spec.js | 35 +- spec/frontend/emoji/components/category_spec.js | 49 + spec/frontend/emoji/components/emoji_group_spec.js | 56 + spec/frontend/emoji/components/emoji_list_spec.js | 73 + .../frontend/environments/environments_app_spec.js | 12 +- .../folder/environments_folder_view_spec.js | 14 +- .../experimentation/experiment_tracking_spec.js | 80 + spec/frontend/experimentation/utils_spec.js | 38 + .../configure_feature_flags_modal_spec.js | 23 +- .../components/edit_feature_flag_spec.js | 7 + .../frontend/filtered_search/dropdown_user_spec.js | 1 - .../filtered_search/dropdown_utils_spec.js | 1 - .../filtered_search/visual_token_value_spec.js | 2 - spec/frontend/fixtures/issues.rb | 2 + spec/frontend/fixtures/pipelines.rb | 32 +- spec/frontend/fixtures/projects.rb | 33 +- spec/frontend/fixtures/test_report.rb | 29 - spec/frontend/gfm_auto_complete_spec.js | 132 +- spec/frontend/gl_field_errors_spec.js | 2 - spec/frontend/graphql_shared/utils_spec.js | 34 + spec/frontend/groups/components/group_item_spec.js | 5 +- spec/frontend/header_spec.js | 1 - .../pipelines/__snapshots__/list_spec.js.snap | 1 - .../frontend/ide/components/pipelines/list_spec.js | 1 - spec/frontend/ide/components/repo_editor_spec.js | 1106 +- spec/frontend/ide/components/repo_tab_spec.js | 19 +- .../components/import_table_row_spec.js | 109 +- .../import_groups/components/import_table_spec.js | 50 +- .../import_groups/graphql/client_factory_spec.js | 90 +- .../graphql/services/source_groups_manager_spec.js | 55 +- .../graphql/services/status_poller_spec.js | 21 +- spec/frontend/incidents/mocks/incidents.json | 2 +- .../__snapshots__/alerts_form_spec.js.snap | 4 +- .../edit/components/integration_form_spec.js | 21 - .../integrations/integration_settings_form_spec.js | 1 - .../invite_members/components/group_select_spec.js | 90 + .../components/invite_group_trigger_spec.js | 50 + .../components/invite_members_modal_spec.js | 141 +- .../components/invite_members_trigger_spec.js | 31 +- .../components/members_token_select_spec.js | 2 +- .../issuable/components/csv_export_modal_spec.js | 91 + .../components/csv_import_export_buttons_spec.js | 161 + .../issuable/components/csv_import_modal_spec.js | 86 + .../issuable_list/components/issuable_item_spec.js | 2 +- spec/frontend/issue_show/components/app_spec.js | 47 +- .../issue_show/components/description_spec.js | 31 - .../components/fields/description_template_spec.js | 39 +- spec/frontend/issue_show/components/form_spec.js | 12 +- spec/frontend/issue_spec.js | 121 +- .../issues_list/components/issuable_spec.js | 35 +- .../jira_issues_import_status_app_spec.js | 115 + .../components/jira_issues_list_root_spec.js | 115 - spec/frontend/jira_connect/components/app_spec.js | 106 +- .../components/groups_list_item_spec.js | 12 + spec/frontend/jira_connect/store/mutations_spec.js | 18 +- spec/frontend/jira_connect/utils_spec.js | 32 + .../components/job_sidebar_retry_button_spec.js | 2 +- .../jobs/components/jobs_container_spec.js | 70 +- spec/frontend/lib/utils/experimentation_spec.js | 20 - spec/frontend/lib/utils/number_utility_spec.js | 22 + spec/frontend/lib/utils/select2_utils_spec.js | 100 + spec/frontend/lib/utils/text_markdown_spec.js | 53 +- spec/frontend/lib/utils/unit_format/index_spec.js | 304 +- spec/frontend/lib/utils/url_utility_spec.js | 8 + spec/frontend/line_highlighter_spec.js | 1 - spec/frontend/locale/index_spec.js | 66 +- .../members/components/avatars/user_avatar_spec.js | 26 +- spec/frontend/members/mock_data.js | 2 + spec/frontend/members/utils_spec.js | 37 +- .../frontend/merge_conflicts/store/actions_spec.js | 257 + spec/frontend/merge_request_spec.js | 1 - spec/frontend/merge_request_tabs_spec.js | 5 - spec/frontend/mini_pipeline_graph_dropdown_spec.js | 2 - .../components/dashboard_panel_builder_spec.js | 2 +- .../components/duplicate_dashboard_form_spec.js | 2 +- spec/frontend/monitoring/requests/index_spec.js | 6 +- spec/frontend/new_branch_spec.js | 2 - .../frontend/notes/components/comment_form_spec.js | 134 +- .../components/diff_discussion_header_spec.js | 4 - .../notes/components/discussion_actions_spec.js | 2 +- .../discussion_reply_placeholder_spec.js | 14 +- .../frontend/notes/components/note_actions_spec.js | 11 +- spec/frontend/notes/components/note_form_spec.js | 2 +- .../notes/components/noteable_discussion_spec.js | 4 +- .../notes/components/noteable_note_spec.js | 214 +- spec/frontend/notes/components/notes_app_spec.js | 4 +- spec/frontend/notes/stores/actions_spec.js | 66 +- spec/frontend/notes/stores/getters_spec.js | 2 - .../components/custom_notifications_modal_spec.js | 4 +- .../components/notifications_dropdown_spec.js | 38 +- spec/frontend/oauth_remember_me_spec.js | 2 - .../__snapshots__/conan_installation_spec.js.snap | 9 +- .../__snapshots__/maven_installation_spec.js.snap | 40 +- .../__snapshots__/npm_installation_spec.js.snap | 9 +- .../__snapshots__/nuget_installation_spec.js.snap | 9 +- .../__snapshots__/pypi_installation_spec.js.snap | 9 +- .../components/composer_installation_spec.js | 15 + .../details/components/conan_installation_spec.js | 14 +- .../details/components/installation_title_spec.js | 58 + .../details/components/maven_installation_spec.js | 120 +- .../details/components/npm_installation_spec.js | 14 +- .../details/components/nuget_installation_spec.js | 14 +- .../details/components/pypi_installation_spec.js | 14 +- .../packages/details/store/getters_spec.js | 28 +- .../__snapshots__/package_list_row_spec.js.snap | 4 +- .../shared/components/package_list_row_spec.js | 20 +- spec/frontend/packages/shared/utils_spec.js | 2 +- .../admin/abuse_reports/abuse_reports_spec.js | 2 - .../account_and_limits_spec.js | 1 - spec/frontend/pages/admin/users/new/index_spec.js | 2 - .../pages/dashboard/todos/index/todos_spec.js | 1 - .../projects/forks/new/components/app_spec.js | 42 + .../forks/new/components/fork_form_spec.js | 275 + .../__snapshots__/learn_gitlab_a_spec.js.snap | 16 +- .../__snapshots__/learn_gitlab_b_spec.js.snap | 569 +- .../learn_gitlab/components/learn_gitlab_a_spec.js | 45 +- .../learn_gitlab/components/learn_gitlab_b_spec.js | 75 +- .../components/learn_gitlab_info_card_spec.js | 57 + .../projects/learn_gitlab/components/mock_data.js | 42 + .../shared/components/timezone_dropdown_spec.js | 2 - .../permissions/components/settings_panel_spec.js | 1 + .../sessions/new/preserve_url_fragment_spec.js | 2 - .../sessions/new/signin_tabs_memoizer_spec.js | 2 - .../frontend/pages/shared/wikis/wiki_alert_spec.js | 40 + .../components/performance_bar_app_spec.js | 1 + spec/frontend/performance_bar/index_spec.js | 1 + .../components/commit/commit_form_spec.js | 8 +- .../components/commit/commit_section_spec.js | 4 +- .../header/pipeline_editor_header_spec.js | 37 +- .../components/header/pipeline_status_spec.js | 150 + .../components/header/validation_segment_spec.js | 21 +- .../ui/pipeline_editor_empty_state_spec.js | 79 + .../pipeline_editor/graphql/resolvers_spec.js | 18 + spec/frontend/pipeline_editor/mock_data.js | 16 + .../pipeline_editor/pipeline_editor_app_spec.js | 118 +- .../components/pipeline_new_form_spec.js | 141 +- .../pipeline_new/components/refs_dropdown_spec.js | 182 + spec/frontend/pipeline_new/mock_data.js | 20 +- .../pipelines_list/pipeline_mini_graph_spec.js | 83 + .../pipelines_list/pipeline_stage_spec.js | 210 + spec/frontend/pipelines/empty_state_spec.js | 3 +- .../pipelines/graph/graph_component_spec.js | 4 + .../graph/graph_component_wrapper_spec.js | 53 + .../graph/linked_pipelines_column_spec.js | 4 + .../pipelines/graph_shared/links_inner_spec.js | 149 + .../pipelines/graph_shared/links_layer_spec.js | 18 + spec/frontend/pipelines/mock_data.js | 322 - spec/frontend/pipelines/pipeline_triggerer_spec.js | 4 +- spec/frontend/pipelines/pipeline_url_spec.js | 34 +- spec/frontend/pipelines/pipelines_actions_spec.js | 10 +- .../frontend/pipelines/pipelines_artifacts_spec.js | 17 +- spec/frontend/pipelines/pipelines_spec.js | 29 +- .../frontend/pipelines/pipelines_table_row_spec.js | 35 +- spec/frontend/pipelines/pipelines_table_spec.js | 223 +- spec/frontend/pipelines/stage_spec.js | 297 - spec/frontend/pipelines/time_ago_spec.js | 14 +- spec/frontend/pipelines_spec.js | 2 - .../account/components/update_username_spec.js | 33 +- .../components/profile_preferences_spec.js | 147 +- spec/frontend/profile/preferences/mock_data.js | 12 + spec/frontend/project_select_combo_button_spec.js | 2 - .../projects/compare/components/app_legacy_spec.js | 116 + .../projects/compare/components/app_spec.js | 10 +- .../compare/components/repo_dropdown_spec.js | 98 + .../compare/components/revision_card_spec.js | 49 + .../components/revision_dropdown_legacy_spec.js | 106 + .../compare/components/revision_dropdown_spec.js | 18 +- .../projects/details/upload_button_spec.js | 54 + .../new_project_push_tip_popover_spec.js | 75 + .../components/welcome_spec.js | 10 + .../components/service_desk_root_spec.js | 2 +- .../projects/upload_file_experiment_spec.js | 52 + .../prometheus_metrics/custom_metrics_spec.js | 1 - .../prometheus_metrics/prometheus_metrics_spec.js | 1 - .../protected_branch_edit_spec.js | 88 + spec/frontend/read_more_spec.js | 2 - .../__snapshots__/ref_selector_spec.js.snap | 70 + spec/frontend/ref/components/ref_selector_spec.js | 211 +- spec/frontend/ref/stores/actions_spec.js | 22 +- spec/frontend/ref/stores/mutations_spec.js | 11 +- .../explorer/components/delete_button_spec.js | 1 + .../components/details_page/details_header_spec.js | 51 +- .../components/list_page/image_list_row_spec.js | 11 +- .../components/list_page/registry_header_spec.js | 37 - .../registry/explorer/pages/details_spec.js | 22 + .../components/related_issuable_input_spec.js | 117 + .../releases/components/tag_field_new_spec.js | 115 +- .../components/grouped_test_reports_app_spec.js | 49 +- .../reports/components/summary_row_spec.js | 24 +- .../reports/components/test_issue_body_spec.js | 117 +- spec/frontend/reports/mock_data/mock_data.js | 16 +- spec/frontend/reports/store/mutations_spec.js | 12 +- .../components/upload_blob_modal_spec.js | 193 + spec/frontend/right_sidebar_spec.js | 1 - .../search/highlight_blob_search_result_spec.js | 2 - spec/frontend/search_autocomplete_spec.js | 1 - .../configuration_table_spec.js | 42 +- .../security_configuration/upgrade_spec.js | 19 +- spec/frontend/sentry/sentry_config_spec.js | 2 +- spec/frontend/settings_panels_spec.js | 2 - spec/frontend/shared/popover_spec.js | 166 - spec/frontend/shortcuts_spec.js | 2 - .../confidential_issue_sidebar_spec.js.snap | 199 - .../sidebar_confidentiality_content_spec.js | 71 + .../sidebar_confidentiality_form_spec.js | 173 + .../sidebar_confidentiality_widget_spec.js | 159 + .../reviewers/uncollapsed_reviewer_list_spec.js | 18 +- .../__snapshots__/edit_form_spec.js.snap | 50 - .../sidebar/confidential/edit_form_buttons_spec.js | 146 - .../sidebar/confidential/edit_form_spec.js | 48 - .../sidebar/confidential_issue_sidebar_spec.js | 159 - spec/frontend/sidebar/mock_data.js | 13 + spec/frontend/sidebar/subscriptions_spec.js | 9 + spec/frontend/sidebar/user_data_mock.js | 1 + spec/frontend/single_file_diff_spec.js | 96 + .../snippet_visibility_edit_spec.js.snap | 6 + spec/frontend/test_setup.js | 5 - spec/frontend/tooltips/components/tooltips_spec.js | 10 + spec/frontend/tracking_spec.js | 92 +- spec/frontend/user_popovers_spec.js | 27 +- .../components/artifacts_list_app_spec.js | 2 +- .../components/mr_collapsible_extension_spec.js | 14 +- .../mr_widget_pipeline_container_spec.js | 8 + .../components/mr_widget_pipeline_spec.js | 38 +- .../mr_widget_auto_merge_enabled_spec.js.snap | 2 + .../components/states/mr_widget_conflicts_spec.js | 109 +- .../states/mr_widget_nothing_to_merge_spec.js | 12 +- .../deployment/deployment_list_spec.js | 101 + .../vue_shared/alert_details/alert_details_spec.js | 24 +- .../vue_shared/alert_details/mocks/alerts.json | 2 +- .../markdown/suggestion_diff_header_spec.js | 5 +- .../components/multiselect_dropdown_spec.js | 4 + .../__snapshots__/code_instruction_spec.js.snap | 90 +- .../registry/persisted_dropdown_selection_spec.js | 122 + .../__snapshots__/settings_block_spec.js.snap | 2 +- .../components/settings/settings_block_spec.js | 21 + .../labels_select_vue/dropdown_value_spec.js | 44 +- .../sidebar/labels_select_vue/mock_data.js | 1 + .../vue_shared/components/tabs/tab_spec.js | 32 - .../vue_shared/components/tabs/tabs_spec.js | 61 - .../components/tooltip_on_truncate_spec.js | 11 +- .../__snapshots__/upload_dropzone_spec.js.snap | 67 +- .../upload_dropzone/upload_dropzone_spec.js | 34 +- .../components/user_access_role_badge_spec.js | 26 + .../components/user_popover/user_popover_spec.js | 1 - .../frontend/vue_shared/directives/tooltip_spec.js | 157 - .../vue_shared/gl_feature_flags_plugin_spec.js | 8 + spec/frontend/zen_mode_spec.js | 2 - .../frontend_integration/ide/helpers/ide_helper.js | 3 + spec/frontend_integration/ide/helpers/mock_data.js | 1 - spec/frontend_integration/ide/helpers/start.js | 11 +- .../ide/ide_integration_spec.js | 27 +- .../frontend_integration/ide/user_opens_mr_spec.js | 6 +- .../test_helpers/mock_server/graphql.js | 8 +- spec/generator_helper.rb | 15 + spec/graphql/features/authorization_spec.rb | 37 +- spec/graphql/features/feature_flag_spec.rb | 3 +- spec/graphql/gitlab_schema_spec.rb | 25 +- spec/graphql/mutations/boards/update_spec.rb | 57 + .../mutations/can_mutate_spammable_spec.rb | 2 +- spec/graphql/mutations/custom_emoji/create_spec.rb | 27 + .../mutations/merge_requests/accept_spec.rb | 171 + .../mutations/release_asset_links/create_spec.rb | 105 + .../graphql/mutations/user_callouts/create_spec.rb | 42 + .../measurements_resolver_spec.rb | 100 - .../usage_trends/measurements_resolver_spec.rb | 100 + .../http_integrations_resolver_spec.rb | 51 + spec/graphql/resolvers/board_resolver_spec.rb | 4 +- spec/graphql/resolvers/boards_resolver_spec.rb | 4 +- .../resolvers/branch_commit_resolver_spec.rb | 4 + .../concerns/caching_array_resolver_spec.rb | 3 +- .../error_tracking/sentry_errors_resolver_spec.rb | 6 +- .../resolvers/group_labels_resolver_spec.rb | 2 +- .../resolvers/group_packages_resolver_spec.rb | 18 + spec/graphql/resolvers/issues_resolver_spec.rb | 8 +- spec/graphql/resolvers/labels_resolver_spec.rb | 36 +- .../resolvers/merge_requests_resolver_spec.rb | 2 +- .../resolvers/namespace_projects_resolver_spec.rb | 57 +- spec/graphql/resolvers/packages_resolver_spec.rb | 17 - .../resolvers/project_packages_resolver_spec.rb | 17 + .../resolvers/project_pipeline_resolver_spec.rb | 37 +- .../resolvers/release_milestones_resolver_spec.rb | 2 +- spec/graphql/types/access_level_enum_spec.rb | 2 +- .../measurement_identifier_enum_spec.rb | 16 - .../instance_statistics/measurement_type_spec.rb | 55 - .../measurement_identifier_enum_spec.rb | 16 + .../usage_trends/measurement_type_spec.rb | 55 + .../types/alert_management/alert_type_spec.rb | 3 +- spec/graphql/types/base_argument_spec.rb | 17 + spec/graphql/types/board_type_spec.rb | 2 +- spec/graphql/types/ci/job_type_spec.rb | 2 + spec/graphql/types/ci/pipeline_type_spec.rb | 4 +- spec/graphql/types/global_id_type_spec.rb | 23 +- spec/graphql/types/group_type_spec.rb | 1 + spec/graphql/types/label_type_spec.rb | 11 +- spec/graphql/types/merge_request_type_spec.rb | 31 +- spec/graphql/types/query_type_spec.rb | 10 +- spec/graphql/types/snippet_type_spec.rb | 10 + spec/graphql/types/snippets/blob_type_spec.rb | 47 +- .../types/user_callout_feature_name_enum_spec.rb | 11 + spec/graphql/types/user_callout_type_spec.rb | 11 + spec/graphql/types/user_type_spec.rb | 9 + spec/helpers/application_settings_helper_spec.rb | 15 +- spec/helpers/auth_helper_spec.rb | 8 +- spec/helpers/avatars_helper_spec.rb | 65 +- spec/helpers/boards_helper_spec.rb | 71 +- spec/helpers/ci/pipeline_editor_helper_spec.rb | 7 - spec/helpers/commits_helper_spec.rb | 10 - spec/helpers/gitlab_routing_helper_spec.rb | 10 + spec/helpers/ide_helper_spec.rb | 47 + spec/helpers/invite_members_helper_spec.rb | 25 +- .../issuables_description_templates_helper_spec.rb | 104 +- spec/helpers/learn_gitlab_helper_spec.rb | 6 +- spec/helpers/merge_requests_helper_spec.rb | 53 + spec/helpers/namespaces_helper_spec.rb | 36 +- spec/helpers/notifications_helper_spec.rb | 16 - spec/helpers/preferences_helper_spec.rb | 1 + .../projects/project_members_helper_spec.rb | 4 +- .../projects/security/configuration_helper_spec.rb | 13 + spec/helpers/search_helper_spec.rb | 2 +- spec/helpers/services_helper_spec.rb | 46 +- spec/helpers/stat_anchors_helper_spec.rb | 18 +- spec/helpers/timeboxes_helper_spec.rb | 9 - spec/helpers/visibility_level_helper_spec.rb | 16 + spec/initializers/rack_multipart_patch_spec.rb | 79 + spec/lib/api/entities/plan_limit_spec.rb | 24 + .../project_repository_storage_move_spec.rb | 21 - .../projects/repository_storage_move_spec.rb | 21 + spec/lib/api/entities/public_group_details_spec.rb | 24 + .../snippet_repository_storage_move_spec.rb | 25 - .../snippets/repository_storage_move_spec.rb | 25 + spec/lib/backup/repositories_spec.rb | 10 + spec/lib/banzai/filter/custom_emoji_filter_spec.rb | 29 +- spec/lib/banzai/filter/emoji_filter_spec.rb | 27 +- spec/lib/banzai/filter/sanitization_filter_spec.rb | 28 +- spec/lib/banzai/filter/video_link_filter_spec.rb | 1 + spec/lib/banzai/pipeline/full_pipeline_spec.rb | 7 + .../pipeline/plain_markdown_pipeline_spec.rb | 80 +- .../common/loaders/entity_loader_spec.rb | 30 - .../transformers/award_emoji_transformer_spec.rb | 48 - .../prohibited_attributes_transformer_spec.rb | 6 + .../user_reference_transformer_spec.rb | 69 + .../groups/graphql/get_labels_query_spec.rb | 21 +- .../groups/graphql/get_milestones_query_spec.rb | 35 + .../groups/loaders/labels_loader_spec.rb | 30 - .../groups/loaders/members_loader_spec.rb | 42 - .../groups/pipelines/labels_pipeline_spec.rb | 41 +- .../groups/pipelines/members_pipeline_spec.rb | 32 +- .../groups/pipelines/milestones_pipeline_spec.rb | 151 + .../pipelines/subgroup_entities_pipeline_spec.rb | 40 +- .../group_attributes_transformer_spec.rb | 4 +- .../bulk_imports/importers/group_importer_spec.rb | 3 + spec/lib/bulk_imports/pipeline/runner_spec.rb | 162 +- spec/lib/bulk_imports/pipeline_spec.rb | 114 +- .../error_tracking/sentry_client/api_urls_spec.rb | 85 + .../lib/error_tracking/sentry_client/event_spec.rb | 75 + .../sentry_client/issue_link_spec.rb | 65 + .../lib/error_tracking/sentry_client/issue_spec.rb | 330 + .../sentry_client/pagination_parser_spec.rb | 60 + .../error_tracking/sentry_client/projects_spec.rb | 100 + spec/lib/error_tracking/sentry_client/repo_spec.rb | 39 + spec/lib/error_tracking/sentry_client_spec.rb | 17 + spec/lib/expand_variables_spec.rb | 7 + spec/lib/feature_spec.rb | 2 +- .../usage_metric_definition_generator_spec.rb | 75 + .../alert_management/payload/generic_spec.rb | 2 +- .../analytics/cycle_analytics/average_spec.rb | 66 + .../analytics/cycle_analytics/sorting_spec.rb | 58 + .../workers_argument_builder_spec.rb | 81 - .../usage_trends/workers_argument_builder_spec.rb | 81 + spec/lib/gitlab/application_context_spec.rb | 30 +- spec/lib/gitlab/auth/o_auth/user_spec.rb | 17 + spec/lib/gitlab/avatar_cache_spec.rb | 101 + .../primary_key_batching_strategy_spec.rb | 45 + ...y_column_using_background_migration_job_spec.rb | 29 +- ...uest_assignees_migration_progress_check_spec.rb | 99 - .../migrate_legacy_artifacts_spec.rb | 2 +- ...finding_uuid_for_vulnerability_feedback_spec.rb | 33 +- ...culate_vulnerabilities_occurrences_uuid_spec.rb | 149 + .../set_default_iteration_cadences_spec.rb | 80 + spec/lib/gitlab/checks/branch_check_spec.rb | 76 + spec/lib/gitlab/checks/lfs_check_spec.rb | 23 +- spec/lib/gitlab/ci/build/context/build_spec.rb | 4 +- spec/lib/gitlab/ci/build/context/global_spec.rb | 4 +- spec/lib/gitlab/ci/build/policy/variables_spec.rb | 4 +- spec/lib/gitlab/ci/build/rules/rule_spec.rb | 2 +- spec/lib/gitlab/ci/build/rules_spec.rb | 2 +- spec/lib/gitlab/ci/charts_spec.rb | 7 +- spec/lib/gitlab/ci/config/entry/cache_spec.rb | 344 +- .../lib/gitlab/ci/config/entry/environment_spec.rb | 33 + spec/lib/gitlab/ci/config/entry/job_spec.rb | 40 +- spec/lib/gitlab/ci/config/entry/root_spec.rb | 229 +- spec/lib/gitlab/ci/jwt_spec.rb | 11 - .../ci/pipeline/expression/statement_spec.rb | 17 +- .../gitlab/ci/pipeline/seed/build/cache_spec.rb | 287 +- spec/lib/gitlab/ci/pipeline/seed/build_spec.rb | 263 +- .../gitlab/ci/pipeline/seed/environment_spec.rb | 59 + .../reports/codequality_reports_comparer_spec.rb | 56 + .../lib/gitlab/ci/reports/reports_comparer_spec.rb | 34 + spec/lib/gitlab/ci/status/composite_spec.rb | 21 + spec/lib/gitlab/ci/status/factory_spec.rb | 10 + .../templates/auto_devops_gitlab_ci_yaml_spec.rb | 372 +- spec/lib/gitlab/ci/trace_spec.rb | 2 +- .../gitlab/ci/variables/collection/item_spec.rb | 84 + .../gitlab/ci/variables/collection/sort_spec.rb | 322 + .../gitlab/ci/variables/collection/sorted_spec.rb | 259 - spec/lib/gitlab/ci/variables/collection_spec.rb | 117 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 237 +- .../gitlab/cycle_analytics/stage_summary_spec.rb | 33 +- spec/lib/gitlab/data_builder/build_spec.rb | 8 + spec/lib/gitlab/data_builder/pipeline_spec.rb | 8 + .../background_migration/batched_job_spec.rb | 50 + .../background_migration/batched_migration_spec.rb | 160 + .../batched_migration_wrapper_spec.rb | 70 + .../background_migration/scheduler_spec.rb | 182 + spec/lib/gitlab/database/bulk_update_spec.rb | 36 +- spec/lib/gitlab/database/migration_helpers_spec.rb | 2 +- .../background_migration_helpers_spec.rb | 116 +- .../migrations/observers/query_statistics_spec.rb | 68 + .../v1/rename_base_spec.rb | 31 +- spec/lib/gitlab/database/similarity_score_spec.rb | 2 +- spec/lib/gitlab/database_spec.rb | 108 + spec/lib/gitlab/diff/highlight_cache_spec.rb | 8 +- spec/lib/gitlab/diff/highlight_spec.rb | 16 +- .../diff/inline_diff_markdown_marker_spec.rb | 4 +- spec/lib/gitlab/diff/inline_diff_spec.rb | 11 - spec/lib/gitlab/diff/pair_selector_spec.rb | 84 + .../email/handler/service_desk_handler_spec.rb | 2 +- .../context_payload_generator_spec.rb | 176 + .../gitlab/error_tracking/log_formatter_spec.rb | 71 + .../processor/context_payload_processor_spec.rb | 45 + spec/lib/gitlab/error_tracking_spec.rb | 219 +- .../lib/gitlab/etag_caching/router/graphql_spec.rb | 50 + .../lib/gitlab/etag_caching/router/restful_spec.rb | 124 + spec/lib/gitlab/etag_caching/router_spec.rb | 147 +- spec/lib/gitlab/etag_caching/store_spec.rb | 84 + .../experimentation/controller_concern_spec.rb | 74 +- spec/lib/gitlab/experimentation_spec.rb | 6 +- spec/lib/gitlab/git/push_spec.rb | 2 +- .../pull_request_merged_by_importer_spec.rb | 41 +- .../importer/pull_request_review_importer_spec.rb | 14 +- .../graphql/calls_gitaly/field_extension_spec.rb | 87 + .../graphql/calls_gitaly/instrumentation_spec.rb | 23 - spec/lib/gitlab/graphql/docs/renderer_spec.rb | 48 +- .../graphql/pagination/keyset/last_items_spec.rb | 2 +- .../graphql/pagination/keyset/order_info_spec.rb | 12 - .../pagination/keyset/query_builder_spec.rb | 38 - .../gitlab/graphql/present/field_extension_spec.rb | 143 + .../query_analyzers/logger_analyzer_spec.rb | 56 +- .../hook_data/project_member_builder_spec.rb | 58 + spec/lib/gitlab/http_connection_adapter_spec.rb | 231 +- spec/lib/gitlab/import_export/all_models.yml | 1 + .../lib/gitlab/import_export/import_export_spec.rb | 4 +- .../import_export/project/tree_saver_spec.rb | 20 +- .../gitlab/import_export/safe_model_attributes.yml | 3 + spec/lib/gitlab/marker_range_spec.rb | 71 + .../gitlab/metrics/background_transaction_spec.rb | 67 + .../metrics/subscribers/active_record_spec.rb | 315 +- spec/lib/gitlab/optimistic_locking_spec.rb | 109 +- .../keyset/column_order_definition_spec.rb | 188 + spec/lib/gitlab/pagination/keyset/order_spec.rb | 420 + .../active_support_subscriber_spec.rb | 12 +- spec/lib/gitlab/query_limiting/transaction_spec.rb | 24 + spec/lib/gitlab/query_limiting_spec.rb | 14 + spec/lib/gitlab/regex_spec.rb | 29 + .../sidekiq_middleware/server_metrics_spec.rb | 10 + .../sidekiq_middleware/size_limiter/client_spec.rb | 99 + .../size_limiter/exceed_limit_error_spec.rb | 35 + .../size_limiter/validator_spec.rb | 253 + spec/lib/gitlab/sidekiq_middleware_spec.rb | 1 + spec/lib/gitlab/string_range_marker_spec.rb | 2 +- spec/lib/gitlab/string_regex_marker_spec.rb | 4 +- spec/lib/gitlab/tracking/standard_context_spec.rb | 20 +- spec/lib/gitlab/tree_summary_spec.rb | 31 +- spec/lib/gitlab/url_blocker_spec.rb | 4 +- spec/lib/gitlab/usage/docs/renderer_spec.rb | 10 +- spec/lib/gitlab/usage/docs/value_formatter_spec.rb | 6 +- .../usage/metrics/aggregates/aggregate_spec.rb | 243 +- .../aggregates/sources/postgres_hll_spec.rb | 6 +- .../metrics/names_suggestions/generator_spec.rb | 49 + .../usage_data_counters/aggregated_metrics_spec.rb | 24 + .../usage_data_counters/code_review_events_spec.rb | 23 + .../usage_data_counters/hll_redis_counter_spec.rb | 12 +- .../issue_activity_unique_counter_spec.rb | 52 +- .../merge_request_activity_unique_counter_spec.rb | 102 + .../package_event_counter_spec.rb | 2 +- .../quick_action_activity_unique_counter_spec.rb | 20 + spec/lib/gitlab/usage_data_queries_spec.rb | 8 + spec/lib/gitlab/usage_data_spec.rb | 55 +- spec/lib/gitlab/utils/usage_data_spec.rb | 57 +- spec/lib/gitlab/visibility_level_spec.rb | 25 + spec/lib/gitlab/word_diff/chunk_collection_spec.rb | 44 + spec/lib/gitlab/word_diff/line_processor_spec.rb | 46 + spec/lib/gitlab/word_diff/parser_spec.rb | 67 + .../lib/gitlab/word_diff/positions_counter_spec.rb | 35 + spec/lib/gitlab/word_diff/segments/chunk_spec.rb | 53 + .../gitlab/word_diff/segments/diff_hunk_spec.rb | 51 + spec/lib/gitlab/word_diff/segments/newline_spec.rb | 13 + spec/lib/gitlab/x509/signature_spec.rb | 122 +- spec/lib/marginalia_spec.rb | 83 +- spec/lib/object_storage/direct_upload_spec.rb | 11 + spec/lib/pager_duty/webhook_payload_parser_spec.rb | 3 +- spec/lib/peek/views/active_record_spec.rb | 71 + spec/lib/quality/test_level_spec.rb | 4 +- .../lib/release_highlights/validator/entry_spec.rb | 19 +- spec/lib/release_highlights/validator_spec.rb | 5 +- spec/lib/rspec_flaky/config_spec.rb | 106 - spec/lib/rspec_flaky/example_spec.rb | 92 - spec/lib/rspec_flaky/flaky_example_spec.rb | 165 - .../rspec_flaky/flaky_examples_collection_spec.rb | 74 - spec/lib/rspec_flaky/listener_spec.rb | 219 - spec/lib/rspec_flaky/report_spec.rb | 129 - spec/lib/sentry/api_urls_spec.rb | 85 - spec/lib/sentry/client/event_spec.rb | 75 - spec/lib/sentry/client/issue_link_spec.rb | 65 - spec/lib/sentry/client/issue_spec.rb | 330 - spec/lib/sentry/client/projects_spec.rb | 100 - spec/lib/sentry/client/repo_spec.rb | 39 - spec/lib/sentry/client_spec.rb | 17 - spec/lib/sentry/pagination_parser_spec.rb | 60 - spec/lib/system_check/sidekiq_check_spec.rb | 81 + spec/mailers/emails/merge_requests_spec.rb | 200 +- spec/mailers/emails/pipelines_spec.rb | 2 +- spec/mailers/emails/profile_spec.rb | 9 +- spec/mailers/notify_spec.rb | 109 +- ...ate_uuid_on_vulnerabilities_occurrences_spec.rb | 138 + ...dd_environment_scope_to_group_variables_spec.rb | 46 + ...ith_bad_has_external_issue_tracker_data_spec.rb | 94 + ...l_from_namespaces_to_namespace_settings_spec.rb | 30 + .../reschedule_artifact_expiry_backfill_spec.rb | 38 + ...schedule_set_default_iteration_cadences_spec.rb | 41 + ...uest_assignees_migration_progress_check_spec.rb | 16 - ...le_populate_personal_snippet_statistics_spec.rb | 10 +- .../instance_statistics/measurement_spec.rb | 118 - .../analytics/usage_trends/measurement_spec.rb | 118 + spec/models/application_setting_spec.rb | 31 +- spec/models/bulk_imports/entity_spec.rb | 18 +- spec/models/ci/bridge_spec.rb | 6 +- spec/models/ci/build_spec.rb | 143 +- .../ci/daily_build_group_report_result_spec.rb | 34 - spec/models/ci/group_variable_spec.rb | 12 +- spec/models/ci/pipeline_spec.rb | 728 +- spec/models/ci/runner_spec.rb | 112 +- spec/models/ci/variable_spec.rb | 9 + spec/models/clusters/agent_token_spec.rb | 5 +- spec/models/concerns/ci/has_variable_spec.rb | 11 + .../project_features_compatibility_spec.rb | 4 +- spec/models/custom_emoji_spec.rb | 6 +- spec/models/dependency_proxy/manifest_spec.rb | 20 +- spec/models/email_spec.rb | 2 +- spec/models/environment_spec.rb | 89 + .../project_error_tracking_setting_spec.rb | 14 +- spec/models/experiment_spec.rb | 157 +- spec/models/group_spec.rb | 301 +- spec/models/issue_email_participant_spec.rb | 11 +- spec/models/issue_spec.rb | 8 + spec/models/iteration_spec.rb | 335 - spec/models/list_spec.rb | 71 +- spec/models/member_spec.rb | 8 +- spec/models/merge_request_spec.rb | 273 +- spec/models/namespace/traversal_hierarchy_spec.rb | 16 +- spec/models/namespace_spec.rb | 246 +- spec/models/note_spec.rb | 19 + spec/models/notification_recipient_spec.rb | 33 + spec/models/notification_setting_spec.rb | 3 +- spec/models/onboarding_progress_spec.rb | 26 +- spec/models/packages/package_file_spec.rb | 15 + spec/models/packages/package_spec.rb | 93 +- spec/models/pages/lookup_path_spec.rb | 8 - spec/models/project_feature_spec.rb | 2 +- .../models/project_repository_storage_move_spec.rb | 2 +- .../project_services/discord_service_spec.rb | 22 +- .../project_services/hangouts_chat_service_spec.rb | 6 +- spec/models/project_services/jira_service_spec.rb | 130 +- .../project_services/prometheus_service_spec.rb | 10 +- spec/models/project_services/slack_service_spec.rb | 112 + .../project_services/unify_circuit_service_spec.rb | 8 +- .../project_services/webex_teams_service_spec.rb | 6 +- spec/models/project_spec.rb | 58 +- .../projects/repository_storage_move_spec.rb | 35 + spec/models/prometheus_alert_event_spec.rb | 2 +- spec/models/protected_branch_spec.rb | 22 + spec/models/snippet_repository_spec.rb | 1 + .../models/snippet_repository_storage_move_spec.rb | 2 +- spec/models/snippet_spec.rb | 12 +- .../snippets/repository_storage_move_spec.rb | 13 + spec/models/todo_spec.rb | 17 - spec/models/upload_spec.rb | 2 +- spec/models/user_spec.rb | 218 +- spec/policies/base_policy_spec.rb | 6 +- spec/policies/group_policy_spec.rb | 38 +- spec/policies/project_policy_spec.rb | 94 +- spec/presenters/ci/build_runner_presenter_spec.rb | 24 + .../packages/composer/packages_presenter_spec.rb | 7 +- spec/presenters/project_presenter_spec.rb | 70 +- .../import_export/project_export_presenter_spec.rb | 20 +- spec/presenters/snippet_presenter_spec.rb | 2 +- spec/requests/api/admin/plan_limits_spec.rb | 177 + spec/requests/api/api_spec.rb | 24 + spec/requests/api/ci/runner/jobs_artifacts_spec.rb | 16 +- spec/requests/api/ci/runner/jobs_put_spec.rb | 5 +- .../api/ci/runner/jobs_request_post_spec.rb | 58 +- spec/requests/api/ci/runner/jobs_trace_spec.rb | 5 +- spec/requests/api/ci/runner/runners_delete_spec.rb | 8 +- spec/requests/api/ci/runner/runners_post_spec.rb | 64 +- .../api/ci/runner/runners_verify_post_spec.rb | 8 +- spec/requests/api/commit_statuses_spec.rb | 40 +- spec/requests/api/composer_packages_spec.rb | 46 + .../container_repository_details_spec.rb | 2 +- .../graphql/group/container_repositories_spec.rb | 2 +- spec/requests/api/graphql/group/packages_spec.rb | 78 + .../instance_statistics_measurements_spec.rb | 35 - spec/requests/api/graphql/issue/issue_spec.rb | 13 +- .../alerts/create_alert_issue_spec.rb | 6 +- .../mutations/merge_requests/accept_spec.rb | 44 + .../mutations/notes/create/diff_note_spec.rb | 23 +- .../mutations/release_asset_links/create_spec.rb | 59 + .../graphql/mutations/user_callouts/create_spec.rb | 29 + .../api/graphql/namespace/projects_spec.rb | 2 +- spec/requests/api/graphql/packages/package_spec.rb | 2 +- .../project/alert_management/alert/issue_spec.rb | 71 + .../project/alert_management/alerts_spec.rb | 4 +- .../graphql/project/container_repositories_spec.rb | 2 +- .../project/merge_request/diff_notes_spec.rb | 2 +- .../api/graphql/project/merge_request_spec.rb | 2 +- .../api/graphql/project/merge_requests_spec.rb | 249 +- spec/requests/api/graphql/project/packages_spec.rb | 71 +- spec/requests/api/graphql/project/pipeline_spec.rb | 12 +- spec/requests/api/graphql/snippets_spec.rb | 25 + .../api/graphql/usage_trends_measurements_spec.rb | 35 + spec/requests/api/helpers_spec.rb | 20 +- spec/requests/api/invitations_spec.rb | 112 +- spec/requests/api/jobs_spec.rb | 184 +- spec/requests/api/lint_spec.rb | 18 + spec/requests/api/merge_requests_spec.rb | 4 +- spec/requests/api/npm_instance_packages_spec.rb | 5 + spec/requests/api/npm_project_packages_spec.rb | 95 +- spec/requests/api/oauth_tokens_spec.rb | 8 +- spec/requests/api/project_attributes.yml | 5 +- spec/requests/api/project_packages_spec.rb | 17 + .../api/project_repository_storage_moves_spec.rb | 2 +- spec/requests/api/projects_spec.rb | 131 +- spec/requests/api/protected_branches_spec.rb | 18 + spec/requests/api/repositories_spec.rb | 34 + spec/requests/api/resource_access_tokens_spec.rb | 19 +- spec/requests/api/rubygem_packages_spec.rb | 294 +- .../api/snippet_repository_storage_moves_spec.rb | 2 +- spec/requests/api/users_spec.rb | 43 +- spec/requests/api/v3/github_spec.rb | 13 + spec/requests/api/wikis_spec.rb | 15 + spec/requests/ide_controller_spec.rb | 174 +- .../projects/merge_requests/content_spec.rb | 41 + spec/requests/projects/noteable_notes_spec.rb | 11 +- spec/rubocop/code_reuse_helpers_spec.rb | 1 - .../cop/active_record_association_reload_spec.rb | 1 - spec/rubocop/cop/api/base_spec.rb | 1 - .../cop/api/grape_array_missing_coerce_spec.rb | 1 - spec/rubocop/cop/avoid_becomes_spec.rb | 1 - .../cop/avoid_break_from_strong_memoize_spec.rb | 1 - ...id_keyword_arguments_in_sidekiq_workers_spec.rb | 1 - spec/rubocop/cop/avoid_return_from_blocks_spec.rb | 13 +- .../cop/avoid_route_redirect_leading_slash_spec.rb | 13 +- spec/rubocop/cop/ban_catch_throw_spec.rb | 1 - spec/rubocop/cop/code_reuse/finder_spec.rb | 1 - spec/rubocop/cop/code_reuse/presenter_spec.rb | 1 - spec/rubocop/cop/code_reuse/serializer_spec.rb | 1 - spec/rubocop/cop/code_reuse/service_class_spec.rb | 1 - spec/rubocop/cop/code_reuse/worker_spec.rb | 1 - spec/rubocop/cop/default_scope_spec.rb | 1 - spec/rubocop/cop/destroy_all_spec.rb | 1 - spec/rubocop/cop/filename_length_spec.rb | 1 - .../gitlab/avoid_uploaded_file_from_params_spec.rb | 1 - spec/rubocop/cop/gitlab/bulk_insert_spec.rb | 1 - spec/rubocop/cop/gitlab/change_timezone_spec.rb | 1 - .../cop/gitlab/const_get_inherit_false_spec.rb | 1 - .../cop/gitlab/duplicate_spec_location_spec.rb | 1 - spec/rubocop/cop/gitlab/except_spec.rb | 1 - .../rubocop/cop/gitlab/finder_with_find_by_spec.rb | 1 - spec/rubocop/cop/gitlab/httparty_spec.rb | 1 - spec/rubocop/cop/gitlab/intersect_spec.rb | 1 - spec/rubocop/cop/gitlab/json_spec.rb | 1 - .../gitlab/module_with_instance_variables_spec.rb | 1 - spec/rubocop/cop/gitlab/namespaced_class_spec.rb | 1 - .../rubocop/cop/gitlab/policy_rule_boolean_spec.rb | 1 - .../cop/gitlab/predicate_memoization_spec.rb | 1 - spec/rubocop/cop/gitlab/rails_logger_spec.rb | 1 - spec/rubocop/cop/gitlab/union_spec.rb | 1 - spec/rubocop/cop/graphql/authorize_types_spec.rb | 31 +- spec/rubocop/cop/graphql/descriptions_spec.rb | 45 +- spec/rubocop/cop/graphql/gid_expected_type_spec.rb | 1 - spec/rubocop/cop/graphql/id_type_spec.rb | 1 - spec/rubocop/cop/graphql/json_type_spec.rb | 1 - spec/rubocop/cop/graphql/resolver_type_spec.rb | 1 - .../cop/group_public_or_visible_to_user_spec.rb | 1 - spec/rubocop/cop/ignored_columns_spec.rb | 11 +- spec/rubocop/cop/include_sidekiq_worker_spec.rb | 1 - .../cop/inject_enterprise_edition_module_spec.rb | 1 - .../rubocop/cop/lint/last_keyword_argument_spec.rb | 1 - .../cop/migration/add_column_with_default_spec.rb | 11 +- .../migration/add_columns_to_wide_tables_spec.rb | 15 +- .../migration/add_concurrent_foreign_key_spec.rb | 31 +- .../cop/migration/add_concurrent_index_spec.rb | 27 +- spec/rubocop/cop/migration/add_index_spec.rb | 3 - .../migration/add_limit_to_text_columns_spec.rb | 41 +- spec/rubocop/cop/migration/add_reference_spec.rb | 9 +- spec/rubocop/cop/migration/add_timestamps_spec.rb | 46 +- .../migration/complex_indexes_require_name_spec.rb | 23 +- .../create_table_with_foreign_keys_spec.rb | 5 +- spec/rubocop/cop/migration/datetime_spec.rb | 149 +- spec/rubocop/cop/migration/drop_table_spec.rb | 15 +- spec/rubocop/cop/migration/hash_index_spec.rb | 47 +- spec/rubocop/cop/migration/prevent_strings_spec.rb | 23 +- .../cop/migration/refer_to_index_by_name_spec.rb | 21 +- spec/rubocop/cop/migration/remove_column_spec.rb | 45 +- .../cop/migration/remove_concurrent_index_spec.rb | 23 +- spec/rubocop/cop/migration/remove_index_spec.rb | 23 +- .../cop/migration/safer_boolean_column_spec.rb | 30 +- spec/rubocop/cop/migration/schedule_async_spec.rb | 97 +- spec/rubocop/cop/migration/timestamps_spec.rb | 45 +- .../cop/migration/update_column_in_batches_spec.rb | 35 +- .../with_lock_retries_disallowed_method_spec.rb | 68 +- .../with_lock_retries_with_change_spec.rb | 35 +- spec/rubocop/cop/performance/ar_count_each_spec.rb | 1 - .../ar_exists_and_present_blank_spec.rb | 1 - .../rubocop/cop/performance/readlines_each_spec.rb | 1 - .../cop/prefer_class_methods_over_module_spec.rb | 43 +- spec/rubocop/cop/project_path_helper_spec.rb | 1 - .../cop/put_group_routes_under_scope_spec.rb | 13 +- .../cop/put_project_routes_under_scope_spec.rb | 1 - .../cop/qa/ambiguous_page_object_name_spec.rb | 1 - spec/rubocop/cop/qa/element_with_pattern_spec.rb | 1 - spec/rubocop/cop/rspec/be_success_matcher_spec.rb | 1 - spec/rubocop/cop/rspec/env_assignment_spec.rb | 1 - .../cop/rspec/expect_gitlab_tracking_spec.rb | 1 - .../cop/rspec/factories_in_migration_specs_spec.rb | 1 - .../rspec/factory_bot/inline_association_spec.rb | 1 - .../cop/rspec/have_gitlab_http_status_spec.rb | 1 - .../cop/rspec/modify_sidekiq_middleware_spec.rb | 1 - spec/rubocop/cop/rspec/timecop_freeze_spec.rb | 1 - spec/rubocop/cop/rspec/timecop_travel_spec.rb | 1 - .../cop/rspec/top_level_describe_path_spec.rb | 1 - .../cop/ruby_interpolation_in_translation_spec.rb | 1 - spec/rubocop/cop/safe_params_spec.rb | 1 - .../scalability/bulk_perform_with_context_spec.rb | 1 - .../cop/scalability/cron_worker_context_spec.rb | 1 - spec/rubocop/cop/scalability/file_uploads_spec.rb | 1 - .../cop/scalability/idempotent_worker_spec.rb | 1 - spec/rubocop/cop/sidekiq_options_queue_spec.rb | 20 +- .../cop/static_translation_definition_spec.rb | 1 - .../distinct_count_by_large_foreign_key_spec.rb | 1 - spec/rubocop/cop/usage_data/large_table_spec.rb | 1 - spec/rubocop/migration_helpers_spec.rb | 1 - spec/rubocop/qa_helpers_spec.rb | 1 - spec/serializers/base_discussion_entity_spec.rb | 9 + spec/serializers/merge_request_user_entity_spec.rb | 53 +- spec/serializers/pipeline_serializer_spec.rb | 16 + .../serializers/test_suite_comparer_entity_spec.rb | 44 + .../create_alert_issue_service_spec.rb | 27 + .../process_prometheus_alert_service_spec.rb | 16 +- spec/services/boards/issues/list_service_spec.rb | 78 +- spec/services/boards/list_service_spec.rb | 24 - spec/services/boards/lists/list_service_spec.rb | 22 + spec/services/bulk_import_service_spec.rb | 17 + .../ci/create_pipeline_service/environment_spec.rb | 48 + .../ci/create_pipeline_service/rules_spec.rb | 20 +- spec/services/ci/create_pipeline_service_spec.rb | 2 +- .../ci/expire_pipeline_cache_service_spec.rb | 41 +- .../shared_processing_service.rb | 20 +- ...manual_allow_failure_true_deploy_needs_both.yml | 6 +- ...manual_allow_failure_true_deploy_needs_test.yml | 6 +- .../dag_build_test_manual_review_deploy.yml | 22 +- .../dag_test_manual_allow_failure_true.yml | 23 +- ...est_manual_allow_failure_true_deploy_always.yml | 9 +- ...manual_allow_failure_true_deploy_on_failure.yml | 13 +- ..._true_other_test_succeeds_deploy_needs_both.yml | 13 +- spec/services/ci/process_pipeline_service_spec.rb | 53 +- spec/services/ci/register_job_service_spec.rb | 933 +- .../services/ci/update_build_queue_service_spec.rb | 58 + .../create_or_update_namespace_service_spec.rb | 2 + ...reate_or_update_service_account_service_spec.rb | 43 + .../find_or_create_manifest_service_spec.rb | 46 +- .../dependency_proxy/head_manifest_service_spec.rb | 9 +- .../dependency_proxy/pull_manifest_service_spec.rb | 6 +- .../deployments/update_environment_service_spec.rb | 65 +- spec/services/groups/destroy_service_spec.rb | 6 +- .../groups/group_links/create_service_spec.rb | 56 +- .../groups/group_links/destroy_service_spec.rb | 4 +- .../groups/group_links/update_service_spec.rb | 8 +- .../groups/import_export/import_service_spec.rb | 28 +- spec/services/import/github_service_spec.rb | 64 + spec/services/issuable/bulk_update_service_spec.rb | 45 - spec/services/issuable/process_assignees_spec.rb | 71 + spec/services/issues/clone_service_spec.rb | 6 + spec/services/issues/create_service_spec.rb | 6 + spec/services/issues/move_service_spec.rb | 6 + spec/services/labels/promote_service_spec.rb | 66 +- spec/services/members/invite_service_spec.rb | 173 +- .../merge_requests/after_create_service_spec.rb | 26 + spec/services/merge_requests/build_service_spec.rb | 123 +- spec/services/merge_requests/merge_service_spec.rb | 13 +- .../merge_requests/post_merge_service_spec.rb | 134 - .../merge_requests/refresh_service_spec.rb | 27 + .../merge_requests/retarget_chain_service_spec.rb | 154 + .../services/merge_requests/update_service_spec.rb | 179 +- .../in_product_marketing_emails_service_spec.rb | 39 +- spec/services/notes/build_service_spec.rb | 140 +- spec/services/notes/update_service_spec.rb | 34 + spec/services/notification_service_spec.rb | 172 +- spec/services/onboarding_progress_service_spec.rb | 54 +- .../composer/create_package_service_spec.rb | 8 + .../services/packages/create_event_service_spec.rb | 24 - .../create_temporary_package_service_spec.rb | 44 + .../debian/find_or_create_incoming_service_spec.rb | 36 + .../debian/find_or_create_package_service_spec.rb | 54 + .../debian/get_or_create_incoming_service_spec.rb | 36 - .../metadata/append_package_file_service_spec.rb | 59 + .../metadata/create_versions_xml_service_spec.rb | 277 + .../packages/maven/metadata/sync_service_spec.rb | 154 + .../packages/npm/create_package_service_spec.rb | 51 +- .../packages/nuget/create_package_service_spec.rb | 37 - .../update_package_from_metadata_service_spec.rb | 5 +- .../rubygems/dependency_resolver_service_spec.rb | 100 + spec/services/pages/legacy_storage_lease_spec.rb | 8 - .../projects/alerting/notify_service_spec.rb | 8 +- .../projects/branches_by_mode_service_spec.rb | 4 +- spec/services/projects/create_service_spec.rb | 43 +- spec/services/projects/destroy_service_spec.rb | 503 +- ...ule_bulk_repository_shard_moves_service_spec.rb | 4 +- .../update_pages_configuration_service_spec.rb | 17 +- .../services/projects/update_pages_service_spec.rb | 35 + spec/services/projects/update_service_spec.rb | 2 +- .../quick_actions/interpret_service_spec.rb | 94 + .../repositories/changelog_service_spec.rb | 118 +- ...ule_bulk_repository_shard_moves_service_spec.rb | 4 +- spec/services/system_hooks_service_spec.rb | 3 - spec/services/system_note_service_spec.rb | 13 + .../system_notes/alert_management_service_spec.rb | 13 + .../system_notes/merge_requests_service_spec.rb | 2 +- .../users/dismiss_user_callout_service_spec.rb | 27 + .../refresh_authorized_projects_service_spec.rb | 8 +- .../has_spam_action_response_fields_spec.rb | 35 + spec/spec_helper.rb | 11 +- spec/support/capybara.rb | 24 +- spec/support/gitlab_experiment.rb | 21 +- spec/support/graphql/resolver_factories.rb | 40 + spec/support/helpers/cycle_analytics_helpers.rb | 4 +- spec/support/helpers/dependency_proxy_helpers.rb | 4 +- .../helpers/design_management_test_helpers.rb | 2 +- spec/support/helpers/features/releases_helpers.rb | 105 +- spec/support/helpers/gpg_helpers.rb | 4 + spec/support/helpers/graphql_helpers.rb | 200 +- .../support/helpers/javascript_fixtures_helpers.rb | 1 + spec/support/helpers/notification_helpers.rb | 4 +- spec/support/helpers/stub_object_storage.rb | 2 +- spec/support/helpers/test_env.rb | 24 +- .../matchers/background_migrations_matchers.rb | 20 +- spec/support/matchers/email_matcher.rb | 19 + spec/support/matchers/graphql_matchers.rb | 9 +- .../move_and_clone_services_shared_examples.rb | 22 + .../services/service_response_shared_examples.rb | 25 + .../features/error_tracking_shared_context.rb | 2 +- .../issuable/merge_request_shared_context.rb | 64 +- .../shared_contexts/navbar_structure_context.rb | 11 +- .../policies/group_policy_shared_context.rb | 4 +- .../policies/project_policy_shared_context.rb | 6 +- .../project_policy_table_shared_context.rb | 2 +- .../requests/api/npm_packages_shared_context.rb | 9 +- ...ty_and_compliance_permissions_shared_context.rb | 33 + .../alert_notification_service_shared_examples.rb | 15 + .../banzai/filters/emoji_shared_examples.rb | 46 + .../multiple_issue_boards_shared_examples.rb | 2 + .../create_notes_rate_limit_shared_examples.rb | 44 + .../controllers/snippet_blob_shared_examples.rb | 32 + .../comment_and_close_button_shared_examples.rb | 29 - .../features/discussion_comments_shared_example.rb | 216 +- .../issuable_invite_members_shared_examples.rb | 10 +- .../project_upload_files_shared_examples.rb | 36 +- .../features/variable_list_shared_examples.rb | 26 +- .../graphql/mutation_shared_examples.rb | 2 +- .../mutations/boards_create_shared_examples.rb | 6 +- .../mutations/can_mutate_spammable_examples.rb | 8 +- .../graphql/notes_on_noteables_shared_examples.rb | 2 +- .../gitlab_style_deprecations_shared_examples.rb | 2 +- ...suable_description_templates_shared_examples.rb | 4 +- .../cycle_analytics/event_shared_examples.rb | 1 + .../issuable_activity_shared_examples.rb | 37 + .../issue_activity_shared_examples.rb | 27 - .../lib/sentry/client_shared_examples.rb | 4 +- .../active_record_subscriber_shared_examples.rb | 137 + .../models/application_setting_shared_examples.rb | 15 +- .../boards/user_preferences_shared_examples.rb | 68 + .../models/chat_service_shared_examples.rb | 11 +- .../models/concerns/timebox_shared_examples.rb | 4 +- .../models/email_format_shared_examples.rb | 4 +- ...ack_mattermost_notifications_shared_examples.rb | 241 +- .../time_tracking_quick_action_shared_examples.rb | 2 +- .../requests/api/conan_packages_shared_examples.rb | 106 +- ...oup_and_project_boards_query_shared_examples.rb | 2 +- ...up_and_project_packages_list_shared_examples.rb | 51 + .../logging_application_context_shared_examples.rb | 16 + .../requests/api/npm_packages_shared_examples.rb | 593 +- .../api/rubygems_packages_shared_examples.rb | 194 + .../service_desk_issue_templates_examples.rb | 12 + .../boards/update_boards_shared_examples.rb | 83 + spec/support/snowplow.rb | 19 +- spec/support/stub_snowplow.rb | 23 + spec/tasks/admin_mode_spec.rb | 32 + spec/tasks/gitlab/packages/composer_rake_spec.rb | 28 + spec/tooling/danger/changelog_spec.rb | 182 +- spec/tooling/danger/helper_spec.rb | 127 +- spec/tooling/rspec_flaky/config_spec.rb | 106 + spec/tooling/rspec_flaky/example_spec.rb | 92 + spec/tooling/rspec_flaky/flaky_example_spec.rb | 185 + .../rspec_flaky/flaky_examples_collection_spec.rb | 74 + spec/tooling/rspec_flaky/listener_spec.rb | 227 + spec/tooling/rspec_flaky/report_spec.rb | 135 + .../dependency_proxy/file_uploader_spec.rb | 46 +- .../gitlab/utils/zoom_url_validator_spec.rb | 36 + spec/validators/zoom_url_validator_spec.rb | 36 - .../_package_registry.html.haml_spec.rb | 12 +- .../_repository_storage.html.haml_spec.rb | 47 +- spec/views/groups/show.html.haml_spec.rb | 52 - .../layouts/nav/sidebar/_project.html.haml_spec.rb | 4 +- ...ge_request_draft_status_email.html.haml_spec.rb | 19 + ...rge_request_draft_status_email.text.erb_spec.rb | 20 + spec/views/projects/_home_panel.html.haml_spec.rb | 10 +- spec/views/projects/empty.html.haml_spec.rb | 37 - .../projects/merge_requests/show.html.haml_spec.rb | 38 +- .../settings/operations/show.html.haml_spec.rb | 4 +- spec/views/projects/show.html.haml_spec.rb | 51 - .../count_job_trigger_worker_spec.rb | 4 +- .../instance_statistics/counter_job_worker_spec.rb | 14 +- .../usage_trends/count_job_trigger_worker_spec.rb | 17 + .../usage_trends/counter_job_worker_spec.rb | 70 + spec/workers/emails_on_push_worker_spec.rb | 36 +- .../error_tracking_issue_link_worker_spec.rb | 12 +- spec/workers/expire_job_cache_worker_spec.rb | 8 +- spec/workers/expire_pipeline_cache_worker_spec.rb | 9 - .../jira_connect/sync_project_worker_spec.rb | 2 +- .../delete_source_branch_worker_spec.rb | 63 + spec/workers/merge_worker_spec.rb | 2 +- .../in_product_marketing_emails_worker_spec.rb | 36 +- .../onboarding_issue_created_worker_spec.rb | 28 + .../namespaces/onboarding_progress_worker_spec.rb | 22 + spec/workers/new_issue_worker_spec.rb | 43 +- spec/workers/new_merge_request_worker_spec.rb | 45 +- .../packages/composer/cache_update_worker_spec.rb | 48 + .../packages/maven/metadata/sync_worker_spec.rb | 133 + .../pages_update_configuration_worker_spec.rb | 22 +- .../personal_access_tokens/expiring_worker_spec.rb | 15 +- spec/workers/post_receive_spec.rb | 25 +- ...dule_bulk_repository_shard_moves_worker_spec.rb | 4 +- ...roject_update_repository_storage_worker_spec.rb | 2 +- ...dule_bulk_repository_shard_moves_worker_spec.rb | 12 + .../update_repository_storage_worker_spec.rb | 15 + .../purge_dependency_proxy_cache_worker_spec.rb | 22 +- ...dule_bulk_repository_shard_moves_worker_spec.rb | 4 +- ...nippet_update_repository_storage_worker_spec.rb | 2 +- ...dule_bulk_repository_shard_moves_worker_spec.rb | 12 + .../update_repository_storage_worker_spec.rb | 15 + tests.yml | 4 + tooling/danger/changelog.rb | 41 +- tooling/danger/helper.rb | 99 +- tooling/overcommit/Gemfile | 1 - tooling/overcommit/Gemfile.lock | 14 - tooling/rspec_flaky/config.rb | 27 + tooling/rspec_flaky/example.rb | 53 + tooling/rspec_flaky/flaky_example.rb | 40 + tooling/rspec_flaky/flaky_examples_collection.rb | 38 + tooling/rspec_flaky/listener.rb | 67 + tooling/rspec_flaky/report.rb | 56 + vendor/aws/cloudformation/eks_cluster.yaml | 7 +- vendor/gitignore/C++.gitignore | 0 vendor/gitignore/Java.gitignore | 0 vendor/project_templates/dotnetcore.tar.gz | Bin 4924 -> 4923 bytes vendor/project_templates/express.tar.gz | Bin 17921 -> 17923 bytes .../learn_gitlab_gold_trial.tar.gz | Bin 115096 -> 0 bytes .../learn_gitlab_ultimate_trial.tar.gz | Bin 0 -> 115096 bytes workhorse/CHANGELOG | 16 +- workhorse/PROCESS.md | 4 + workhorse/README.md | 14 +- workhorse/VERSION | 2 +- workhorse/config_test.go | 2 +- workhorse/go.mod | 2 + workhorse/go.sum | 2 + workhorse/internal/errortracker/sentry.go | 60 - workhorse/internal/helper/helpers.go | 43 +- workhorse/internal/helper/raven.go | 58 + workhorse/internal/imageresizer/image_resizer.go | 10 +- workhorse/internal/log/logging.go | 6 +- workhorse/internal/upstream/upstream.go | 3 +- workhorse/main.go | 7 +- workhorse/raven.go | 40 + yarn.lock | 1976 +- 5715 files changed, 286907 insertions(+), 211211 deletions(-) delete mode 100644 .gitlab/ci/verify-lockfile.gitlab-ci.yml delete mode 100644 .gitlab/issue_templates/Adoption Engineering.md create mode 100644 .gitlab/issue_templates/Experimentation.md create mode 100644 .gitlab/issue_templates/experiment_tracking_template.md delete mode 100644 .scss-lint.yml mode change 100644 => 120000 GITLAB_WORKHORSE_VERSION create mode 100644 app/assets/images/learn_gitlab/code_owners_enabled.svg create mode 100644 app/assets/images/learn_gitlab/git_write.svg create mode 100644 app/assets/images/learn_gitlab/merge_request_created.svg create mode 100644 app/assets/images/learn_gitlab/pipeline_created.svg create mode 100644 app/assets/images/learn_gitlab/required_mr_approvals_enabled.svg create mode 100644 app/assets/images/learn_gitlab/security_scan_enabled.svg create mode 100644 app/assets/images/learn_gitlab/trial_started.svg create mode 100644 app/assets/images/learn_gitlab/user_added.svg create mode 100644 app/assets/javascripts/access_tokens/components/projects_field.vue create mode 100644 app/assets/javascripts/access_tokens/components/projects_token_selector.vue create mode 100644 app/assets/javascripts/access_tokens/graphql/queries/get_projects.query.graphql delete mode 100644 app/assets/javascripts/admin/dev_ops_report/components/usage_ping_disabled.vue delete mode 100644 app/assets/javascripts/admin/dev_ops_report/devops_adoption.js delete mode 100644 app/assets/javascripts/admin/dev_ops_report/devops_score_empty_state.js delete mode 100644 app/assets/javascripts/alerts_settings/components/mocks/parsedMapping.json create mode 100644 app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_item.fragment.graphql create mode 100644 app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_payload_data.fragment.graphql create mode 100644 app/assets/javascripts/alerts_settings/graphql/mutations/update_current_http_integration.mutation.graphql delete mode 100644 app/assets/javascripts/alerts_settings/graphql/mutations/update_current_intergration.mutation.graphql create mode 100644 app/assets/javascripts/alerts_settings/graphql/mutations/update_current_prometheus_integration.mutation.graphql create mode 100644 app/assets/javascripts/alerts_settings/graphql/queries/get_http_integrations.query.graphql create mode 100644 app/assets/javascripts/alerts_settings/graphql/queries/parse_sample_payload.query.graphql create mode 100644 app/assets/javascripts/analytics/devops_report/components/usage_ping_disabled.vue create mode 100644 app/assets/javascripts/analytics/devops_report/devops_score_empty_state.js delete mode 100644 app/assets/javascripts/analytics/instance_statistics/components/app.vue delete mode 100644 app/assets/javascripts/analytics/instance_statistics/components/charts_config.js delete mode 100644 app/assets/javascripts/analytics/instance_statistics/components/instance_counts.vue delete mode 100644 app/assets/javascripts/analytics/instance_statistics/components/instance_statistics_count_chart.vue delete mode 100644 app/assets/javascripts/analytics/instance_statistics/components/projects_and_groups_chart.vue delete mode 100644 app/assets/javascripts/analytics/instance_statistics/components/users_chart.vue delete mode 100644 app/assets/javascripts/analytics/instance_statistics/constants.js delete mode 100644 app/assets/javascripts/analytics/instance_statistics/graphql/fragments/count.fragment.graphql delete mode 100644 app/assets/javascripts/analytics/instance_statistics/graphql/queries/groups.query.graphql delete mode 100644 app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_count.query.graphql delete mode 100644 app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_statistics_count.query.graphql delete mode 100644 app/assets/javascripts/analytics/instance_statistics/graphql/queries/projects.query.graphql delete mode 100644 app/assets/javascripts/analytics/instance_statistics/graphql/queries/users.query.graphql delete mode 100644 app/assets/javascripts/analytics/instance_statistics/index.js delete mode 100644 app/assets/javascripts/analytics/instance_statistics/utils.js create mode 100644 app/assets/javascripts/analytics/usage_trends/components/app.vue create mode 100644 app/assets/javascripts/analytics/usage_trends/components/charts_config.js create mode 100644 app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue create mode 100644 app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue create mode 100644 app/assets/javascripts/analytics/usage_trends/components/users_chart.vue create mode 100644 app/assets/javascripts/analytics/usage_trends/constants.js create mode 100644 app/assets/javascripts/analytics/usage_trends/graphql/fragments/count.fragment.graphql create mode 100644 app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_count.query.graphql create mode 100644 app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_trends_count.query.graphql create mode 100644 app/assets/javascripts/analytics/usage_trends/graphql/queries/users.query.graphql create mode 100644 app/assets/javascripts/analytics/usage_trends/index.js create mode 100644 app/assets/javascripts/analytics/usage_trends/utils.js create mode 100644 app/assets/javascripts/boards/components/board_add_new_column.vue create mode 100644 app/assets/javascripts/boards/components/board_add_new_column_form.vue create mode 100644 app/assets/javascripts/boards/components/board_card_deprecated.vue create mode 100644 app/assets/javascripts/boards/components/board_card_inner.vue delete mode 100644 app/assets/javascripts/boards/components/board_card_layout.vue create mode 100644 app/assets/javascripts/boards/components/config_toggle.vue create mode 100644 app/assets/javascripts/boards/components/filtered_search.vue delete mode 100644 app/assets/javascripts/boards/components/issue_card_inner.vue delete mode 100644 app/assets/javascripts/boards/components/sidebar/remove_issue.vue create mode 100644 app/assets/javascripts/boards/filtered_search.js delete mode 100644 app/assets/javascripts/boards/graphql/users_search.query.graphql create mode 100644 app/assets/javascripts/boards/mixins/board_card_inner.js delete mode 100644 app/assets/javascripts/boards/mixins/issue_card_inner.js create mode 100644 app/assets/javascripts/captcha/captcha_modal_axios_interceptor.js create mode 100644 app/assets/javascripts/captcha/unsolved_captcha_error.js create mode 100644 app/assets/javascripts/captcha/wait_for_captcha_to_be_solved.js create mode 100644 app/assets/javascripts/cycle_analytics/components/base.vue delete mode 100644 app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js create mode 100644 app/assets/javascripts/cycle_analytics/index.js create mode 100644 app/assets/javascripts/editor/extensions/editor_lite_webide_ext.js create mode 100644 app/assets/javascripts/emoji/components/category.vue create mode 100644 app/assets/javascripts/emoji/components/emoji_group.vue create mode 100644 app/assets/javascripts/emoji/components/emoji_list.vue create mode 100644 app/assets/javascripts/emoji/components/picker.vue create mode 100644 app/assets/javascripts/emoji/components/utils.js create mode 100644 app/assets/javascripts/emoji/constants.js create mode 100644 app/assets/javascripts/experimentation/constants.js create mode 100644 app/assets/javascripts/experimentation/experiment_tracking.js create mode 100644 app/assets/javascripts/experimentation/utils.js create mode 100644 app/assets/javascripts/graphql_shared/queries/project_user_members_search.query.graphql create mode 100644 app/assets/javascripts/helpers/cve_id_request_helper.js create mode 100644 app/assets/javascripts/import_entities/import_groups/graphql/queries/group.query.graphql create mode 100644 app/assets/javascripts/invite_members/components/group_select.vue create mode 100644 app/assets/javascripts/invite_members/components/invite_group_trigger.vue create mode 100644 app/assets/javascripts/invite_members/init_invite_group_trigger.js create mode 100644 app/assets/javascripts/invite_members/init_invite_members_form.js create mode 100644 app/assets/javascripts/issuable/components/csv_export_modal.vue create mode 100644 app/assets/javascripts/issuable/components/csv_import_export_buttons.vue create mode 100644 app/assets/javascripts/issuable/components/csv_import_modal.vue create mode 100644 app/assets/javascripts/issuable/constants.js create mode 100644 app/assets/javascripts/issuable/init_csv_import_export_buttons.js create mode 100644 app/assets/javascripts/issuable_show/components/issuable_discussion.vue create mode 100644 app/assets/javascripts/issues_list/components/jira_issues_import_status_app.vue delete mode 100644 app/assets/javascripts/issues_list/components/jira_issues_list_root.vue create mode 100644 app/assets/javascripts/jira_connect/utils.js delete mode 100644 app/assets/javascripts/jobs/svg/scroll_down.svg delete mode 100644 app/assets/javascripts/lib/chrome_84_icon_fix.js delete mode 100644 app/assets/javascripts/lib/utils/experimentation.js create mode 100644 app/assets/javascripts/lib/utils/select2_utils.js delete mode 100644 app/assets/javascripts/members.js delete mode 100644 app/assets/javascripts/merge_conflicts/components/diff_file_editor.js create mode 100644 app/assets/javascripts/merge_conflicts/components/diff_file_editor.vue delete mode 100644 app/assets/javascripts/merge_conflicts/components/inline_conflict_lines.js create mode 100644 app/assets/javascripts/merge_conflicts/components/inline_conflict_lines.vue delete mode 100644 app/assets/javascripts/merge_conflicts/components/parallel_conflict_lines.js create mode 100644 app/assets/javascripts/merge_conflicts/components/parallel_conflict_lines.vue create mode 100644 app/assets/javascripts/merge_conflicts/constants.js create mode 100644 app/assets/javascripts/merge_conflicts/merge_conflict_resolver_app.vue create mode 100644 app/assets/javascripts/merge_conflicts/store/actions.js create mode 100644 app/assets/javascripts/merge_conflicts/store/getters.js create mode 100644 app/assets/javascripts/merge_conflicts/store/index.js create mode 100644 app/assets/javascripts/merge_conflicts/store/mutation_types.js create mode 100644 app/assets/javascripts/merge_conflicts/store/mutations.js create mode 100644 app/assets/javascripts/merge_conflicts/store/state.js create mode 100644 app/assets/javascripts/merge_conflicts/utils.js create mode 100644 app/assets/javascripts/notes/components/sidebar_subscription.vue create mode 100644 app/assets/javascripts/notes/i18n.js delete mode 100644 app/assets/javascripts/notifications_dropdown.js delete mode 100644 app/assets/javascripts/notifications_form.js create mode 100644 app/assets/javascripts/packages/details/components/installation_title.vue delete mode 100644 app/assets/javascripts/pages/admin/instance_statistics/index.js create mode 100644 app/assets/javascripts/pages/admin/usage_trends/index.js delete mode 100644 app/assets/javascripts/pages/profiles/index/index.js create mode 100644 app/assets/javascripts/pages/projects/forks/new/components/app.vue create mode 100644 app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue create mode 100644 app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab_info_card.vue create mode 100644 app/assets/javascripts/pages/shared/wikis/components/wiki_alert.vue create mode 100644 app/assets/javascripts/pipeline_editor/components/header/pipeline_status.vue create mode 100644 app/assets/javascripts/pipeline_editor/components/ui/pipeline_editor_empty_state.vue create mode 100644 app/assets/javascripts/pipeline_editor/graphql/queries/client/current_branch.graphql create mode 100644 app/assets/javascripts/pipeline_editor/graphql/queries/client/pipeline.graphql create mode 100644 app/assets/javascripts/pipeline_new/components/refs_dropdown.vue create mode 100644 app/assets/javascripts/pipelines/components/graph_shared/api.js create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipeline_mini_graph.vue create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipeline_operations.vue create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipeline_stage.vue delete mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipelines_actions.vue create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipelines_commit.vue create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipelines_manual_actions.vue create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipelines_status_badge.vue delete mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/stage.vue create mode 100644 app/assets/javascripts/projects/compare/components/app_legacy.vue create mode 100644 app/assets/javascripts/projects/compare/components/repo_dropdown.vue create mode 100644 app/assets/javascripts/projects/compare/components/revision_card.vue create mode 100644 app/assets/javascripts/projects/compare/components/revision_dropdown_legacy.vue create mode 100644 app/assets/javascripts/projects/details/upload_button.vue create mode 100644 app/assets/javascripts/projects/experiment_new_project_creation/components/new_project_push_tip_popover.vue create mode 100644 app/assets/javascripts/projects/feature_flags_user_lists/show/index.js create mode 100644 app/assets/javascripts/projects/upload_file_experiment.js create mode 100644 app/assets/javascripts/registry/explorer/constants/common.js create mode 100644 app/assets/javascripts/repository/components/upload_blob_modal.vue delete mode 100644 app/assets/javascripts/security_configuration/components/features_constants.js create mode 100644 app/assets/javascripts/security_configuration/components/scanners_constants.js delete mode 100644 app/assets/javascripts/sentry/wrapper.js delete mode 100644 app/assets/javascripts/shared/popover.js delete mode 100644 app/assets/javascripts/sidebar/components/confidential/confidential_issue_sidebar.vue delete mode 100644 app/assets/javascripts/sidebar/components/confidential/edit_form.vue delete mode 100644 app/assets/javascripts/sidebar/components/confidential/edit_form_buttons.vue delete mode 100644 app/assets/javascripts/sidebar/components/confidential/mutations/update_issue_confidential.mutation.graphql create mode 100644 app/assets/javascripts/sidebar/components/confidential/sidebar_confidentiality_content.vue create mode 100644 app/assets/javascripts/sidebar/components/confidential/sidebar_confidentiality_form.vue create mode 100644 app/assets/javascripts/sidebar/components/confidential/sidebar_confidentiality_widget.vue create mode 100644 app/assets/javascripts/sidebar/graphql.js create mode 100644 app/assets/javascripts/sidebar/queries/epic_confidential.query.graphql create mode 100644 app/assets/javascripts/sidebar/queries/issue_confidential.query.graphql create mode 100644 app/assets/javascripts/sidebar/queries/sidebarDetailsMR.query.graphql create mode 100644 app/assets/javascripts/sidebar/queries/update_epic_confidential.mutation.graphql create mode 100644 app/assets/javascripts/sidebar/queries/update_issue_confidential.mutation.graphql create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/deployment/deployment_list.vue create mode 100644 app/assets/javascripts/vue_shared/components/notes/timeline_icon.vue create mode 100644 app/assets/javascripts/vue_shared/components/registry/persisted_dropdown_selection.vue delete mode 100644 app/assets/javascripts/vue_shared/components/tabs/tab.vue delete mode 100644 app/assets/javascripts/vue_shared/components/tabs/tabs.js create mode 100644 app/assets/javascripts/vue_shared/components/user_access_role_badge.vue delete mode 100644 app/assets/javascripts/vue_shared/directives/tooltip.js delete mode 100644 app/assets/stylesheets/framework/tooltips.scss create mode 100644 app/assets/stylesheets/page_bundles/learn_gitlab.scss create mode 100644 app/assets/stylesheets/page_bundles/members.scss delete mode 100644 app/assets/stylesheets/pages/members.scss delete mode 100644 app/assets/stylesheets/pages/trials.scss create mode 100644 app/assets/stylesheets/test_environment.scss delete mode 100644 app/controllers/admin/instance_statistics_controller.rb create mode 100644 app/controllers/admin/usage_trends_controller.rb create mode 100644 app/controllers/concerns/check_rate_limit.rb delete mode 100644 app/controllers/concerns/comment_and_close_flag.rb create mode 100644 app/controllers/concerns/security_and_compliance_permissions.rb delete mode 100644 app/controllers/notification_settings_controller.rb create mode 100644 app/finders/admin/plans_finder.rb create mode 100644 app/finders/boards/boards_finder.rb delete mode 100644 app/finders/ci/testing/daily_build_group_report_results_finder.rb create mode 100644 app/finders/issuables/author_filter.rb create mode 100644 app/finders/issuables/base_filter.rb create mode 100644 app/finders/namespaces/projects_finder.rb create mode 100644 app/finders/projects/groups_finder.rb create mode 100644 app/finders/repositories/changelog_commits_finder.rb delete mode 100644 app/finders/repositories/commits_with_trailer_finder.rb create mode 100644 app/graphql/mutations/merge_requests/accept.rb create mode 100644 app/graphql/mutations/release_asset_links/base.rb create mode 100644 app/graphql/mutations/release_asset_links/create.rb create mode 100644 app/graphql/mutations/user_callouts/create.rb delete mode 100644 app/graphql/resolvers/admin/analytics/instance_statistics/measurements_resolver.rb create mode 100644 app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb create mode 100644 app/graphql/resolvers/alert_management/http_integrations_resolver.rb create mode 100644 app/graphql/resolvers/group_packages_resolver.rb delete mode 100644 app/graphql/resolvers/packages_resolver.rb create mode 100644 app/graphql/resolvers/project_packages_resolver.rb delete mode 100644 app/graphql/types/admin/analytics/instance_statistics/measurement_identifier_enum.rb delete mode 100644 app/graphql/types/admin/analytics/instance_statistics/measurement_type.rb create mode 100644 app/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum.rb create mode 100644 app/graphql/types/admin/analytics/usage_trends/measurement_type.rb create mode 100644 app/graphql/types/merge_strategy_enum.rb create mode 100644 app/graphql/types/release_asset_link_shared_input_arguments.rb create mode 100644 app/graphql/types/user_callout_feature_name_enum.rb create mode 100644 app/graphql/types/user_callout_type.rb create mode 100644 app/helpers/projects/security/configuration_helper.rb delete mode 100644 app/models/analytics/instance_statistics.rb delete mode 100644 app/models/analytics/instance_statistics/measurement.rb create mode 100644 app/models/analytics/usage_trends/measurement.rb delete mode 100644 app/models/commit_with_pipeline.rb create mode 100644 app/models/hooks/web_hook_log_partitioned.rb create mode 100644 app/models/packages/rubygems.rb create mode 100644 app/models/project_services/slack_mattermost/notifier.rb create mode 100644 app/models/projects/repository_storage_move.rb create mode 100644 app/models/snippets/repository_storage_move.rb delete mode 100644 app/policies/analytics/instance_statistics/measurement_policy.rb create mode 100644 app/policies/analytics/usage_trends/measurement_policy.rb create mode 100644 app/services/boards/base_item_move_service.rb delete mode 100644 app/services/boards/list_service.rb create mode 100644 app/services/issuable/process_assignees.rb create mode 100644 app/services/merge_requests/retarget_chain_service.rb create mode 100644 app/services/packages/create_temporary_package_service.rb create mode 100644 app/services/packages/debian/find_or_create_incoming_service.rb create mode 100644 app/services/packages/debian/find_or_create_package_service.rb delete mode 100644 app/services/packages/debian/get_or_create_incoming_service.rb create mode 100644 app/services/packages/maven/metadata.rb create mode 100644 app/services/packages/maven/metadata/append_package_file_service.rb create mode 100644 app/services/packages/maven/metadata/create_versions_xml_service.rb create mode 100644 app/services/packages/maven/metadata/sync_service.rb delete mode 100644 app/services/packages/nuget/create_package_service.rb create mode 100644 app/services/packages/rubygems/dependency_resolver_service.rb create mode 100644 app/services/security/vulnerability_uuid.rb create mode 100644 app/services/users/dismiss_user_callout_service.rb create mode 100644 app/validators/gitlab/utils/zoom_url_validator.rb create mode 100644 app/validators/json_schemas/security_scan_info.json delete mode 100644 app/validators/zoom_url_validator.rb delete mode 100644 app/views/admin/instance_statistics/index.html.haml create mode 100644 app/views/admin/usage_trends/index.html.haml create mode 100644 app/views/notify/_users_list.html.haml create mode 100644 app/views/notify/change_in_merge_request_draft_status_email.html.haml create mode 100644 app/views/notify/change_in_merge_request_draft_status_email.text.erb delete mode 100644 app/views/projects/_invite_members_link.html.haml delete mode 100644 app/views/projects/_new_project_push_tip.html.haml delete mode 100644 app/views/projects/blame/_age_map_legend.html.haml delete mode 100644 app/views/projects/blame/_blame_group.html.haml delete mode 100644 app/views/projects/compare/_form.html.haml delete mode 100644 app/views/projects/cycle_analytics/_empty_stage.html.haml delete mode 100644 app/views/projects/cycle_analytics/_no_access.html.haml delete mode 100644 app/views/projects/merge_requests/conflicts/_commit_stats.html.haml delete mode 100644 app/views/projects/merge_requests/conflicts/_file_actions.html.haml delete mode 100644 app/views/projects/merge_requests/conflicts/_submit_form.html.haml delete mode 100644 app/views/projects/merge_requests/conflicts/components/_diff_file_editor.html.haml delete mode 100644 app/views/projects/merge_requests/conflicts/components/_inline_conflict_lines.html.haml delete mode 100644 app/views/projects/project_members/_groups.html.haml delete mode 100644 app/views/projects/project_members/_team.html.haml delete mode 100644 app/views/projects/update.js.haml delete mode 100644 app/views/shared/notifications/_button.html.haml delete mode 100644 app/views/shared/notifications/_custom_notifications.html.haml delete mode 100644 app/views/shared/notifications/_new_button.html.haml delete mode 100644 app/views/shared/notifications/_notification_dropdown.html.haml create mode 100644 app/workers/analytics/usage_trends/count_job_trigger_worker.rb create mode 100644 app/workers/analytics/usage_trends/counter_job_worker.rb create mode 100644 app/workers/merge_requests/delete_source_branch_worker.rb create mode 100644 app/workers/namespaces/onboarding_issue_created_worker.rb create mode 100644 app/workers/namespaces/onboarding_progress_worker.rb create mode 100644 app/workers/packages/composer/cache_update_worker.rb create mode 100644 app/workers/packages/maven/metadata/sync_worker.rb create mode 100644 app/workers/projects/schedule_bulk_repository_shard_moves_worker.rb create mode 100644 app/workers/projects/update_repository_storage_worker.rb create mode 100644 app/workers/snippets/schedule_bulk_repository_shard_moves_worker.rb create mode 100644 app/workers/snippets/update_repository_storage_worker.rb create mode 100644 changelogs/unreleased/11424-background-worker-for-updating-the-maven-metadata-xml-file.yml create mode 100644 changelogs/unreleased/118597-improve-autofill-suggestions-for-usernames.yml create mode 100644 changelogs/unreleased/15332-add-draft-status-change-email.yml create mode 100644 changelogs/unreleased/15332-notify-when-merge-request-draft-status-changes.yml create mode 100644 changelogs/unreleased/18792-add-container_registry_access_level.yml create mode 100644 changelogs/unreleased/198562-merge-request-user-interface-encourages-accidentally-closing-the-r.yml create mode 100644 changelogs/unreleased/205484-01-project-settings-headers-cicd.yml create mode 100644 changelogs/unreleased/205484-03-project-settings-headers-cicd-variables.yml create mode 100644 changelogs/unreleased/205484-04-project-settings-headers-repo-default-branch.yml create mode 100644 changelogs/unreleased/205484-05-project-settings-headers-repository-mirroring-repositories.yml create mode 100644 changelogs/unreleased/205484-06-project-settings-headers-repository-protected-branches.yml create mode 100644 changelogs/unreleased/205484-07-project-settings-headers-repository-protected-tags.yml create mode 100644 changelogs/unreleased/205484-08-project-settings-headers-repository-cleanup.yml create mode 100644 changelogs/unreleased/205484-09-project-settings-headers-repository-deploy-tokens.yml create mode 100644 changelogs/unreleased/205484-10-project-settings-headers-repository-deploy-keys.yml create mode 100644 changelogs/unreleased/207467-add-gradle-setup-and-install-commands-to-the-package-details-page-.yml create mode 100644 changelogs/unreleased/209061-remove-dashboard-pipeline-status-ff.yml create mode 100644 changelogs/unreleased/20917-do-not-show-button-to-resolve-discussion-opening-an-issue-when-issu.yml create mode 100644 changelogs/unreleased/212322-update-existing-vulnerabilities-occurrences-uuids.yml create mode 100644 changelogs/unreleased/21759-add-loading-indicator-to-update-username-button.yml create mode 100644 changelogs/unreleased/218964-downstream-pipeline-caching.yml create mode 100644 changelogs/unreleased/221296-skip_orphaned_pool_repositories_on_restore.yml create mode 100644 changelogs/unreleased/225309-add-invite_email-quick-action.yml create mode 100644 changelogs/unreleased/227257-replace-bootstrap-popover-with-gitlab-ui-popover-in-merge-conflict.yml create mode 100644 changelogs/unreleased/228733-alert-issue-status.yml create mode 100644 changelogs/unreleased/22901-add-predefined-variable.yml create mode 100644 changelogs/unreleased/229507-graphql-mutation-to-remove-issue-from-board.yml create mode 100644 changelogs/unreleased/230465-fj-add-columns-to-track-group-wiki-storage.yml create mode 100644 changelogs/unreleased/231064-update-settings-buttons-to-pajamas.yml create mode 100644 changelogs/unreleased/231126-yo-gitlab-ui.yml create mode 100644 changelogs/unreleased/235909-make-it-clearer-what-to-do-after-adding-a-namespace.yml create mode 100644 changelogs/unreleased/241058-mg-update-reply-placeholder.yml create mode 100644 changelogs/unreleased/241735-add-import-options-to-projects-and-groups-dropdown.yml create mode 100644 changelogs/unreleased/246959-msj-opened-created-ui.yml create mode 100644 changelogs/unreleased/247636-fix-logging-search-scope.yml create mode 100644 changelogs/unreleased/247918-add-user-preference-to-turn-off-keystroke-formatting.yml create mode 100644 changelogs/unreleased/24908-user-2fa-status-should-not-be-publicly-shown.yml create mode 100644 changelogs/unreleased/254267-replace-bootstrap-modal-in-app-views-projects-issues-export_csv-_b.yml create mode 100644 changelogs/unreleased/255913-webex-teams-pipeline-notifications.yml create mode 100644 changelogs/unreleased/259840-composer-v2-metadata-url.yml create mode 100644 changelogs/unreleased/262859-restrict-oncall-rotation-to-interval.yml create mode 100644 changelogs/unreleased/262862-add-deleted-at-to-oncall-rotation-participant.yml create mode 100644 changelogs/unreleased/263442_remove_recursive_approach_for_all_projects_feature_flag.yml create mode 100644 changelogs/unreleased/267511-approval-gate-rule-type.yml create mode 100644 changelogs/unreleased/268207_exclude_duplicates_from_emails_on_push_recipients_when_sending.yml create mode 100644 changelogs/unreleased/273286-update-project-view-buttons.yml create mode 100644 changelogs/unreleased/273292-fy21q4-foundations-kr2-audit-and-update-buttons-on-sessionscontrol.yml create mode 100644 changelogs/unreleased/273294-fy21q4-foundations-kr2-audit-and-update-buttons-on-groupscontrolle.yml create mode 100644 changelogs/unreleased/273295-fy21q4-foundations-kr2-audit-and-update-buttons-on-userscontroller.yml create mode 100644 changelogs/unreleased/273296-fy21q4-foundations-kr2-audit-and-update-buttons-on-projects-jobsco.yml create mode 100644 changelogs/unreleased/273574-fix-bad-projects-has_external_issue_tracker-data.yml create mode 100644 changelogs/unreleased/275169-remove-service-desk-issue-prefix.yml create mode 100644 changelogs/unreleased/275818-be-add-info-error-messages-to-security-widget-summary-diverged.yml create mode 100644 changelogs/unreleased/277327-fix-background-migration-argument-type.yml create mode 100644 changelogs/unreleased/284116-sync-or-remove-single-file-mode-user-preference.yml create mode 100644 changelogs/unreleased/284392-use-info-style-for-merged-instead-of-primary.yml create mode 100644 changelogs/unreleased/285438-rename-instance-statistics-to-usage-trends.yml create mode 100644 changelogs/unreleased/285467-package-registry-graphql-api.yml create mode 100644 changelogs/unreleased/288326-wiki-edit-page-title-s-styling-mismatch-2.yml create mode 100644 changelogs/unreleased/28902_extend_group_api.yml create mode 100644 changelogs/unreleased/290254-override-approvers-setting-does-not-reflect-actual-behavior.yml create mode 100644 changelogs/unreleased/290288-composer-cache-build-pages-task.yml create mode 100644 changelogs/unreleased/290288-composer-cache-hooks.yml create mode 100644 changelogs/unreleased/292128-fix-icon-spacing.yml create mode 100644 changelogs/unreleased/292239-schedule-duplicate-findings-removal.yml create mode 100644 changelogs/unreleased/292498-webid-extension.yml create mode 100644 changelogs/unreleased/292602-remove-fetch_mirror_check_tags_changed-ff.yml create mode 100644 changelogs/unreleased/292824-track-assignee-reviewer-changes.yml create mode 100644 changelogs/unreleased/292824-track-label-milestone-change.yml create mode 100644 changelogs/unreleased/292824-track-mr-lock-changes.yml create mode 100644 changelogs/unreleased/292824-track-mr-time-changes.yml create mode 100644 changelogs/unreleased/293655-de-emphasize-nested-reports-in-mr-widget.yml create mode 100644 changelogs/unreleased/293921-wrap-iterations.yml create mode 100644 changelogs/unreleased/294436-create-project-required-fields.yml create mode 100644 changelogs/unreleased/294443-move-wiki-helper-error-to-vue.yml create mode 100644 changelogs/unreleased/294482-conan-anonymous.yml create mode 100644 changelogs/unreleased/295665-fix-sidekiq-check.yml create mode 100644 changelogs/unreleased/296125-show-timeline-for-devops-score.yml create mode 100644 changelogs/unreleased/296945-update-the-container-registry-ui-header-copy-to-remove-expiration-.yml create mode 100644 changelogs/unreleased/297020-linux-distribution-details-in-usage-ping.yml create mode 100644 changelogs/unreleased/297240-enable-skip_dag_manual_and_delayed_jobs.yml create mode 100644 changelogs/unreleased/297404-remove-suggestions-custom-commit-ff.yml create mode 100644 changelogs/unreleased/297428-code-owner-optional-section.yml create mode 100644 changelogs/unreleased/298827-graphql-getting-mr-diff-discussions-often-returns-500.yml create mode 100644 changelogs/unreleased/299034-group-group-links-project-authorizations-refresh-can-be-limited-to.yml create mode 100644 changelogs/unreleased/299884_remove_diff_highlighting_feature_flag.yml create mode 100644 changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner.yml create mode 100644 changelogs/unreleased/300021-rollout-serving-migrated-data-feature-flag-pages_serve_from_migrat.yml create mode 100644 changelogs/unreleased/30010-graphql-doc.yml create mode 100644 changelogs/unreleased/300150-cache-search-tab-counters.yml create mode 100644 changelogs/unreleased/300302-db-constraint-terraform-name.yml create mode 100644 changelogs/unreleased/300417-agent-token-description.yml create mode 100644 changelogs/unreleased/300435-add-label.yml create mode 100644 changelogs/unreleased/300443-add-label.yml create mode 100644 changelogs/unreleased/300458-send-gitlab_standard-context-with-requirements-events-from-the-fro.yml create mode 100644 changelogs/unreleased/300479-change-prefilled-mr-title-description.yml create mode 100644 changelogs/unreleased/300617-aqualls-prometheus-settings.yml create mode 100644 changelogs/unreleased/300654-refactor-confidentiality-sidebar-component-to-use-vue-apollo.yml create mode 100644 changelogs/unreleased/300714-provide-name-of-expiring-token-in-personal-access-token-expiration.yml create mode 100644 changelogs/unreleased/300750-add-missing-reviewers-information-to-closed-merge-request-email.yml create mode 100644 changelogs/unreleased/300750-add-missing-reviewers-information-to-merge-request-email-notificat.yml create mode 100644 changelogs/unreleased/300750-add-missing-reviewers-information-to-merge_request_status_email.yml create mode 100644 changelogs/unreleased/300750-add-missing-reviewers-information-to-merge_request_unmergeable_ema.yml create mode 100644 changelogs/unreleased/300750-add-missing-reviewers-information-to-merged-merge-request-email.yml create mode 100644 changelogs/unreleased/300750-add-missing-reviewers-information-to-new_mention_in_merge_request_.yml create mode 100644 changelogs/unreleased/300750-merge-request-email-notifications-don-t-include-reviewer-informati.yml create mode 100644 changelogs/unreleased/300787-clean-up-block-class-for-jobs-feature.yml create mode 100644 changelogs/unreleased/300827-alerts-integrations-UX-cleanup-2nd-part.yml create mode 100644 changelogs/unreleased/300827-split-alert-integrations-form.yml create mode 100644 changelogs/unreleased/300853-convert-compare-show-to-vue.yml create mode 100644 changelogs/unreleased/300865-default-confidentiality-of-replies.yml create mode 100644 changelogs/unreleased/301018-cablett-collapsed-epic-board-list.yml create mode 100644 changelogs/unreleased/301032-license-creation-via-api.yml create mode 100644 changelogs/unreleased/301056-make-the-geo-oauth-application-trusted-by-default.yml create mode 100644 changelogs/unreleased/320746-update-the-package-list-item-ui-make-action-buttons-in-list-items-.yml create mode 100644 changelogs/unreleased/320901-container-page-says-image-repository-not-found.yml create mode 100644 changelogs/unreleased/320949-ci-help-path-remove-prop.yml create mode 100644 changelogs/unreleased/321027-enable-ci_trigger_payload_into_pipeline.yml create mode 100644 changelogs/unreleased/321054-enable-quick-actions-usage-data.yml create mode 100644 changelogs/unreleased/321057-refine-the-user-interface-related-to-package-lists-and-the-search-.yml create mode 100644 changelogs/unreleased/321185-experiment-cleanup-invite_members_version_a-add-invite-members-to-.yml create mode 100644 changelogs/unreleased/321283-update-kubernetes-version-supported.yml create mode 100644 changelogs/unreleased/321297-load-only-metadata-for-markdown-video-include.yml create mode 100644 changelogs/unreleased/321372-feature-flag-rollout-of-vue_notification_dropdown.yml create mode 100644 changelogs/unreleased/321420-spell-npm-with-lowercase-letters-in-package-registry-ui.yml create mode 100644 changelogs/unreleased/321488-mr-changes-view-render-version-dropdowns-above-navbar.yml create mode 100644 changelogs/unreleased/321514-fix-clipboard-buttons.yml create mode 100644 changelogs/unreleased/321593-hide-issue-counts-in-project-list-where-issues-disabled.yml create mode 100644 changelogs/unreleased/321659-handle-discord-errors.yml create mode 100644 changelogs/unreleased/321667-follow-first.yml create mode 100644 changelogs/unreleased/321677-enable-pages-zip-file-protocol-by-default.yml create mode 100644 changelogs/unreleased/321745-remove-temporary-index-idx_on_issues_where_service_desk_reply_to_i.yml create mode 100644 changelogs/unreleased/321752-cablett-delete-epic-warning.yml create mode 100644 changelogs/unreleased/321788-fix-n-plus-1s.yml create mode 100644 changelogs/unreleased/321790-load-refs-on-demand.yml create mode 100644 changelogs/unreleased/321827-fix-n-1-in-runner-validations.yml create mode 100644 changelogs/unreleased/321834-fj-remove-nil-values-from-snippet-blobs.yml create mode 100644 changelogs/unreleased/321845-performance-pipeline-table-dropdowns.yml create mode 100644 changelogs/unreleased/321862_fix_long_commit_messages_error.yml create mode 100644 changelogs/unreleased/321917_introduce_info_column_for_the_security_scans_table.yml create mode 100644 changelogs/unreleased/321929-fix-dark-mode-app-header-on-profile-preferences-page.yml create mode 100644 changelogs/unreleased/321939-fix-error-when-rendering-project-pipeline.yml create mode 100644 changelogs/unreleased/321958-fix-npm-instance-level-api-with-scoped-packages.yml create mode 100644 changelogs/unreleased/322019-iterations-list-and-report-views-missing-left-sidebar-status.yml create mode 100644 changelogs/unreleased/322059-remove-api_v3_repos_events_optimization-flag.yml create mode 100644 changelogs/unreleased/322082-fix-invite-member-modal-dropdown-styling.yml create mode 100644 changelogs/unreleased/322098-limit-projectauthorizations-refresh-jobs-to-distinct-users.yml create mode 100644 changelogs/unreleased/322099-harden-addition-for-template-repositoriu.yml create mode 100644 changelogs/unreleased/322099-sql-definition-for-template_repositories.yml create mode 100644 changelogs/unreleased/322103-optimize-the-dictionary-view-to-not-repeat-same-columns.yml create mode 100644 changelogs/unreleased/322125-add-prometheus-histo-on-retries.yml create mode 100644 changelogs/unreleased/322125-log-optimistic-locking-retries.yml create mode 100644 changelogs/unreleased/322128-token-used-field.yml create mode 100644 changelogs/unreleased/322424-btn-confirm.yml create mode 100644 changelogs/unreleased/322598-skip_client_authentication_for_password_grant.yml create mode 100644 changelogs/unreleased/322626-use-grouped-list-for-test-report-widget.yml create mode 100644 changelogs/unreleased/322663-remove-deprecated-button-variant-on-integration-configuration-view.yml create mode 100644 changelogs/unreleased/322724-fix-compare-page-dropdown-loading.yml create mode 100644 changelogs/unreleased/322745-add-missing-token-names.yml create mode 100644 changelogs/unreleased/322770-change-security-mr-widget-icon.yml create mode 100644 changelogs/unreleased/322782-increase-contrast-of-solarized-light-in-web-ide.yml create mode 100644 changelogs/unreleased/322901-fix-pagerduty-webhook.yml create mode 100644 changelogs/unreleased/322960-degredation-in-assigning-team-members-on-boards-view.yml create mode 100644 changelogs/unreleased/323015-fix-empty-field-in-custom-notification-events-modal.yml create mode 100644 changelogs/unreleased/323059-batch-load-findings-by-uuid.yml create mode 100644 changelogs/unreleased/323088-expose-project-access-token-value-with-create-api.yml create mode 100644 changelogs/unreleased/323163-restore-gitlab_database_transaction_seconds_sum-for-sidekiq.yml create mode 100644 changelogs/unreleased/323175-database-timeout-in-pages-migration-task.yml create mode 100644 changelogs/unreleased/323376-security-configuration-ui-strings-ssot.yml create mode 100644 changelogs/unreleased/323474-update-incident-setting-copy.yml create mode 100644 changelogs/unreleased/323555-disable-gc-compacting-via-monkey-patch.yml create mode 100644 changelogs/unreleased/323674-initiate-web-hook-logs-partitioning.yml create mode 100644 changelogs/unreleased/323848-fix-diff-comment-hidden-menu.yml create mode 100644 changelogs/unreleased/33283-remove-svg.yml create mode 100644 changelogs/unreleased/33685-lift-npm-package-naming-convention-for-project-level-api.yml create mode 100644 changelogs/unreleased/33748-dont-close-auto-suggest-select-boxes-if-only-mouseup-outside-box.yml create mode 100644 changelogs/unreleased/35579-remove-graphql_logging-feature-flag.yml create mode 100644 changelogs/unreleased/51727-allow-job-identiy-self.yml create mode 100644 changelogs/unreleased/55412-typo-in-pipeline-status-email.yml create mode 100644 changelogs/unreleased/6utzeit-de-master-patch-15431.yml create mode 100644 changelogs/unreleased/ab-index-rename.yml create mode 100644 changelogs/unreleased/add-allow-force-push-option.yml create mode 100644 changelogs/unreleased/add-client-id-application-context-metadata.yml create mode 100644 changelogs/unreleased/add-enable-in-product-marketing-emails-application-setting.yml create mode 100644 changelogs/unreleased/add-environment-job-pipeline-hooks.yml create mode 100644 changelogs/unreleased/add-graphql-etag-caching.yml create mode 100644 changelogs/unreleased/add-kas-api-url-config.yml create mode 100644 changelogs/unreleased/add-not-null-constraint-to-gitlab-subscriptions-namespace-id.yml create mode 100644 changelogs/unreleased/add-ollowed-user-activity-as-dashboard-user-choices.yml create mode 100644 changelogs/unreleased/add-pages-cache-settings-to-docs.yml create mode 100644 changelogs/unreleased/add-rails-application-config-hosts.yml create mode 100644 changelogs/unreleased/add-space-download-icon.yml create mode 100644 changelogs/unreleased/add_request_cve_issue.yml create mode 100644 changelogs/unreleased/add_role_and_rolebinding_for_cilium_network_policies.yml create mode 100644 changelogs/unreleased/admin-dashboard-typo.yml create mode 100644 changelogs/unreleased/afontaine-collapse-deployments-in-merge-requests.yml create mode 100644 changelogs/unreleased/ajk-graphql-accept-mr.yml create mode 100644 changelogs/unreleased/ajk-reviewer-widget-approved.yml create mode 100644 changelogs/unreleased/alert-incident-url-follow.yml create mode 100644 changelogs/unreleased/alexpooley-remove_shared_group_membership_auth_ff.yml create mode 100644 changelogs/unreleased/align-mr-conflict-center.yml create mode 100644 changelogs/unreleased/auto-devops-default-branch-deploy.yml create mode 100644 changelogs/unreleased/auto-scroll-pipeline-editor-on-commit.yml create mode 100644 changelogs/unreleased/blame-performance.yml create mode 100644 changelogs/unreleased/board_args_consolidation.yml create mode 100644 changelogs/unreleased/btn-confirm-abuse-reports.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-appearances.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-application-settings.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-applications.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-broadcast-messages.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-deploy-keys.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-groups.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-hooks.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-labels.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-projects.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-serverless.yml create mode 100644 changelogs/unreleased/btn-confirm-admin-users.yml create mode 100644 changelogs/unreleased/btn-confirm-auth.yml create mode 100644 changelogs/unreleased/btn-confirm-clusters.yml create mode 100644 changelogs/unreleased/btn-confirm-doorkeeper.yml create mode 100644 changelogs/unreleased/btn-confirm-empty-states.yml create mode 100644 changelogs/unreleased/btn-confirm-envs.yml create mode 100644 changelogs/unreleased/btn-confirm-group-milestones.yml create mode 100644 changelogs/unreleased/btn-confirm-group-settings.yml create mode 100644 changelogs/unreleased/btn-confirm-group.yml create mode 100644 changelogs/unreleased/btn-confirm-home.yml create mode 100644 changelogs/unreleased/btn-confirm-js-2fa.yml create mode 100644 changelogs/unreleased/btn-confirm-js-badges.yml create mode 100644 changelogs/unreleased/btn-confirm-shared-access-tokens.yml create mode 100644 changelogs/unreleased/btn-confirm-shared-deploy-keys.yml create mode 100644 changelogs/unreleased/btn-confirm-shared-deploy-tokens.yml create mode 100644 changelogs/unreleased/btn-confirm-shared-gitpod.yml create mode 100644 changelogs/unreleased/btn-confirm-shared-groups.yml create mode 100644 changelogs/unreleased/btn-confirm-shared-members.yml create mode 100644 changelogs/unreleased/btn-confirm-shared-wikis.yml create mode 100644 changelogs/unreleased/btn-confirm-shared.yml create mode 100644 changelogs/unreleased/btn-confirm-subs-banner.yml create mode 100644 changelogs/unreleased/btn-default-admin-edit.yml create mode 100644 changelogs/unreleased/btn-default-admin-general-settings.yml create mode 100644 changelogs/unreleased/btn-default-mr-cancel.yml create mode 100644 changelogs/unreleased/btn-icon-commit-action.yml create mode 100644 changelogs/unreleased/btn-icon-schedules.yml create mode 100644 changelogs/unreleased/bugfix-linked-issue-autocomplete.yml create mode 100644 changelogs/unreleased/bump-reliable-fetch.yml create mode 100644 changelogs/unreleased/bump_auto_deploy_image_version.yml create mode 100644 changelogs/unreleased/bvl-fix-create-release-worker-is-not-cron.yml create mode 100644 changelogs/unreleased/cablett-restore-database-structure.yml create mode 100644 changelogs/unreleased/changelog-api-to-optional.yml create mode 100644 changelogs/unreleased/changelog-commits-without-description.yml create mode 100644 changelogs/unreleased/changelog-ignore-reverted-commits.yml create mode 100644 changelogs/unreleased/changelog-include-merge-commits.yml create mode 100644 changelogs/unreleased/chore-bump-swagger-ui-dist.yml create mode 100644 changelogs/unreleased/chore-unknown-sign-in-info-text.yml create mode 100644 changelogs/unreleased/ci_register_job_service_one_by_one.yml create mode 100644 changelogs/unreleased/ci_temporary_lock.yml create mode 100644 changelogs/unreleased/ck3g-remove-MergeRequestAssigneesMigrationProgressCheck-background-migrat.yml create mode 100644 changelogs/unreleased/cmiskell-upgrade-sidekiq-reliable-fetch.yml create mode 100644 changelogs/unreleased/cngo-convert-tab-to-gl-tab.yml create mode 100644 changelogs/unreleased/cngo-convert-threat-monitoring-environment-picker-to-gl-dropdown.yml create mode 100644 changelogs/unreleased/cngo-fix-autocomplete-selecting-loading.yml create mode 100644 changelogs/unreleased/cngo-rename-comment-form-textarea-label.yml create mode 100644 changelogs/unreleased/cq-template-0-85-23.yml create mode 100644 changelogs/unreleased/cwoolley-gitlab-master-patch-20932.yml create mode 100644 changelogs/unreleased/dblessing_bypass_2fa_setup_help.yml create mode 100644 changelogs/unreleased/dblessing_migrate_delayed_project_removal.yml create mode 100644 changelogs/unreleased/default-enabled-api_always_use_application_json.yml create mode 100644 changelogs/unreleased/denys-fj-ide-routes.yml create mode 100644 changelogs/unreleased/design-management-minor-fixe.yml create mode 100644 changelogs/unreleased/dictionary-md-generated-links.yml create mode 100644 changelogs/unreleased/document-propagate-correlation-id-for-pages.yml create mode 100644 changelogs/unreleased/dora-metrics-modeling.yml create mode 100644 changelogs/unreleased/dry-up-notes-build-service-spec.yml create mode 100644 changelogs/unreleased/dz-fix-fork-thumbnail-height.yml create mode 100644 changelogs/unreleased/ellipsis-expand-state-commits.yml create mode 100644 changelogs/unreleased/emilyring-clustertoken-name.yml create mode 100644 changelogs/unreleased/enable-trace_memory_allocations.yml create mode 100644 changelogs/unreleased/environment-scoped-group-variables.yml create mode 100644 changelogs/unreleased/environment-tier.yml create mode 100644 changelogs/unreleased/epic_count_query.yml create mode 100644 changelogs/unreleased/expand-stopped-env.yml create mode 100644 changelogs/unreleased/expose-failure-reasons-features.yml create mode 100644 changelogs/unreleased/expose_project_container_registry_url.yml create mode 100644 changelogs/unreleased/feat-api-application-settings-package-file-size-limits.yml create mode 100644 changelogs/unreleased/feat-auto-enable-admin-mode-rake-runtime.yml create mode 100644 changelogs/unreleased/feature-230726-repo-tabs.yml create mode 100644 changelogs/unreleased/feature-gb-improve-builds-queueing.yml create mode 100644 changelogs/unreleased/fix-edited-timestamp.yml create mode 100644 changelogs/unreleased/fix-include-external-users-in-user-search.yml create mode 100644 changelogs/unreleased/fix-iteration-migr.yml create mode 100644 changelogs/unreleased/fix-locked-job-artifacts-expired-api.yml create mode 100644 changelogs/unreleased/fix-overflowing-width-at-mention-selector.yml create mode 100644 changelogs/unreleased/fix-project-import-visibility-error.yml create mode 100644 changelogs/unreleased/fix-relative-position-on-move-and-copy-issue.yml create mode 100644 changelogs/unreleased/fix-web-url-jira.yml create mode 100644 changelogs/unreleased/fix_repo_storage_weights_admin.yml create mode 100644 changelogs/unreleased/fp-reduce-queries-when-ticking-runner-queue.yml create mode 100644 changelogs/unreleased/fp-reduce-runners-queries-when-picking-builds.yml create mode 100644 changelogs/unreleased/georgekoltsov-bulk-import-migrate-milestones.yml create mode 100644 changelogs/unreleased/georgekoltsov-fix-project-export-web-rate-limit.yml create mode 100644 changelogs/unreleased/gl-badge-runners.yml create mode 100644 changelogs/unreleased/gl-button-apply-template.yml create mode 100644 changelogs/unreleased/gl-button-audit-events.yml create mode 100644 changelogs/unreleased/gl-button-email-request.yml create mode 100644 changelogs/unreleased/gl-button-gh-import.yml create mode 100644 changelogs/unreleased/gl-button-labels.yml create mode 100644 changelogs/unreleased/gl-button-reaction.yml create mode 100644 changelogs/unreleased/gl-button-repository-settings.yml create mode 100644 changelogs/unreleased/gl-button-time-tracking.yml create mode 100644 changelogs/unreleased/hchouraria-notify-email-html-link-to-mr-on-top.yml create mode 100644 changelogs/unreleased/id-move-delete-branch-to-workers.yml create mode 100644 changelogs/unreleased/ignore-unstable-changelog-tags.yml create mode 100644 changelogs/unreleased/improve-retarget-merge-requests.yml create mode 100644 changelogs/unreleased/improve_vuln_tracking-backend_store_only.yml create mode 100644 changelogs/unreleased/issue_227753-remove_backup_labels_table.yml create mode 100644 changelogs/unreleased/iterations-dates-validations.yml create mode 100644 changelogs/unreleased/iterations-in-the-past.yml create mode 100644 changelogs/unreleased/jira-connect-app-style-cleanup.yml create mode 100644 changelogs/unreleased/jivanvl-add-duration-finished-at-fields-job-type.yml create mode 100644 changelogs/unreleased/john_long-composer-package-relative-url.yml create mode 100644 changelogs/unreleased/kassio-bulkimports-better-destination-validation-error-message.yml create mode 100644 changelogs/unreleased/kassio-bulkimports-filter-group-labels.yml create mode 100644 changelogs/unreleased/kassio-bulkimports-import-group-label-timestamps.yml create mode 100644 changelogs/unreleased/kassio-githubimporter-avoid-approval-exception.yml create mode 100644 changelogs/unreleased/kassio-githubimporter-import-merged-at.yml create mode 100644 changelogs/unreleased/kassio-githubimporter-validate-repository-size.yml create mode 100644 changelogs/unreleased/kassio-graphql-expose-label-create-at-updated-at.yml create mode 100644 changelogs/unreleased/kerrizor-remove-oprhaned-feature-flag-yml.yml create mode 100644 changelogs/unreleased/kp-sort-milestone-autocomplete.yml create mode 100644 changelogs/unreleased/ld-graphql-version-bump-gem-for-argument-deprecations.yml create mode 100644 changelogs/unreleased/ld-handle-gids-for-unknown-objects.yml create mode 100644 changelogs/unreleased/leipert-remove-chrome-84-workaround.yml create mode 100644 changelogs/unreleased/lm-add-short-sha-and-path-to-pipeline.yml create mode 100644 changelogs/unreleased/lm-multiple-cache-per-file.yml create mode 100644 changelogs/unreleased/mc-backstage-reschedule-artifact-expiry-backfill.yml create mode 100644 changelogs/unreleased/mc-bug-reduce-ci-minute-namespace-notification-db-load.yml create mode 100644 changelogs/unreleased/mc-bug-remove-reliance-on-branch-context.yml create mode 100644 changelogs/unreleased/mc-feature-add-user-callout-graphql.yml create mode 100644 changelogs/unreleased/mf-test-report-parsing-errors-frontend.yml create mode 100644 changelogs/unreleased/mg-fix-firefox-textarea-styling.yml create mode 100644 changelogs/unreleased/mo-enable-cq-comparision-backend.yml create mode 100644 changelogs/unreleased/mo-filter-group-projects-by-ids-graphql.yml create mode 100644 changelogs/unreleased/mo-refactor-coverage-finder.yml create mode 100644 changelogs/unreleased/move-cancel-btn-integrations.yml create mode 100644 changelogs/unreleased/move_ci_config_path_project_variable.yml create mode 100644 changelogs/unreleased/mvanremmerden-master-patch-70791.yml create mode 100644 changelogs/unreleased/mwps-settings.yml create mode 100644 changelogs/unreleased/nakayoshi-default-enabled.yml create mode 100644 changelogs/unreleased/nfriend-add-release-asset-link-create-mutation.yml create mode 100644 changelogs/unreleased/nfriend-allow-release-creation-on-existing-tag-through-ui.yml create mode 100644 changelogs/unreleased/nfriend-fix-gl-dropdown-double-scrollbars.yml create mode 100644 changelogs/unreleased/nfriend-fix-milestone-combobox-double-scrollbar.yml create mode 100644 changelogs/unreleased/nfriend-fix-ref-selector-double-dropdown.yml create mode 100644 changelogs/unreleased/nfriend-ref-selector-dropdown-cleanup.yml create mode 100644 changelogs/unreleased/nfriend-turn-off-ref-selector-autocomplete.yml create mode 100644 changelogs/unreleased/nicolasdular-record-issue-creation-onboarding-progress.yml create mode 100644 changelogs/unreleased/ntepluhina-fix-design-management-reply-placeholder.yml create mode 100644 changelogs/unreleased/pb-store-bare-class-name-for-batched-migrations.yml create mode 100644 changelogs/unreleased/pb-track-background-job-executions.yml create mode 100644 changelogs/unreleased/peterhegman-remove-vue_project_members_list-feature-flag.yml create mode 100644 changelogs/unreleased/ph-282476-fixGraphQLDiffComments.yml create mode 100644 changelogs/unreleased/ph-284212-moveCodeownersTipToVueApp.yml create mode 100644 changelogs/unreleased/ph-defaultEnableWidgetGraphqlFlag.yml create mode 100644 changelogs/unreleased/philipcunningham-add-branch-to-dast-profile-322526.yml create mode 100644 changelogs/unreleased/pipeline-editor-branch-param.yml create mode 100644 changelogs/unreleased/pipeline-editor-empty-state.yml create mode 100644 changelogs/unreleased/pks-checks-skip-integrity-lfs-deletions.yml create mode 100644 changelogs/unreleased/preload-environments-for-ci-cd-variables.yml create mode 100644 changelogs/unreleased/preload-runner-tags.yml create mode 100644 changelogs/unreleased/ps-fix-heading-style-email-diffs.yml create mode 100644 changelogs/unreleased/psi-boards-scrollbar.yml create mode 100644 changelogs/unreleased/qmnguyen0711-825-limit-the-size-of-sidekiq-jobs.yml create mode 100644 changelogs/unreleased/qmnguyen0711-846-sentry-merge-sentry-s-contexts-and-users-into-applicatio.yml create mode 100644 changelogs/unreleased/qmnguyen0711-remove-latest-report-results-preloading.yml create mode 100644 changelogs/unreleased/reenable-sentry-pipeline-graph-only.yml create mode 100644 changelogs/unreleased/refactor-use-policies-framework-for-admin.yml create mode 100644 changelogs/unreleased/relax-changelog-tag-restriction.yml create mode 100644 changelogs/unreleased/remove-bootstrap-dropdowns-from-note-components.yml create mode 100644 changelogs/unreleased/remove-ci_jwt_include_environment-feature-flag.yml create mode 100644 changelogs/unreleased/remove-commit-paginate-ff.yml create mode 100644 changelogs/unreleased/remove-deprecated-columns.yml create mode 100644 changelogs/unreleased/remove-index-add-index.yml create mode 100644 changelogs/unreleased/remove-margin-status.yml create mode 100644 changelogs/unreleased/remove-merge-request-count-with-merged-at-ff.yml create mode 100644 changelogs/unreleased/remove-new_jira_connect_ui-feature-flag.yml create mode 100644 changelogs/unreleased/remove-pipeline-editor-section-feature-flag.yml create mode 100644 changelogs/unreleased/remove-pkg-event-redis-feature-flag.yml create mode 100644 changelogs/unreleased/remove-scroll-merge-instruction.yml create mode 100644 changelogs/unreleased/remove-transactionless-destroy-feature-flag.yml create mode 100644 changelogs/unreleased/rename-vuln-fingerprint-indexes.yml create mode 100644 changelogs/unreleased/revert_sort_order_explore_projects.yml create mode 100644 changelogs/unreleased/runners-api-context-metadata.yml create mode 100644 changelogs/unreleased/sanddown.yml create mode 100644 changelogs/unreleased/security-jv-workhorse-router.yml create mode 100644 changelogs/unreleased/security-workhorse-validate-path-logging-removal.yml create mode 100644 changelogs/unreleased/selected-state-commit-view.yml create mode 100644 changelogs/unreleased/sh-add-path-lock-confirmation.yml create mode 100644 changelogs/unreleased/sh-azure-ad-v2-omniauth.yml create mode 100644 changelogs/unreleased/sh-azure-blob-utf8-fix.yml create mode 100644 changelogs/unreleased/sh-improve-api-marginalia-comments.yml create mode 100644 changelogs/unreleased/sh-log-large-multipart-files-com.yml create mode 100644 changelogs/unreleased/sh-update-batchloader-2-0-0.yml create mode 100644 changelogs/unreleased/sh-update-fog-aws-3-9.yml create mode 100644 changelogs/unreleased/sh-use-gitlab-fog-google.yml create mode 100644 changelogs/unreleased/show-nested-env.yml create mode 100644 changelogs/unreleased/sidebar-user-avatar.yml create mode 100644 changelogs/unreleased/simplify-notifications-dropdown.yml create mode 100644 changelogs/unreleased/slack_service_usage_data.yml create mode 100644 changelogs/unreleased/ssarka-master-patch-39936.yml create mode 100644 changelogs/unreleased/switch-order-of-buttons-configure-feature-flag-modal.yml create mode 100644 changelogs/unreleased/sy-add-end-date-to-rotations.yml create mode 100644 changelogs/unreleased/sy-system-note-for-resolving-alert.yml create mode 100644 changelogs/unreleased/sy-update-alert-title.yml create mode 100644 changelogs/unreleased/sy-update-operations-visibility-text.yml create mode 100644 changelogs/unreleased/tc-add-custom-emoji-creator.yml create mode 100644 changelogs/unreleased/test_update_merge_request_worker_performance_2.yml create mode 100644 changelogs/unreleased/test_update_merge_request_worker_performance_3.yml create mode 100644 changelogs/unreleased/tor-defect-file-viewed-reviews-convert-to-vuex.yml create mode 100644 changelogs/unreleased/tor-defect-missing-popovers-from-async-DOM.yml create mode 100644 changelogs/unreleased/tor-defect-mr-cog-checkboxes.yml create mode 100644 changelogs/unreleased/tor-defect-network-error-message-show-api-errors.yml create mode 100644 changelogs/unreleased/tor-defect-out-of-place-bold-label-in-diffs-dropdown-menu.yml create mode 100644 changelogs/unreleased/trial-button-confirm.yml create mode 100644 changelogs/unreleased/update-ci-template-default-branch-1.yml create mode 100644 changelogs/unreleased/update-ci-template-default-branch-3.yml create mode 100644 changelogs/unreleased/update-cicd-naming.yml create mode 100644 changelogs/unreleased/update-gitlab-runner-helm-chart-to-0-26-0.yml create mode 100644 changelogs/unreleased/update-mr-page-buttons.yml create mode 100644 changelogs/unreleased/update-terraform-states-user-foreign-key.yml create mode 100644 changelogs/unreleased/update-validate-url-gem.yml create mode 100644 changelogs/unreleased/update_latex_template.yml create mode 100644 changelogs/unreleased/usage-ping-dictionary-whitespace.yml create mode 100644 changelogs/unreleased/user-access-role-badge-component.yml create mode 100644 changelogs/unreleased/user-auth-bmiller-return-early-if-user-is-nil.yml create mode 100644 changelogs/unreleased/uusijani-gitlab-uusijani-master-patch-65195.yml create mode 100644 changelogs/unreleased/vs-break-long-code-line-in-markdown.yml create mode 100644 changelogs/unreleased/vs-enable-gitlab-stylelint-config.yml create mode 100644 changelogs/unreleased/vs-wrap-code-lines-blocks-properly.yml create mode 100644 changelogs/unreleased/x509-cert-loading.yml create mode 100644 changelogs/unreleased/xanf-allow-top-level-bulk-imports.yml create mode 100644 changelogs/unreleased/yo-btn-confirm-shared-issuable.yml create mode 100644 changelogs/unreleased/yo-btn-confirm-shared-labels.yml create mode 100644 config/feature_flags/development/allow_force_push_to_protected_branches.yml create mode 100644 config/feature_flags/development/attachment_with_filename.yml create mode 100644 config/feature_flags/development/avatar_cache_for_email.yml create mode 100644 config/feature_flags/development/boards_filtered_search.yml create mode 100644 config/feature_flags/development/ci_fix_commit_status_retried.yml create mode 100644 config/feature_flags/development/ci_fix_pipeline_status_for_dag_needs_manual.yml delete mode 100644 config/feature_flags/development/ci_jwt_include_environment.yml delete mode 100644 config/feature_flags/development/ci_mini_pipeline_gl_dropdown.yml delete mode 100644 config/feature_flags/development/ci_pipeline_editor_page.yml create mode 100644 config/feature_flags/development/ci_preload_runner_tags.yml create mode 100644 config/feature_flags/development/ci_reduce_queries_when_ticking_runner_queue.yml create mode 100644 config/feature_flags/development/ci_register_job_service_one_by_one.yml create mode 100644 config/feature_flags/development/ci_register_job_temporary_lock.yml create mode 100644 config/feature_flags/development/ci_remove_update_retried_from_process_pipeline.yml delete mode 100644 config/feature_flags/development/ci_rules_variables.yml create mode 100644 config/feature_flags/development/ci_runners_short_circuit_assignable_for.yml delete mode 100644 config/feature_flags/development/clear_status_with_quick_options.yml delete mode 100644 config/feature_flags/development/collect_package_events_redis.yml create mode 100644 config/feature_flags/development/compare_repo_dropdown.yml delete mode 100644 config/feature_flags/development/coverage_data_new_finder.yml create mode 100644 config/feature_flags/development/customize_homepage.yml delete mode 100644 config/feature_flags/development/dashboard_pipeline_status.yml create mode 100644 config/feature_flags/development/dora_daily_metrics.yml create mode 100644 config/feature_flags/development/environment_tier.yml create mode 100644 config/feature_flags/development/fork_project_form.yml create mode 100644 config/feature_flags/development/gitlab_ci_builds_queue_limit.yml create mode 100644 config/feature_flags/development/gitlab_ci_builds_queuing_metrics.yml delete mode 100644 config/feature_flags/development/graphql_logging.yml create mode 100644 config/feature_flags/development/group_devops_adoption.yml create mode 100644 config/feature_flags/development/improved_emoji_picker.yml delete mode 100644 config/feature_flags/development/improved_merge_diff_highlighting.yml create mode 100644 config/feature_flags/development/inherited_issuable_templates.yml delete mode 100644 config/feature_flags/development/instance_statistics.yml create mode 100644 config/feature_flags/development/introduce_marker_ranges.yml create mode 100644 config/feature_flags/development/issue_email_participants.yml create mode 100644 config/feature_flags/development/migrate_delayed_project_removal.yml create mode 100644 config/feature_flags/development/multiple_cache_per_job.yml delete mode 100644 config/feature_flags/development/multiple_http_integrations_custom_mapping.yml delete mode 100644 config/feature_flags/development/new_jira_connect_ui.yml create mode 100644 config/feature_flags/development/new_pipelines_table.yml create mode 100644 config/feature_flags/development/new_route_ci_minutes_purchase.yml delete mode 100644 config/feature_flags/development/optimized_merge_request_count_with_merged_at_filter.yml create mode 100644 config/feature_flags/development/or_issuable_queries.yml delete mode 100644 config/feature_flags/development/pages_serve_from_deployments.yml delete mode 100644 config/feature_flags/development/pages_use_legacy_storage_lease.yml delete mode 100644 config/feature_flags/development/paginate_commit_view.yml create mode 100644 config/feature_flags/development/personal_access_tokens_scoped_to_projects.yml create mode 100644 config/feature_flags/development/pipeline_editor_empty_state_action.yml create mode 100644 config/feature_flags/development/pipeline_status_for_pipeline_editor.yml delete mode 100644 config/feature_flags/development/pipelines_security_report_summary.yml create mode 100644 config/feature_flags/development/product_intelligence_metrics_names_suggestions.yml delete mode 100644 config/feature_flags/development/project_transactionless_destroy.yml delete mode 100644 config/feature_flags/development/query_deploymenys_via_finished_at_in_vsa.yml delete mode 100644 config/feature_flags/development/recursive_approach_for_all_projects.yml create mode 100644 config/feature_flags/development/recursive_namespace_lookup_as_inner_join.yml delete mode 100644 config/feature_flags/development/remove_comment_close_reopen.yml delete mode 100644 config/feature_flags/development/saas_add_seats_button.yml delete mode 100644 config/feature_flags/development/saml_group_links.yml create mode 100644 config/feature_flags/development/scoped_group_variables.yml delete mode 100644 config/feature_flags/development/security_on_demand_scans_site_validation.yml create mode 100644 config/feature_flags/development/security_orchestration_policies_configuration.yml delete mode 100644 config/feature_flags/development/shared_group_membership_auth.yml delete mode 100644 config/feature_flags/development/suggestions_custom_commit.yml create mode 100644 config/feature_flags/development/usage_data_code_review_aggregation.yml create mode 100644 config/feature_flags/development/usage_data_i_analytics_cohorts.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_assignees_changed.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_labels_changed.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_milestone_changed.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_mr_discussion_locked.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_mr_discussion_unlocked.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_reviewers_changed.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_time_estimate_changed.yml create mode 100644 config/feature_flags/development/usage_data_i_code_review_user_time_spent_changed.yml delete mode 100644 config/feature_flags/development/usage_data_i_source_code_code_intelligence.yml create mode 100644 config/feature_flags/development/usage_data_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile.yml create mode 100644 config/feature_flags/development/usage_data_track_ecosystem_slack_service.yml create mode 100644 config/feature_flags/development/validate_namespace_parent_type.yml delete mode 100644 config/feature_flags/development/vue_notification_dropdown.yml delete mode 100644 config/feature_flags/development/vue_project_members_list.yml create mode 100644 config/feature_flags/experiment/ci_syntax_templates_b_experiment_percentage.yml delete mode 100644 config/feature_flags/experiment/ci_syntax_templates_experiment_percentage.yml delete mode 100644 config/feature_flags/experiment/customize_homepage_experiment_percentage.yml create mode 100644 config/feature_flags/experiment/empty_repo_upload.yml delete mode 100644 config/feature_flags/experiment/invite_members_version_a_experiment_percentage.yml create mode 100644 config/feature_flags/experiment/repo_integrations_link.yml delete mode 100644 config/feature_flags/ops/marginalia.yml create mode 100644 config/initializers/rack_multipart_patch.rb create mode 100644 config/initializers_before_autoloader/003_gc_compact.rb create mode 100644 config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174914_g_analytics_contribution_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174918_g_analytics_insights_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174921_g_analytics_issues_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174926_g_analytics_productivity_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174929_g_analytics_valuestream_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174933_p_analytics_pipelines_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174937_p_analytics_code_reviews_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174941_p_analytics_valuestream_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174945_p_analytics_insights_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174949_p_analytics_issues_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174953_p_analytics_repo_monthly.yml create mode 100644 config/metrics/counts_28d/20210216174956_i_analytics_cohorts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175000_i_analytics_dev_ops_score_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175004_g_analytics_merge_request_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175008_p_analytics_merge_request_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175012_i_analytics_instance_statistics_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175016_analytics_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175055_merge_requests.yml create mode 100644 config/metrics/counts_28d/20210216175057_projects_with_disable_overriding_approvers_per_merge_request.yml create mode 100644 config/metrics/counts_28d/20210216175059_projects_without_disable_overriding_approvers_per_merge_request.yml create mode 100644 config/metrics/counts_28d/20210216175101_merge_requests_users.yml create mode 100644 config/metrics/counts_28d/20210216175109_suggestions.yml create mode 100644 config/metrics/counts_28d/20210216175113_merge_request_action_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175117_i_source_code_code_intelligence_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175120_i_code_review_mr_diffs_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175124_i_code_review_user_single_file_diffs_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175128_i_code_review_mr_single_file_diffs_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175132_i_code_review_user_create_mr_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175136_i_code_review_user_close_mr_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175140_i_code_review_user_reopen_mr_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175144_i_code_review_user_merge_mr_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175148_i_code_review_user_create_mr_comment_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175152_i_code_review_user_edit_mr_comment_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175156_i_code_review_user_remove_mr_comment_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175159_i_code_review_user_add_suggestion_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175203_i_code_review_user_apply_suggestion_monthly.yml create mode 100644 config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml create mode 100644 config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml create mode 100644 config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml create mode 100644 config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml create mode 100644 config/metrics/counts_28d/20210216175413_clusters_management_project.yml create mode 100644 config/metrics/counts_28d/20210216175415_clusters_disabled.yml create mode 100644 config/metrics/counts_28d/20210216175417_clusters_enabled.yml create mode 100644 config/metrics/counts_28d/20210216175419_clusters_platforms_gke.yml create mode 100644 config/metrics/counts_28d/20210216175420_clusters_platforms_eks.yml create mode 100644 config/metrics/counts_28d/20210216175422_clusters_platforms_user.yml create mode 100644 config/metrics/counts_28d/20210216175424_instance_clusters_disabled.yml create mode 100644 config/metrics/counts_28d/20210216175426_instance_clusters_enabled.yml create mode 100644 config/metrics/counts_28d/20210216175428_group_clusters_disabled.yml create mode 100644 config/metrics/counts_28d/20210216175430_group_clusters_enabled.yml create mode 100644 config/metrics/counts_28d/20210216175432_project_clusters_disabled.yml create mode 100644 config/metrics/counts_28d/20210216175434_project_clusters_enabled.yml create mode 100644 config/metrics/counts_28d/20210216175542_ci_builds.yml create mode 100644 config/metrics/counts_28d/20210216175544_ci_external_pipelines.yml create mode 100644 config/metrics/counts_28d/20210216175546_ci_internal_pipelines.yml create mode 100644 config/metrics/counts_28d/20210216175548_ci_pipeline_config_auto_devops.yml create mode 100644 config/metrics/counts_28d/20210216175550_ci_pipeline_config_repository.yml create mode 100644 config/metrics/counts_28d/20210216175552_ci_pipeline_schedules.yml create mode 100644 config/metrics/counts_28d/20210216175554_ci_pipelines.yml create mode 100644 config/metrics/counts_28d/20210216175556_ci_triggers.yml create mode 100644 config/metrics/counts_28d/20210216175616_user_dast_jobs.yml create mode 100644 config/metrics/counts_28d/20210216175618_dast_pipeline.yml create mode 100644 config/metrics/counts_28d/20210216180308_personal_snippets.yml create mode 100644 config/metrics/counts_28d/20210216180310_project_snippets.yml create mode 100644 config/metrics/counts_28d/20210216180312_snippets.yml create mode 100644 config/metrics/counts_28d/20210216180317_snippets.yml create mode 100644 config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml create mode 100644 config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml create mode 100644 config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml create mode 100644 config/metrics/counts_28d/20210216180325_action_monthly_active_users_sse_edit.yml create mode 100644 config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml create mode 100644 config/metrics/counts_28d/20210216180330_g_edit_by_web_ide_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180334_g_edit_by_sfe_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180338_g_edit_by_snippet_ide_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180341_ide_edit_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180355_user_api_fuzzing_jobs.yml create mode 100644 config/metrics/counts_28d/20210216180357_user_api_fuzzing_dnd_jobs.yml create mode 100644 config/metrics/counts_28d/20210216180424_i_search_total_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180431_search_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml create mode 100644 config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml create mode 100644 config/metrics/counts_28d/20210216180524_projects_with_incidents.yml create mode 100644 config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml create mode 100644 config/metrics/counts_28d/20210216180530_incident_management_alert_status_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180533_incident_management_alert_assigned_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180537_incident_management_alert_todo_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180541_incident_management_incident_created_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180545_incident_management_incident_reopened_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180548_incident_management_incident_closed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180552_incident_management_incident_assigned_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180556_incident_management_incident_todo_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180559_incident_management_incident_comment_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180607_incident_management_incident_published_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180611_incident_management_incident_relate_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180614_incident_management_incident_unrelate_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180618_incident_management_incident_change_confidential_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180622_incident_management_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml create mode 100644 config/metrics/counts_28d/20210216180731_projects_imported_from_github.yml create mode 100644 config/metrics/counts_28d/20210216180745_action_monthly_active_users_design_management.yml create mode 100644 config/metrics/counts_28d/20210216180747_action_monthly_active_users_wiki_repo.yml create mode 100644 config/metrics/counts_28d/20210216180814_events.yml create mode 100644 config/metrics/counts_28d/20210216180816_groups.yml create mode 100644 config/metrics/counts_28d/20210216180818_users_created.yml create mode 100644 config/metrics/counts_28d/20210216180820_ldap_keys.yml create mode 100644 config/metrics/counts_28d/20210216180822_ldap_users.yml create mode 100644 config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml create mode 100644 config/metrics/counts_28d/20210216180956_clusters.yml create mode 100644 config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml create mode 100644 config/metrics/counts_28d/20210216181000_operations_dashboard_default_dashboard.yml create mode 100644 config/metrics/counts_28d/20210216181002_projects_with_tracing_enabled.yml create mode 100644 config/metrics/counts_28d/20210216181004_projects_with_error_tracking_enabled.yml create mode 100644 config/metrics/counts_28d/20210216181006_operations_dashboard_users_with_projects_added.yml create mode 100644 config/metrics/counts_28d/20210216181050_packages.yml create mode 100644 config/metrics/counts_28d/20210216181057_projects_with_packages.yml create mode 100644 config/metrics/counts_28d/20210216181139_issues.yml create mode 100644 config/metrics/counts_28d/20210216181141_notes.yml create mode 100644 config/metrics/counts_28d/20210216181143_projects.yml create mode 100644 config/metrics/counts_28d/20210216181145_todos.yml create mode 100644 config/metrics/counts_28d/20210216181147_service_desk_enabled_projects.yml create mode 100644 config/metrics/counts_28d/20210216181148_service_desk_issues.yml create mode 100644 config/metrics/counts_28d/20210216181150_projects_jira_active.yml create mode 100644 config/metrics/counts_28d/20210216181152_projects_jira_dvcs_cloud_active.yml create mode 100644 config/metrics/counts_28d/20210216181154_projects_jira_dvcs_server_active.yml create mode 100644 config/metrics/counts_28d/20210216181158_epics.yml create mode 100644 config/metrics/counts_28d/20210216181200_label_lists.yml create mode 100644 config/metrics/counts_28d/20210216181201_milestone_lists.yml create mode 100644 config/metrics/counts_28d/20210216181304_g_project_management_issue_title_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181308_g_project_management_issue_description_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181315_g_project_management_issue_made_confidential_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181319_g_project_management_issue_made_visible_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181323_g_project_management_issue_created_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181326_g_project_management_issue_closed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181330_g_project_management_issue_reopened_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181334_g_project_management_issue_label_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181337_g_project_management_issue_milestone_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181341_g_project_management_issue_iteration_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181345_g_project_management_issue_weight_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181348_g_project_management_issue_cross_referenced_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181352_g_project_management_issue_moved_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181356_g_project_management_issue_related_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181400_g_project_management_issue_unrelated_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181403_g_project_management_issue_marked_as_duplicate_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181407_g_project_management_issue_locked_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181411_g_project_management_issue_unlocked_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181414_g_project_management_issue_added_to_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181416_g_project_management_issue_removed_from_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181420_g_project_management_issue_changed_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181424_g_project_management_issue_designs_added_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181427_g_project_management_issue_designs_modified_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181431_g_project_management_issue_designs_removed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181435_g_project_management_issue_due_date_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181438_g_project_management_issue_time_estimate_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181442_g_project_management_issue_time_spent_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181446_g_project_management_issue_comment_added_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181450_g_project_management_issue_comment_edited_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181453_g_project_management_issue_comment_removed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181457_g_project_management_issue_health_status_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181501_g_project_management_issue_cloned_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181504_issues_edit_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181508_i_quickactions_approve_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181512_i_quickactions_assign_single_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181516_i_quickactions_assign_multiple_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181519_i_quickactions_assign_self_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181523_i_quickactions_assign_reviewer_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181527_i_quickactions_award_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181530_i_quickactions_board_move_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181534_i_quickactions_child_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181538_i_quickactions_clear_weight_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181541_i_quickactions_clone_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181545_i_quickactions_close_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181549_i_quickactions_confidential_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181553_i_quickactions_copy_metadata_merge_request_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181556_i_quickactions_copy_metadata_issue_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181600_i_quickactions_create_merge_request_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181604_i_quickactions_done_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181607_i_quickactions_draft_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181611_i_quickactions_due_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181615_i_quickactions_duplicate_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181618_i_quickactions_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181622_i_quickactions_estimate_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181626_i_quickactions_iteration_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181629_i_quickactions_label_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181633_i_quickactions_lock_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181637_i_quickactions_merge_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181641_i_quickactions_milestone_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181644_i_quickactions_move_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181648_i_quickactions_parent_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181652_i_quickactions_promote_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181655_i_quickactions_publish_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181659_i_quickactions_reassign_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181703_i_quickactions_reassign_reviewer_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181707_i_quickactions_rebase_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181710_i_quickactions_relabel_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181714_i_quickactions_relate_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181718_i_quickactions_remove_child_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181721_i_quickactions_remove_due_date_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181725_i_quickactions_remove_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181729_i_quickactions_remove_estimate_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181732_i_quickactions_remove_iteration_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181736_i_quickactions_remove_milestone_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181740_i_quickactions_remove_parent_epic_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181744_i_quickactions_remove_time_spent_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181747_i_quickactions_remove_zoom_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181751_i_quickactions_reopen_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181755_i_quickactions_shrug_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181758_i_quickactions_spend_subtract_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181802_i_quickactions_spend_add_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181806_i_quickactions_submit_review_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181809_i_quickactions_subscribe_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181813_i_quickactions_tableflip_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181817_i_quickactions_tag_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181821_i_quickactions_target_branch_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181824_i_quickactions_title_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181828_i_quickactions_todo_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181832_i_quickactions_unassign_specific_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181835_i_quickactions_unassign_all_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181839_i_quickactions_unassign_reviewer_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181843_i_quickactions_unlabel_specific_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181846_i_quickactions_unlabel_all_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181850_i_quickactions_unlock_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181854_i_quickactions_unsubscribe_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181857_i_quickactions_weight_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181901_i_quickactions_wip_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181905_i_quickactions_zoom_monthly.yml create mode 100644 config/metrics/counts_28d/20210216181923_successful_deployments.yml create mode 100644 config/metrics/counts_28d/20210216181924_failed_deployments.yml create mode 100644 config/metrics/counts_28d/20210216181935_deployments.yml create mode 100644 config/metrics/counts_28d/20210216181937_failed_deployments.yml create mode 100644 config/metrics/counts_28d/20210216181939_releases.yml create mode 100644 config/metrics/counts_28d/20210216181941_successful_deployments.yml create mode 100644 config/metrics/counts_28d/20210216181943_projects_mirrored_with_pipelines_enabled.yml create mode 100644 config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml create mode 100644 config/metrics/counts_28d/20210216181956_user_unique_users_all_secure_scanners.yml create mode 100644 config/metrics/counts_28d/20210216182034_deploy_keys.yml create mode 100644 config/metrics/counts_28d/20210216182036_keys.yml create mode 100644 config/metrics/counts_28d/20210216182038_remote_mirrors.yml create mode 100644 config/metrics/counts_28d/20210216182040_action_monthly_active_users_project_repo.yml create mode 100644 config/metrics/counts_28d/20210216182041_action_monthly_active_users_git_write.yml create mode 100644 config/metrics/counts_28d/20210216182043_projects_enforcing_code_owner_approval.yml create mode 100644 config/metrics/counts_28d/20210216182045_projects_with_sectional_code_owner_rules.yml create mode 100644 config/metrics/counts_28d/20210216182049_projects_with_repositories_enabled.yml create mode 100644 config/metrics/counts_28d/20210216182051_protected_branches.yml create mode 100644 config/metrics/counts_28d/20210216182102_wiki_action_monthly.yml create mode 100644 config/metrics/counts_28d/20210216182106_design_action_monthly.yml create mode 100644 config/metrics/counts_28d/20210216182109_project_action_monthly.yml create mode 100644 config/metrics/counts_28d/20210216182125_user_sast_jobs.yml create mode 100644 config/metrics/counts_28d/20210216182127_user_secret_detection_jobs.yml create mode 100644 config/metrics/counts_28d/20210216182129_sast_pipeline.yml create mode 100644 config/metrics/counts_28d/20210216182131_secret_detection_pipeline.yml create mode 100644 config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml create mode 100644 config/metrics/counts_28d/20210216182200_i_testing_metrics_report_artifact_uploaders_monthly.yml create mode 100644 config/metrics/counts_28d/20210216182209_user_preferences_group_overview_security_dashboard.yml create mode 100644 config/metrics/counts_28d/20210216183159_projects_with_alerts_created.yml create mode 100644 config/metrics/counts_28d/20210216183201_compliance_features_track_unique_visits_union.yml create mode 100644 config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml create mode 100644 config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml create mode 100644 config/metrics/counts_28d/20210216183209_i_testing_paid_monthly_active_user_total.yml create mode 100644 config/metrics/counts_28d/20210216183613_total_number_of_path_locks.yml create mode 100644 config/metrics/counts_28d/20210216183614_total_number_of_locked_files.yml create mode 100644 config/metrics/counts_28d/20210216183618_approval_project_rules_with_more_approvers_than_required.yml create mode 100644 config/metrics/counts_28d/20210216183620_approval_project_rules_with_less_approvers_than_required.yml create mode 100644 config/metrics/counts_28d/20210216183622_approval_project_rules_with_exact_required_approvers.yml create mode 100644 config/metrics/counts_28d/20210216183627_omniauth_providers.yml create mode 100644 config/metrics/counts_28d/20210216183629_two-factor.yml create mode 100644 config/metrics/counts_28d/20210216183631_two-factor-via-u2f-device.yml create mode 100644 config/metrics/counts_28d/20210216183633_two-factor-via-webauthn-device.yml create mode 100644 config/metrics/counts_28d/20210216183634_standard.yml create mode 100644 config/metrics/counts_28d/20210216183636_google_oauth2.yml create mode 100644 config/metrics/counts_28d/20210216183638_unique_users_all_imports.yml create mode 100644 config/metrics/counts_28d/20210216183640_gitlab.yml create mode 100644 config/metrics/counts_28d/20210216183642_gitlab_v1.yml create mode 100644 config/metrics/counts_28d/20210216183644_gitlab_project.yml create mode 100644 config/metrics/counts_28d/20210216183646_gitlab.yml create mode 100644 config/metrics/counts_28d/20210216183648_github.yml create mode 100644 config/metrics/counts_28d/20210216183650_bitbucket.yml create mode 100644 config/metrics/counts_28d/20210216183652_bitbucket_server.yml create mode 100644 config/metrics/counts_28d/20210216183653_gitea.yml create mode 100644 config/metrics/counts_28d/20210216183655_git.yml create mode 100644 config/metrics/counts_28d/20210216183657_manifest.yml create mode 100644 config/metrics/counts_28d/20210216183659_gitlab_migration.yml create mode 100644 config/metrics/counts_28d/20210216183701_jira.yml create mode 100644 config/metrics/counts_28d/20210216183703_fogbugz.yml create mode 100644 config/metrics/counts_28d/20210216183705_phabricator.yml create mode 100644 config/metrics/counts_28d/20210216183707_csv.yml create mode 100644 config/metrics/counts_28d/20210216183709_group_import.yml create mode 100644 config/metrics/counts_28d/20210216183711_gitlab_migration.yml create mode 100644 config/metrics/counts_28d/20210216183712_total.yml create mode 100644 config/metrics/counts_28d/20210216183714_gitlab_project.yml create mode 100644 config/metrics/counts_28d/20210216183716_gitlab.yml create mode 100644 config/metrics/counts_28d/20210216183718_github.yml create mode 100644 config/metrics/counts_28d/20210216183720_bitbucket.yml create mode 100644 config/metrics/counts_28d/20210216183722_bitbucket_server.yml create mode 100644 config/metrics/counts_28d/20210216183724_gitea.yml create mode 100644 config/metrics/counts_28d/20210216183726_git.yml create mode 100644 config/metrics/counts_28d/20210216183728_manifest.yml create mode 100644 config/metrics/counts_28d/20210216183730_jira.yml create mode 100644 config/metrics/counts_28d/20210216183731_fogbugz.yml create mode 100644 config/metrics/counts_28d/20210216183733_phabricator.yml create mode 100644 config/metrics/counts_28d/20210216183735_csv.yml create mode 100644 config/metrics/counts_28d/20210216183737_groups_imported.yml create mode 100644 config/metrics/counts_28d/20210216183753_projects_incident_sla_enabled.yml create mode 100644 config/metrics/counts_28d/20210216183817_user_coverage_fuzzing_jobs.yml create mode 100644 config/metrics/counts_28d/20210216183826_sast_scans.yml create mode 100644 config/metrics/counts_28d/20210216183828_dependency_scanning_scans.yml create mode 100644 config/metrics/counts_28d/20210216183830_container_scanning_scans.yml create mode 100644 config/metrics/counts_28d/20210216183832_dast_scans.yml create mode 100644 config/metrics/counts_28d/20210216183834_secret_detection_scans.yml create mode 100644 config/metrics/counts_28d/20210216183836_coverage_fuzzing_scans.yml create mode 100644 config/metrics/counts_28d/20210216183838_api_fuzzing_scans.yml create mode 100644 config/metrics/counts_28d/20210216183916_compliance_unique_visits_for_any_target_monthly.yml create mode 100644 config/metrics/counts_28d/20210216183922_search_unique_visits_for_any_target_monthly.yml create mode 100644 config/metrics/counts_28d/20210216183926_g_compliance_dashboard_monthly.yml create mode 100644 config/metrics/counts_28d/20210216183930_g_compliance_audit_events_monthly.yml create mode 100644 config/metrics/counts_28d/20210216183934_i_compliance_audit_events_monthly.yml create mode 100644 config/metrics/counts_28d/20210216183938_i_compliance_credential_inventory_monthly.yml create mode 100644 config/metrics/counts_28d/20210216183942_a_compliance_audit_events_api_monthly.yml create mode 100644 config/metrics/counts_28d/20210216183946_compliance_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184024_g_edit_by_sse_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184047_git_write_action_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184140_testing_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184251_i_ci_secrets_management_vault_build_created_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184255_i_snippets_show_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184259_p_terraform_state_api_unique_users_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184303_o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184312_i_code_review_user_toggled_task_item_status_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184322_i_code_review_user_approve_mr_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184326_i_code_review_user_unapprove_mr_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184330_i_code_review_user_resolve_thread_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184334_i_code_review_user_unresolve_thread_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184338_i_code_review_edit_mr_title_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184342_i_code_review_edit_mr_desc_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184353_i_code_review_user_create_review_note_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184357_i_code_review_user_publish_review_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184401_i_code_review_user_create_multiline_mr_comment_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184405_i_code_review_user_edit_multiline_mr_comment_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184409_i_code_review_user_remove_multiline_mr_comment_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184418_i_code_review_user_assigned_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184422_i_code_review_user_marked_as_draft_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184426_i_code_review_user_unmarked_as_draft_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184430_i_code_review_user_review_requested_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184434_i_code_review_user_approval_rule_added_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184438_i_code_review_user_approval_rule_deleted_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184442_i_code_review_user_approval_rule_edited_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184446_i_code_review_user_vs_code_api_request_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184450_i_code_review_user_create_mr_from_issue_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184458_p_ci_templates_implicit_auto_devops_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184510_p_ci_templates_implicit_security_sast_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184513_p_ci_templates_implicit_security_secret_detection_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184523_p_ci_templates_auto_devops_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184530_p_ci_templates_aws_deploy_ecs_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184546_p_ci_templates_security_sast_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184551_p_ci_templates_security_secret_detection_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184555_p_ci_templates_terraform_base_latest_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184803_quickactions_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184806_i_package_composer_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184810_i_package_conan_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184814_i_package_container_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184818_i_package_debian_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184822_i_package_generic_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184826_i_package_golang_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184830_i_package_maven_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184834_i_package_npm_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184838_i_package_nuget_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184842_i_package_pypi_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184846_i_package_tag_deploy_token_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184854_i_package_composer_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184858_i_package_conan_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184902_i_package_container_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184906_i_package_debian_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184910_i_package_generic_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184913_i_package_golang_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184917_i_package_maven_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184921_i_package_npm_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184925_i_package_nuget_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184929_i_package_pypi_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184933_i_package_tag_user_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184941_i_ecosystem_jira_service_close_issue_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184945_i_ecosystem_jira_service_cross_reference_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184949_i_ecosystem_jira_service_list_issues_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184953_i_ecosystem_jira_service_create_issue_monthly.yml create mode 100644 config/metrics/counts_28d/20210216184957_ecosystem_total_unique_counts_monthly.yml create mode 100644 config/metrics/counts_28d/20210222041219_i_quickactions_invite_email_single_monthly.yml create mode 100644 config/metrics/counts_28d/20210222041235_i_quickactions_invite_email_multiple_monthly.yml create mode 100644 config/metrics/counts_28d/20210301102134_i_code_review_user_time_estimate_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210301102204_i_code_review_user_time_spent_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210301103859_i_code_review_user_mr_discussion_locked_monthly.yml create mode 100644 config/metrics/counts_28d/20210301103925_i_code_review_user_mr_discussion_unlocked_monthly.yml create mode 100644 config/metrics/counts_28d/20210301144228_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly.yml create mode 100644 config/metrics/counts_28d/20210302110520_i_code_review_user_milestone_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210302110607_i_code_review_user_labels_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210302114145_i_code_review_user_assignees_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210302114219_i_code_review_user_reviewers_changed_monthly.yml create mode 100644 config/metrics/counts_28d/20210303150507_i_ecosystem_slack_service_issue_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303150654_i_ecosystem_slack_service_push_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303150912_i_ecosystem_slack_service_deployment_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303151609_i_ecosystem_slack_service_wiki_page_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303151831_i_ecosystem_slack_service_merge_request_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303151946_i_ecosystem_slack_service_note_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303152049_i_ecosystem_slack_service_tag_push_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303152144_i_ecosystem_slack_service_confidential_note_notification_monthly.yml create mode 100644 config/metrics/counts_28d/20210303152233_i_ecosystem_slack_service_confidential_issue_notification_monthly.yml create mode 100644 config/metrics/counts_7d/20210216180422_i_search_total_weekly.yml create mode 100644 config/metrics/counts_7d/20210216180429_search_total_unique_counts_weekly.yml create mode 100644 config/metrics/counts_7d/20210216182134_i_testing_test_case_parsed_weekly.yml create mode 100644 config/metrics/counts_7d/20210216182158_i_testing_metrics_report_artifact_uploaders_weekly.yml create mode 100644 config/metrics/counts_7d/20210301144209_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_weekly.yml create mode 100644 config/metrics/counts_7d/20210302103002_i_ecosystem_slack_service_issue_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302103539_i_code_review_user_time_estimate_changed_weekly.yml create mode 100644 config/metrics/counts_7d/20210302103615_i_code_review_user_time_spent_changed_weekly.yml create mode 100644 config/metrics/counts_7d/20210302103629_i_ecosystem_slack_service_push_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302103755_i_ecosystem_slack_service_deployment_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302103907_i_ecosystem_slack_service_wiki_page_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302104007_i_ecosystem_slack_service_merge_request_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302104047_i_ecosystem_slack_service_note_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302104144_i_ecosystem_slack_service_tag_push_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302104556_i_ecosystem_slack_service_confidential_note_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302104814_i_ecosystem_slack_service_confidential_issue_notification_weekly.yml create mode 100644 config/metrics/counts_7d/20210302105258_i_code_review_user_mr_discussion_unlocked_weekly.yml create mode 100644 config/metrics/counts_7d/20210302105318_i_code_review_user_mr_discussion_locked_weekly.yml create mode 100644 config/metrics/counts_7d/20210302110403_i_code_review_user_milestone_changed_weekly.yml create mode 100644 config/metrics/counts_7d/20210302110548_i_code_review_user_labels_changed_weekly.yml create mode 100644 config/metrics/counts_7d/20210302114202_i_code_review_user_assignees_changed_weekly.yml create mode 100644 config/metrics/counts_7d/20210302114235_i_code_review_user_reviewers_changed_weekly.yml create mode 100644 config/metrics/counts_all/20210216174826_ldap_users.yml create mode 100644 config/metrics/counts_all/20210216174829_smtp_server.yml create mode 100644 config/metrics/counts_all/20210216174832_cycle_analytics_views.yml create mode 100644 config/metrics/counts_all/20210216174834_productivity_analytics_views.yml create mode 100644 config/metrics/counts_all/20210216174836_g_analytics_contribution.yml create mode 100644 config/metrics/counts_all/20210216174838_g_analytics_insights.yml create mode 100644 config/metrics/counts_all/20210216174840_g_analytics_issues.yml create mode 100644 config/metrics/counts_all/20210216174842_g_analytics_productivity.yml create mode 100644 config/metrics/counts_all/20210216174844_g_analytics_valuestream.yml create mode 100644 config/metrics/counts_all/20210216174846_p_analytics_pipelines.yml create mode 100644 config/metrics/counts_all/20210216174848_p_analytics_code_reviews.yml create mode 100644 config/metrics/counts_all/20210216174850_p_analytics_valuestream.yml create mode 100644 config/metrics/counts_all/20210216174852_p_analytics_insights.yml create mode 100644 config/metrics/counts_all/20210216174854_p_analytics_issues.yml create mode 100644 config/metrics/counts_all/20210216174856_p_analytics_repo.yml create mode 100644 config/metrics/counts_all/20210216174858_i_analytics_cohorts.yml create mode 100644 config/metrics/counts_all/20210216174900_i_analytics_dev_ops_score.yml create mode 100644 config/metrics/counts_all/20210216174902_g_analytics_merge_request.yml create mode 100644 config/metrics/counts_all/20210216174904_p_analytics_merge_request.yml create mode 100644 config/metrics/counts_all/20210216174906_i_analytics_instance_statistics.yml create mode 100644 config/metrics/counts_all/20210216174908_analytics_unique_visits_for_any_target.yml create mode 100644 config/metrics/counts_all/20210216175019_projects_with_prometheus_alerts.yml create mode 100644 config/metrics/counts_all/20210216175021_pod_logs_usages_total.yml create mode 100644 config/metrics/counts_all/20210216175024_service_desk_enabled_projects.yml create mode 100644 config/metrics/counts_all/20210216175026_service_desk_issues.yml create mode 100644 config/metrics/counts_all/20210216175028_requirements_created.yml create mode 100644 config/metrics/counts_all/20210216175037_suggestions.yml create mode 100644 config/metrics/counts_all/20210216175039_merge_requests.yml create mode 100644 config/metrics/counts_all/20210216175041_merge_request_comment.yml create mode 100644 config/metrics/counts_all/20210216175043_merge_request_create.yml create mode 100644 config/metrics/counts_all/20210216175045_merge_requests.yml create mode 100644 config/metrics/counts_all/20210216175053_suggestions.yml create mode 100644 config/metrics/counts_all/20210216175206_merged_merge_requests_using_approval_rules.yml create mode 100644 config/metrics/counts_all/20210216175229_auto_devops_enabled.yml create mode 100644 config/metrics/counts_all/20210216175231_auto_devops_disabled.yml create mode 100644 config/metrics/counts_all/20210216175232_clusters.yml create mode 100644 config/metrics/counts_all/20210216175234_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175236_project_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175238_group_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175240_instance_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175242_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175244_project_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175246_group_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175248_instance_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175250_clusters_platforms_eks.yml create mode 100644 config/metrics/counts_all/20210216175251_clusters_platforms_gke.yml create mode 100644 config/metrics/counts_all/20210216175253_clusters_platforms_user.yml create mode 100644 config/metrics/counts_all/20210216175255_clusters_applications_helm.yml create mode 100644 config/metrics/counts_all/20210216175257_clusters_applications_ingress.yml create mode 100644 config/metrics/counts_all/20210216175259_clusters_applications_cert_managers.yml create mode 100644 config/metrics/counts_all/20210216175301_clusters_applications_crossplane.yml create mode 100644 config/metrics/counts_all/20210216175303_clusters_applications_prometheus.yml create mode 100644 config/metrics/counts_all/20210216175305_clusters_applications_runner.yml create mode 100644 config/metrics/counts_all/20210216175307_clusters_applications_knative.yml create mode 100644 config/metrics/counts_all/20210216175309_clusters_applications_elastic_stack.yml create mode 100644 config/metrics/counts_all/20210216175310_clusters_applications_jupyter.yml create mode 100644 config/metrics/counts_all/20210216175312_clusters_applications_cilium.yml create mode 100644 config/metrics/counts_all/20210216175314_clusters_management_project.yml create mode 100644 config/metrics/counts_all/20210216175320_projects_with_terraform_reports.yml create mode 100644 config/metrics/counts_all/20210216175322_projects_with_terraform_states.yml create mode 100644 config/metrics/counts_all/20210216175324_terraform_reports.yml create mode 100644 config/metrics/counts_all/20210216175326_terraform_states.yml create mode 100644 config/metrics/counts_all/20210216175329_clusters_applications_cert_managers.yml create mode 100644 config/metrics/counts_all/20210216175331_clusters_applications_helm.yml create mode 100644 config/metrics/counts_all/20210216175333_clusters_applications_ingress.yml create mode 100644 config/metrics/counts_all/20210216175335_clusters_applications_knative.yml create mode 100644 config/metrics/counts_all/20210216175337_clusters_management_project.yml create mode 100644 config/metrics/counts_all/20210216175339_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175341_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175343_clusters_platforms_gke.yml create mode 100644 config/metrics/counts_all/20210216175345_clusters_platforms_eks.yml create mode 100644 config/metrics/counts_all/20210216175346_clusters_platforms_user.yml create mode 100644 config/metrics/counts_all/20210216175348_instance_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175350_instance_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175352_group_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175354_group_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175356_project_clusters_disabled.yml create mode 100644 config/metrics/counts_all/20210216175358_project_clusters_enabled.yml create mode 100644 config/metrics/counts_all/20210216175403_projects_with_prometheus_alerts.yml create mode 100644 config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml create mode 100644 config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml create mode 100644 config/metrics/counts_all/20210216175446_network_policy_forwards.yml create mode 100644 config/metrics/counts_all/20210216175448_network_policy_drops.yml create mode 100644 config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml create mode 100644 config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml create mode 100644 config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml create mode 100644 config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml create mode 100644 config/metrics/counts_all/20210216175510_ci_builds.yml create mode 100644 config/metrics/counts_all/20210216175512_ci_internal_pipelines.yml create mode 100644 config/metrics/counts_all/20210216175514_ci_external_pipelines.yml create mode 100644 config/metrics/counts_all/20210216175516_ci_pipeline_config_auto_devops.yml create mode 100644 config/metrics/counts_all/20210216175518_ci_pipeline_config_repository.yml create mode 100644 config/metrics/counts_all/20210216175520_ci_runners.yml create mode 100644 config/metrics/counts_all/20210216175521_ci_triggers.yml create mode 100644 config/metrics/counts_all/20210216175523_ci_pipeline_schedules.yml create mode 100644 config/metrics/counts_all/20210216175525_ci_builds.yml create mode 100644 config/metrics/counts_all/20210216175527_ci_external_pipelines.yml create mode 100644 config/metrics/counts_all/20210216175529_ci_internal_pipelines.yml create mode 100644 config/metrics/counts_all/20210216175531_ci_pipeline_config_auto_devops.yml create mode 100644 config/metrics/counts_all/20210216175533_ci_pipeline_config_repository.yml create mode 100644 config/metrics/counts_all/20210216175535_ci_pipeline_schedules.yml create mode 100644 config/metrics/counts_all/20210216175537_ci_pipelines.yml create mode 100644 config/metrics/counts_all/20210216175539_ci_triggers.yml create mode 100644 config/metrics/counts_all/20210216175612_dast_jobs.yml create mode 100644 config/metrics/counts_all/20210216175614_user_dast_jobs.yml create mode 100644 config/metrics/counts_all/20210216175621_web_hooks.yml create mode 100644 config/metrics/counts_all/20210216175623_projects_asana_active.yml create mode 100644 config/metrics/counts_all/20210216175625_groups_asana_active.yml create mode 100644 config/metrics/counts_all/20210216175627_templates_asana_active.yml create mode 100644 config/metrics/counts_all/20210216175628_instances_asana_active.yml create mode 100644 config/metrics/counts_all/20210216175630_projects_inheriting_asana_active.yml create mode 100644 config/metrics/counts_all/20210216175632_groups_inheriting_asana_active.yml create mode 100644 config/metrics/counts_all/20210216175634_projects_assembla_active.yml create mode 100644 config/metrics/counts_all/20210216175636_groups_assembla_active.yml create mode 100644 config/metrics/counts_all/20210216175638_templates_assembla_active.yml create mode 100644 config/metrics/counts_all/20210216175640_instances_assembla_active.yml create mode 100644 config/metrics/counts_all/20210216175642_projects_inheriting_assembla_active.yml create mode 100644 config/metrics/counts_all/20210216175644_groups_inheriting_assembla_active.yml create mode 100644 config/metrics/counts_all/20210216175645_projects_bamboo_active.yml create mode 100644 config/metrics/counts_all/20210216175647_groups_bamboo_active.yml create mode 100644 config/metrics/counts_all/20210216175649_templates_bamboo_active.yml create mode 100644 config/metrics/counts_all/20210216175651_instances_bamboo_active.yml create mode 100644 config/metrics/counts_all/20210216175653_projects_inheriting_bamboo_active.yml create mode 100644 config/metrics/counts_all/20210216175655_groups_inheriting_bamboo_active.yml create mode 100644 config/metrics/counts_all/20210216175657_projects_bugzilla_active.yml create mode 100644 config/metrics/counts_all/20210216175659_groups_bugzilla_active.yml create mode 100644 config/metrics/counts_all/20210216175701_templates_bugzilla_active.yml create mode 100644 config/metrics/counts_all/20210216175702_instances_bugzilla_active.yml create mode 100644 config/metrics/counts_all/20210216175704_projects_inheriting_bugzilla_active.yml create mode 100644 config/metrics/counts_all/20210216175706_groups_inheriting_bugzilla_active.yml create mode 100644 config/metrics/counts_all/20210216175708_projects_buildkite_active.yml create mode 100644 config/metrics/counts_all/20210216175710_groups_buildkite_active.yml create mode 100644 config/metrics/counts_all/20210216175712_templates_buildkite_active.yml create mode 100644 config/metrics/counts_all/20210216175714_instances_buildkite_active.yml create mode 100644 config/metrics/counts_all/20210216175716_projects_inheriting_buildkite_active.yml create mode 100644 config/metrics/counts_all/20210216175717_groups_inheriting_buildkite_active.yml create mode 100644 config/metrics/counts_all/20210216175719_projects_campfire_active.yml create mode 100644 config/metrics/counts_all/20210216175721_groups_campfire_active.yml create mode 100644 config/metrics/counts_all/20210216175723_templates_campfire_active.yml create mode 100644 config/metrics/counts_all/20210216175725_instances_campfire_active.yml create mode 100644 config/metrics/counts_all/20210216175727_projects_inheriting_campfire_active.yml create mode 100644 config/metrics/counts_all/20210216175729_groups_inheriting_campfire_active.yml create mode 100644 config/metrics/counts_all/20210216175731_projects_confluence_active.yml create mode 100644 config/metrics/counts_all/20210216175733_groups_confluence_active.yml create mode 100644 config/metrics/counts_all/20210216175734_templates_confluence_active.yml create mode 100644 config/metrics/counts_all/20210216175736_instances_confluence_active.yml create mode 100644 config/metrics/counts_all/20210216175738_projects_inheriting_confluence_active.yml create mode 100644 config/metrics/counts_all/20210216175740_groups_inheriting_confluence_active.yml create mode 100644 config/metrics/counts_all/20210216175742_projects_custom_issue_tracker_active.yml create mode 100644 config/metrics/counts_all/20210216175744_groups_custom_issue_tracker_active.yml create mode 100644 config/metrics/counts_all/20210216175745_templates_custom_issue_tracker_active.yml create mode 100644 config/metrics/counts_all/20210216175747_instances_custom_issue_tracker_active.yml create mode 100644 config/metrics/counts_all/20210216175749_projects_inheriting_custom_issue_tracker_active.yml create mode 100644 config/metrics/counts_all/20210216175751_groups_inheriting_custom_issue_tracker_active.yml create mode 100644 config/metrics/counts_all/20210216175753_projects_discord_active.yml create mode 100644 config/metrics/counts_all/20210216175755_groups_discord_active.yml create mode 100644 config/metrics/counts_all/20210216175756_templates_discord_active.yml create mode 100644 config/metrics/counts_all/20210216175758_instances_discord_active.yml create mode 100644 config/metrics/counts_all/20210216175800_projects_inheriting_discord_active.yml create mode 100644 config/metrics/counts_all/20210216175802_groups_inheriting_discord_active.yml create mode 100644 config/metrics/counts_all/20210216175804_projects_drone_ci_active.yml create mode 100644 config/metrics/counts_all/20210216175806_groups_drone_ci_active.yml create mode 100644 config/metrics/counts_all/20210216175807_templates_drone_ci_active.yml create mode 100644 config/metrics/counts_all/20210216175809_instances_drone_ci_active.yml create mode 100644 config/metrics/counts_all/20210216175811_projects_inheriting_drone_ci_active.yml create mode 100644 config/metrics/counts_all/20210216175813_groups_inheriting_drone_ci_active.yml create mode 100644 config/metrics/counts_all/20210216175815_projects_emails_on_push_active.yml create mode 100644 config/metrics/counts_all/20210216175817_groups_emails_on_push_active.yml create mode 100644 config/metrics/counts_all/20210216175818_templates_emails_on_push_active.yml create mode 100644 config/metrics/counts_all/20210216175820_instances_emails_on_push_active.yml create mode 100644 config/metrics/counts_all/20210216175822_projects_inheriting_emails_on_push_active.yml create mode 100644 config/metrics/counts_all/20210216175824_groups_inheriting_emails_on_push_active.yml create mode 100644 config/metrics/counts_all/20210216175826_projects_external_wiki_active.yml create mode 100644 config/metrics/counts_all/20210216175828_groups_external_wiki_active.yml create mode 100644 config/metrics/counts_all/20210216175829_templates_external_wiki_active.yml create mode 100644 config/metrics/counts_all/20210216175831_instances_external_wiki_active.yml create mode 100644 config/metrics/counts_all/20210216175833_projects_inheriting_external_wiki_active.yml create mode 100644 config/metrics/counts_all/20210216175835_groups_inheriting_external_wiki_active.yml create mode 100644 config/metrics/counts_all/20210216175837_projects_flowdock_active.yml create mode 100644 config/metrics/counts_all/20210216175839_groups_flowdock_active.yml create mode 100644 config/metrics/counts_all/20210216175840_templates_flowdock_active.yml create mode 100644 config/metrics/counts_all/20210216175842_instances_flowdock_active.yml create mode 100644 config/metrics/counts_all/20210216175844_projects_inheriting_flowdock_active.yml create mode 100644 config/metrics/counts_all/20210216175846_groups_inheriting_flowdock_active.yml create mode 100644 config/metrics/counts_all/20210216175848_projects_github_active.yml create mode 100644 config/metrics/counts_all/20210216175850_groups_github_active.yml create mode 100644 config/metrics/counts_all/20210216175851_templates_github_active.yml create mode 100644 config/metrics/counts_all/20210216175853_instances_github_active.yml create mode 100644 config/metrics/counts_all/20210216175855_projects_inheriting_github_active.yml create mode 100644 config/metrics/counts_all/20210216175857_groups_inheriting_github_active.yml create mode 100644 config/metrics/counts_all/20210216175859_projects_hangouts_chat_active.yml create mode 100644 config/metrics/counts_all/20210216175901_groups_hangouts_chat_active.yml create mode 100644 config/metrics/counts_all/20210216175902_templates_hangouts_chat_active.yml create mode 100644 config/metrics/counts_all/20210216175904_instances_hangouts_chat_active.yml create mode 100644 config/metrics/counts_all/20210216175906_projects_inheriting_hangouts_chat_active.yml create mode 100644 config/metrics/counts_all/20210216175908_groups_inheriting_hangouts_chat_active.yml create mode 100644 config/metrics/counts_all/20210216175910_projects_hipchat_active.yml create mode 100644 config/metrics/counts_all/20210216175912_groups_hipchat_active.yml create mode 100644 config/metrics/counts_all/20210216175913_templates_hipchat_active.yml create mode 100644 config/metrics/counts_all/20210216175915_instances_hipchat_active.yml create mode 100644 config/metrics/counts_all/20210216175917_projects_inheriting_hipchat_active.yml create mode 100644 config/metrics/counts_all/20210216175919_groups_inheriting_hipchat_active.yml create mode 100644 config/metrics/counts_all/20210216175921_projects_irker_active.yml create mode 100644 config/metrics/counts_all/20210216175923_groups_irker_active.yml create mode 100644 config/metrics/counts_all/20210216175924_templates_irker_active.yml create mode 100644 config/metrics/counts_all/20210216175926_instances_irker_active.yml create mode 100644 config/metrics/counts_all/20210216175928_projects_inheriting_irker_active.yml create mode 100644 config/metrics/counts_all/20210216175930_groups_inheriting_irker_active.yml create mode 100644 config/metrics/counts_all/20210216175932_projects_jenkins_active.yml create mode 100644 config/metrics/counts_all/20210216175934_groups_jenkins_active.yml create mode 100644 config/metrics/counts_all/20210216175935_templates_jenkins_active.yml create mode 100644 config/metrics/counts_all/20210216175937_instances_jenkins_active.yml create mode 100644 config/metrics/counts_all/20210216175939_projects_inheriting_jenkins_active.yml create mode 100644 config/metrics/counts_all/20210216175941_groups_inheriting_jenkins_active.yml create mode 100644 config/metrics/counts_all/20210216175943_projects_jira_active.yml create mode 100644 config/metrics/counts_all/20210216175945_groups_jira_active.yml create mode 100644 config/metrics/counts_all/20210216175946_templates_jira_active.yml create mode 100644 config/metrics/counts_all/20210216175948_instances_jira_active.yml create mode 100644 config/metrics/counts_all/20210216175950_projects_inheriting_jira_active.yml create mode 100644 config/metrics/counts_all/20210216175952_groups_inheriting_jira_active.yml create mode 100644 config/metrics/counts_all/20210216175954_projects_mattermost_active.yml create mode 100644 config/metrics/counts_all/20210216175956_groups_mattermost_active.yml create mode 100644 config/metrics/counts_all/20210216175957_templates_mattermost_active.yml create mode 100644 config/metrics/counts_all/20210216175959_instances_mattermost_active.yml create mode 100644 config/metrics/counts_all/20210216180001_projects_inheriting_mattermost_active.yml create mode 100644 config/metrics/counts_all/20210216180003_groups_inheriting_mattermost_active.yml create mode 100644 config/metrics/counts_all/20210216180005_projects_mattermost_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180006_groups_mattermost_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180008_templates_mattermost_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180010_instances_mattermost_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180012_projects_inheriting_mattermost_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180014_groups_inheriting_mattermost_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180016_projects_microsoft_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180018_groups_microsoft_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180019_templates_microsoft_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180021_instances_microsoft_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180023_projects_inheriting_microsoft_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180025_groups_inheriting_microsoft_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180027_projects_packagist_active.yml create mode 100644 config/metrics/counts_all/20210216180029_groups_packagist_active.yml create mode 100644 config/metrics/counts_all/20210216180030_templates_packagist_active.yml create mode 100644 config/metrics/counts_all/20210216180032_instances_packagist_active.yml create mode 100644 config/metrics/counts_all/20210216180034_projects_inheriting_packagist_active.yml create mode 100644 config/metrics/counts_all/20210216180036_groups_inheriting_packagist_active.yml create mode 100644 config/metrics/counts_all/20210216180038_projects_pipelines_email_active.yml create mode 100644 config/metrics/counts_all/20210216180040_groups_pipelines_email_active.yml create mode 100644 config/metrics/counts_all/20210216180041_templates_pipelines_email_active.yml create mode 100644 config/metrics/counts_all/20210216180043_instances_pipelines_email_active.yml create mode 100644 config/metrics/counts_all/20210216180045_projects_inheriting_pipelines_email_active.yml create mode 100644 config/metrics/counts_all/20210216180047_groups_inheriting_pipelines_email_active.yml create mode 100644 config/metrics/counts_all/20210216180049_projects_pivotaltracker_active.yml create mode 100644 config/metrics/counts_all/20210216180051_groups_pivotaltracker_active.yml create mode 100644 config/metrics/counts_all/20210216180052_templates_pivotaltracker_active.yml create mode 100644 config/metrics/counts_all/20210216180054_instances_pivotaltracker_active.yml create mode 100644 config/metrics/counts_all/20210216180056_projects_inheriting_pivotaltracker_active.yml create mode 100644 config/metrics/counts_all/20210216180058_groups_inheriting_pivotaltracker_active.yml create mode 100644 config/metrics/counts_all/20210216180100_projects_pushover_active.yml create mode 100644 config/metrics/counts_all/20210216180102_groups_pushover_active.yml create mode 100644 config/metrics/counts_all/20210216180104_templates_pushover_active.yml create mode 100644 config/metrics/counts_all/20210216180105_instances_pushover_active.yml create mode 100644 config/metrics/counts_all/20210216180107_projects_inheriting_pushover_active.yml create mode 100644 config/metrics/counts_all/20210216180109_groups_inheriting_pushover_active.yml create mode 100644 config/metrics/counts_all/20210216180111_projects_redmine_active.yml create mode 100644 config/metrics/counts_all/20210216180113_groups_redmine_active.yml create mode 100644 config/metrics/counts_all/20210216180115_templates_redmine_active.yml create mode 100644 config/metrics/counts_all/20210216180116_instances_redmine_active.yml create mode 100644 config/metrics/counts_all/20210216180118_projects_inheriting_redmine_active.yml create mode 100644 config/metrics/counts_all/20210216180120_groups_inheriting_redmine_active.yml create mode 100644 config/metrics/counts_all/20210216180122_projects_slack_active.yml create mode 100644 config/metrics/counts_all/20210216180124_groups_slack_active.yml create mode 100644 config/metrics/counts_all/20210216180126_templates_slack_active.yml create mode 100644 config/metrics/counts_all/20210216180127_instances_slack_active.yml create mode 100644 config/metrics/counts_all/20210216180129_projects_inheriting_slack_active.yml create mode 100644 config/metrics/counts_all/20210216180131_groups_inheriting_slack_active.yml create mode 100644 config/metrics/counts_all/20210216180133_projects_slack_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180135_groups_slack_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180137_templates_slack_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180138_instances_slack_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180140_projects_inheriting_slack_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180142_groups_inheriting_slack_slash_commands_active.yml create mode 100644 config/metrics/counts_all/20210216180144_projects_teamcity_active.yml create mode 100644 config/metrics/counts_all/20210216180146_groups_teamcity_active.yml create mode 100644 config/metrics/counts_all/20210216180148_templates_teamcity_active.yml create mode 100644 config/metrics/counts_all/20210216180149_instances_teamcity_active.yml create mode 100644 config/metrics/counts_all/20210216180151_projects_inheriting_teamcity_active.yml create mode 100644 config/metrics/counts_all/20210216180153_groups_inheriting_teamcity_active.yml create mode 100644 config/metrics/counts_all/20210216180155_projects_unify_circuit_active.yml create mode 100644 config/metrics/counts_all/20210216180157_groups_unify_circuit_active.yml create mode 100644 config/metrics/counts_all/20210216180159_templates_unify_circuit_active.yml create mode 100644 config/metrics/counts_all/20210216180201_instances_unify_circuit_active.yml create mode 100644 config/metrics/counts_all/20210216180203_projects_inheriting_unify_circuit_active.yml create mode 100644 config/metrics/counts_all/20210216180204_groups_inheriting_unify_circuit_active.yml create mode 100644 config/metrics/counts_all/20210216180206_projects_webex_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180208_groups_webex_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180210_templates_webex_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180212_instances_webex_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180214_projects_inheriting_webex_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180215_groups_inheriting_webex_teams_active.yml create mode 100644 config/metrics/counts_all/20210216180217_projects_youtrack_active.yml create mode 100644 config/metrics/counts_all/20210216180219_groups_youtrack_active.yml create mode 100644 config/metrics/counts_all/20210216180221_templates_youtrack_active.yml create mode 100644 config/metrics/counts_all/20210216180223_instances_youtrack_active.yml create mode 100644 config/metrics/counts_all/20210216180225_projects_inheriting_youtrack_active.yml create mode 100644 config/metrics/counts_all/20210216180226_groups_inheriting_youtrack_active.yml create mode 100644 config/metrics/counts_all/20210216180228_projects_jira_server_active.yml create mode 100644 config/metrics/counts_all/20210216180230_projects_jira_cloud_active.yml create mode 100644 config/metrics/counts_all/20210216180232_projects_jira_dvcs_cloud_active.yml create mode 100644 config/metrics/counts_all/20210216180234_projects_jira_dvcs_server_active.yml create mode 100644 config/metrics/counts_all/20210216180239_personal_snippets.yml create mode 100644 config/metrics/counts_all/20210216180241_project_snippets.yml create mode 100644 config/metrics/counts_all/20210216180242_web_ide_commits.yml create mode 100644 config/metrics/counts_all/20210216180244_web_ide_views.yml create mode 100644 config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml create mode 100644 config/metrics/counts_all/20210216180248_web_ide_previews.yml create mode 100644 config/metrics/counts_all/20210216180250_web_ide_terminals.yml create mode 100644 config/metrics/counts_all/20210216180252_web_ide_pipelines.yml create mode 100644 config/metrics/counts_all/20210216180253_snippet_comment.yml create mode 100644 config/metrics/counts_all/20210216180255_snippet_create.yml create mode 100644 config/metrics/counts_all/20210216180257_snippet_update.yml create mode 100644 config/metrics/counts_all/20210216180259_static_site_editor_views.yml create mode 100644 config/metrics/counts_all/20210216180301_static_site_editor_commits.yml create mode 100644 config/metrics/counts_all/20210216180303_static_site_editor_merge_requests.yml create mode 100644 config/metrics/counts_all/20210216180304_user_preferences_user_gitpod_enabled.yml create mode 100644 config/metrics/counts_all/20210216180306_snippets.yml create mode 100644 config/metrics/counts_all/20210216180316_snippets.yml create mode 100644 config/metrics/counts_all/20210216180344_api_fuzzing_jobs.yml create mode 100644 config/metrics/counts_all/20210216180346_api_fuzzing_dnd_jobs.yml create mode 100644 config/metrics/counts_all/20210216180348_user_api_fuzzing_jobs.yml create mode 100644 config/metrics/counts_all/20210216180350_user_api_fuzzing_dnd_jobs.yml create mode 100644 config/metrics/counts_all/20210216180410_pool_repositories.yml create mode 100644 config/metrics/counts_all/20210216180413_all_searches.yml create mode 100644 config/metrics/counts_all/20210216180414_navbar_searches.yml create mode 100644 config/metrics/counts_all/20210216180416_i_search_total.yml create mode 100644 config/metrics/counts_all/20210216180434_issues_created_from_gitlab_error_tracking_ui.yml create mode 100644 config/metrics/counts_all/20210216180436_issues_with_associated_zoom_link.yml create mode 100644 config/metrics/counts_all/20210216180438_issues_using_zoom_quick_actions.yml create mode 100644 config/metrics/counts_all/20210216180440_issues_with_embedded_grafana_charts_approx.yml create mode 100644 config/metrics/counts_all/20210216180441_issues_created_from_alerts.yml create mode 100644 config/metrics/counts_all/20210216180443_issues_created_gitlab_alerts.yml create mode 100644 config/metrics/counts_all/20210216180445_issues_created_manually_from_alerts.yml create mode 100644 config/metrics/counts_all/20210216180447_incident_issues.yml create mode 100644 config/metrics/counts_all/20210216180449_alert_bot_incident_issues.yml create mode 100644 config/metrics/counts_all/20210216180451_incident_labeled_issues.yml create mode 100644 config/metrics/counts_all/20210216180453_projects_creating_incidents.yml create mode 100644 config/metrics/counts_all/20210216180454_projects_with_error_tracking_enabled.yml create mode 100644 config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml create mode 100644 config/metrics/counts_all/20210216180458_projects_with_alerts_created.yml create mode 100644 config/metrics/counts_all/20210216180500_projects_with_enabled_alert_integrations.yml create mode 100644 config/metrics/counts_all/20210216180502_status_page_incident_publishes.yml create mode 100644 config/metrics/counts_all/20210216180504_status_page_incident_unpublishes.yml create mode 100644 config/metrics/counts_all/20210216180506_status_page_projects.yml create mode 100644 config/metrics/counts_all/20210216180507_status_page_issues.yml create mode 100644 config/metrics/counts_all/20210216180517_projects_with_error_tracking_enabled.yml create mode 100644 config/metrics/counts_all/20210216180518_projects_with_incidents.yml create mode 100644 config/metrics/counts_all/20210216180520_projects_with_alert_incidents.yml create mode 100644 config/metrics/counts_all/20210216180522_projects_incident_sla_enabled.yml create mode 100644 config/metrics/counts_all/20210216180628_projects_imported_from_github.yml create mode 100644 config/metrics/counts_all/20210216180630_projects_imported_from_github.yml create mode 100644 config/metrics/counts_all/20210216180632_unique_users_all_imports.yml create mode 100644 config/metrics/counts_all/20210216180634_gitlab.yml create mode 100644 config/metrics/counts_all/20210216180636_gitlab_v1.yml create mode 100644 config/metrics/counts_all/20210216180638_gitlab_project.yml create mode 100644 config/metrics/counts_all/20210216180639_gitlab.yml create mode 100644 config/metrics/counts_all/20210216180641_github.yml create mode 100644 config/metrics/counts_all/20210216180643_bitbucket.yml create mode 100644 config/metrics/counts_all/20210216180645_bitbucket_server.yml create mode 100644 config/metrics/counts_all/20210216180647_gitea.yml create mode 100644 config/metrics/counts_all/20210216180649_git.yml create mode 100644 config/metrics/counts_all/20210216180650_manifest.yml create mode 100644 config/metrics/counts_all/20210216180652_gitlab_migration.yml create mode 100644 config/metrics/counts_all/20210216180654_jira.yml create mode 100644 config/metrics/counts_all/20210216180656_fogbugz.yml create mode 100644 config/metrics/counts_all/20210216180658_phabricator.yml create mode 100644 config/metrics/counts_all/20210216180700_csv.yml create mode 100644 config/metrics/counts_all/20210216180702_group_import.yml create mode 100644 config/metrics/counts_all/20210216180703_gitlab_migration.yml create mode 100644 config/metrics/counts_all/20210216180705_total.yml create mode 100644 config/metrics/counts_all/20210216180707_gitlab_project.yml create mode 100644 config/metrics/counts_all/20210216180709_gitlab.yml create mode 100644 config/metrics/counts_all/20210216180711_github.yml create mode 100644 config/metrics/counts_all/20210216180713_bitbucket.yml create mode 100644 config/metrics/counts_all/20210216180715_bitbucket_server.yml create mode 100644 config/metrics/counts_all/20210216180716_gitea.yml create mode 100644 config/metrics/counts_all/20210216180718_git.yml create mode 100644 config/metrics/counts_all/20210216180720_manifest.yml create mode 100644 config/metrics/counts_all/20210216180722_jira.yml create mode 100644 config/metrics/counts_all/20210216180724_fogbugz.yml create mode 100644 config/metrics/counts_all/20210216180726_phabricator.yml create mode 100644 config/metrics/counts_all/20210216180727_csv.yml create mode 100644 config/metrics/counts_all/20210216180729_groups_imported.yml create mode 100644 config/metrics/counts_all/20210216180734_wiki_pages_create.yml create mode 100644 config/metrics/counts_all/20210216180736_wiki_pages_update.yml create mode 100644 config/metrics/counts_all/20210216180738_wiki_pages_delete.yml create mode 100644 config/metrics/counts_all/20210216180740_design_management_designs_create.yml create mode 100644 config/metrics/counts_all/20210216180741_design_management_designs_update.yml create mode 100644 config/metrics/counts_all/20210216180743_design_management_designs_delete.yml create mode 100644 config/metrics/counts_all/20210216180750_groups.yml create mode 100644 config/metrics/counts_all/20210216180752_keys.yml create mode 100644 config/metrics/counts_all/20210216180754_events.yml create mode 100644 config/metrics/counts_all/20210216180756_groups.yml create mode 100644 config/metrics/counts_all/20210216180758_users_created.yml create mode 100644 config/metrics/counts_all/20210216180800_ldap_keys.yml create mode 100644 config/metrics/counts_all/20210216180801_ldap_users.yml create mode 100644 config/metrics/counts_all/20210216180843_provider.yml create mode 100644 config/metrics/counts_all/20210216180852_provider.yml create mode 100644 config/metrics/counts_all/20210216180902_provider.yml create mode 100644 config/metrics/counts_all/20210216180903_enabled.yml create mode 100644 config/metrics/counts_all/20210216180911_provider.yml create mode 100644 config/metrics/counts_all/20210216180920_provider.yml create mode 100644 config/metrics/counts_all/20210216180922_duration_s.yml create mode 100644 config/metrics/counts_all/20210216180924_failures.yml create mode 100644 config/metrics/counts_all/20210216180927_grafana_integrated_projects.yml create mode 100644 config/metrics/counts_all/20210216180929_projects_with_tracing_enabled.yml create mode 100644 config/metrics/counts_all/20210216180931_projects_prometheus_active.yml create mode 100644 config/metrics/counts_all/20210216180933_groups_prometheus_active.yml create mode 100644 config/metrics/counts_all/20210216180934_templates_prometheus_active.yml create mode 100644 config/metrics/counts_all/20210216180936_instances_prometheus_active.yml create mode 100644 config/metrics/counts_all/20210216180938_projects_inheriting_prometheus_active.yml create mode 100644 config/metrics/counts_all/20210216180940_groups_inheriting_prometheus_active.yml create mode 100644 config/metrics/counts_all/20210216180942_operations_dashboard_default_dashboard.yml create mode 100644 config/metrics/counts_all/20210216180944_operations_dashboard_users_with_projects_added.yml create mode 100644 config/metrics/counts_all/20210216180945_clusters.yml create mode 100644 config/metrics/counts_all/20210216180947_clusters_applications_prometheus.yml create mode 100644 config/metrics/counts_all/20210216180949_operations_dashboard_default_dashboard.yml create mode 100644 config/metrics/counts_all/20210216180951_projects_with_tracing_enabled.yml create mode 100644 config/metrics/counts_all/20210216180953_operations_dashboard_users_with_projects_added.yml create mode 100644 config/metrics/counts_all/20210216181009_lfs_objects.yml create mode 100644 config/metrics/counts_all/20210216181011_projects_with_packages.yml create mode 100644 config/metrics/counts_all/20210216181012_packages.yml create mode 100644 config/metrics/counts_all/20210216181014_projects_with_expiration_policy_disabled.yml create mode 100644 config/metrics/counts_all/20210216181016_projects_with_expiration_policy_enabled.yml create mode 100644 config/metrics/counts_all/20210216181029_projects_with_expiration_policy_enabled_with_cadence_set_to_1d.yml create mode 100644 config/metrics/counts_all/20210216181031_projects_with_expiration_policy_enabled_with_cadence_set_to_7d.yml create mode 100644 config/metrics/counts_all/20210216181033_projects_with_expiration_policy_enabled_with_cadence_set_to_14d.yml create mode 100644 config/metrics/counts_all/20210216181035_projects_with_expiration_policy_enabled_with_cadence_set_to_1month.yml create mode 100644 config/metrics/counts_all/20210216181037_projects_with_expiration_policy_enabled_with_cadence_set_to_3month.yml create mode 100644 config/metrics/counts_all/20210216181038_projects_with_expiration_policy_enabled_with_older_than_set_to_7d.yml create mode 100644 config/metrics/counts_all/20210216181040_projects_with_expiration_policy_enabled_with_older_than_set_to_14d.yml create mode 100644 config/metrics/counts_all/20210216181042_projects_with_expiration_policy_enabled_with_older_than_set_to_30d.yml create mode 100644 config/metrics/counts_all/20210216181044_projects_with_expiration_policy_enabled_with_older_than_set_to_90d.yml create mode 100644 config/metrics/counts_all/20210216181048_projects_with_expiration_policy_enabled_with_older_than_unset.yml create mode 100644 config/metrics/counts_all/20210216181051_vendor.yml create mode 100644 config/metrics/counts_all/20210216181055_projects_with_packages.yml create mode 100644 config/metrics/counts_all/20210216181102_issues.yml create mode 100644 config/metrics/counts_all/20210216181104_label_lists.yml create mode 100644 config/metrics/counts_all/20210216181106_milestone_lists.yml create mode 100644 config/metrics/counts_all/20210216181108_milestones.yml create mode 100644 config/metrics/counts_all/20210216181109_uploads.yml create mode 100644 config/metrics/counts_all/20210216181111_labels.yml create mode 100644 config/metrics/counts_all/20210216181113_notes.yml create mode 100644 config/metrics/counts_all/20210216181115_issues.yml create mode 100644 config/metrics/counts_all/20210216181117_notes.yml create mode 100644 config/metrics/counts_all/20210216181119_projects.yml create mode 100644 config/metrics/counts_all/20210216181121_todos.yml create mode 100644 config/metrics/counts_all/20210216181122_service_desk_enabled_projects.yml create mode 100644 config/metrics/counts_all/20210216181124_service_desk_issues.yml create mode 100644 config/metrics/counts_all/20210216181126_projects_jira_active.yml create mode 100644 config/metrics/counts_all/20210216181128_projects_jira_dvcs_cloud_active.yml create mode 100644 config/metrics/counts_all/20210216181130_projects_jira_dvcs_server_active.yml create mode 100644 config/metrics/counts_all/20210216181134_epics.yml create mode 100644 config/metrics/counts_all/20210216181135_label_lists.yml create mode 100644 config/metrics/counts_all/20210216181137_milestone_lists.yml create mode 100644 config/metrics/counts_all/20210216181205_confidential_epics.yml create mode 100644 config/metrics/counts_all/20210216181206_epics.yml create mode 100644 config/metrics/counts_all/20210216181210_issues_with_health_status.yml create mode 100644 config/metrics/counts_all/20210216181249_feature_flags.yml create mode 100644 config/metrics/counts_all/20210216181252_boards.yml create mode 100644 config/metrics/counts_all/20210216181254_projects.yml create mode 100644 config/metrics/counts_all/20210216181256_todos.yml create mode 100644 config/metrics/counts_all/20210216181258_jira_imports_total_imported_count.yml create mode 100644 config/metrics/counts_all/20210216181259_jira_imports_projects_count.yml create mode 100644 config/metrics/counts_all/20210216181301_jira_imports_total_imported_issues_count.yml create mode 100644 config/metrics/counts_all/20210216181908_deploy_keys.yml create mode 100644 config/metrics/counts_all/20210216181911_successful_deployments.yml create mode 100644 config/metrics/counts_all/20210216181912_failed_deployments.yml create mode 100644 config/metrics/counts_all/20210216181914_environments.yml create mode 100644 config/metrics/counts_all/20210216181916_in_review_folder.yml create mode 100644 config/metrics/counts_all/20210216181918_releases.yml create mode 100644 config/metrics/counts_all/20210216181920_projects_mirrored_with_pipelines_enabled.yml create mode 100644 config/metrics/counts_all/20210216181926_deployments.yml create mode 100644 config/metrics/counts_all/20210216181928_failed_deployments.yml create mode 100644 config/metrics/counts_all/20210216181930_releases.yml create mode 100644 config/metrics/counts_all/20210216181932_successful_deployments.yml create mode 100644 config/metrics/counts_all/20210216181934_projects_mirrored_with_pipelines_enabled.yml create mode 100644 config/metrics/counts_all/20210216181946_pages_domains.yml create mode 100644 config/metrics/counts_all/20210216181949_clusters_applications_runner.yml create mode 100644 config/metrics/counts_all/20210216181954_user_unique_users_all_secure_scanners.yml create mode 100644 config/metrics/counts_all/20210216181959_projects_with_repositories_enabled.yml create mode 100644 config/metrics/counts_all/20210216182001_protected_branches.yml create mode 100644 config/metrics/counts_all/20210216182002_remote_mirrors.yml create mode 100644 config/metrics/counts_all/20210216182004_commit_comment.yml create mode 100644 config/metrics/counts_all/20210216182006_source_code_pushes.yml create mode 100644 config/metrics/counts_all/20210216182008_template_repositories.yml create mode 100644 config/metrics/counts_all/20210216182010_deploy_keys.yml create mode 100644 config/metrics/counts_all/20210216182012_keys.yml create mode 100644 config/metrics/counts_all/20210216182014_projects_with_disable_overriding_approvers_per_merge_request.yml create mode 100644 config/metrics/counts_all/20210216182015_projects_without_disable_overriding_approvers_per_merge_request.yml create mode 100644 config/metrics/counts_all/20210216182017_remote_mirrors.yml create mode 100644 config/metrics/counts_all/20210216182019_projects_enforcing_code_owner_approval.yml create mode 100644 config/metrics/counts_all/20210216182021_projects_with_sectional_code_owner_rules.yml create mode 100644 config/metrics/counts_all/20210216182023_projects_with_repositories_enabled.yml create mode 100644 config/metrics/counts_all/20210216182025_protected_branches.yml create mode 100644 config/metrics/counts_all/20210216182027_total_number_of_path_locks.yml create mode 100644 config/metrics/counts_all/20210216182028_total_number_of_locked_files.yml create mode 100644 config/metrics/counts_all/20210216182112_sast_jobs.yml create mode 100644 config/metrics/counts_all/20210216182114_secret_detection_jobs.yml create mode 100644 config/metrics/counts_all/20210216182116_user_sast_jobs.yml create mode 100644 config/metrics/counts_all/20210216182118_user_secret_detection_jobs.yml create mode 100644 config/metrics/counts_all/20210216182203_user_preferences_group_overview_details.yml create mode 100644 config/metrics/counts_all/20210216182205_user_preferences_group_overview_security_dashboard.yml create mode 100644 config/metrics/counts_all/20210216182207_user_preferences_group_overview_security_dashboard.yml create mode 100644 config/metrics/counts_all/20210216182454_protected_branches_except_default.yml create mode 100644 config/metrics/counts_all/20210216182547_projects_datadog_active.yml create mode 100644 config/metrics/counts_all/20210216182549_groups_datadog_active.yml create mode 100644 config/metrics/counts_all/20210216182551_templates_datadog_active.yml create mode 100644 config/metrics/counts_all/20210216182553_instances_datadog_active.yml create mode 100644 config/metrics/counts_all/20210216182555_projects_inheriting_datadog_active.yml create mode 100644 config/metrics/counts_all/20210216182557_groups_inheriting_datadog_active.yml create mode 100644 config/metrics/counts_all/20210216182614_projects_ewm_active.yml create mode 100644 config/metrics/counts_all/20210216182616_groups_ewm_active.yml create mode 100644 config/metrics/counts_all/20210216182618_templates_ewm_active.yml create mode 100644 config/metrics/counts_all/20210216182620_instances_ewm_active.yml create mode 100644 config/metrics/counts_all/20210216182622_projects_inheriting_ewm_active.yml create mode 100644 config/metrics/counts_all/20210216182623_groups_inheriting_ewm_active.yml create mode 100644 config/metrics/counts_all/20210216182722_projects_mock_ci_active.yml create mode 100644 config/metrics/counts_all/20210216182724_groups_mock_ci_active.yml create mode 100644 config/metrics/counts_all/20210216182726_templates_mock_ci_active.yml create mode 100644 config/metrics/counts_all/20210216182728_instances_mock_ci_active.yml create mode 100644 config/metrics/counts_all/20210216182730_projects_inheriting_mock_ci_active.yml create mode 100644 config/metrics/counts_all/20210216182732_groups_inheriting_mock_ci_active.yml create mode 100644 config/metrics/counts_all/20210216182734_projects_mock_monitoring_active.yml create mode 100644 config/metrics/counts_all/20210216182736_groups_mock_monitoring_active.yml create mode 100644 config/metrics/counts_all/20210216182738_templates_mock_monitoring_active.yml create mode 100644 config/metrics/counts_all/20210216182739_instances_mock_monitoring_active.yml create mode 100644 config/metrics/counts_all/20210216182741_projects_inheriting_mock_monitoring_active.yml create mode 100644 config/metrics/counts_all/20210216182743_groups_inheriting_mock_monitoring_active.yml create mode 100644 config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml create mode 100644 config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml create mode 100644 config/metrics/counts_all/20210216182907_package_events_i_package_container_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182909_package_events_i_package_container_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182911_package_events_i_package_container_push_package.yml create mode 100644 config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182917_package_events_i_package_debian_push_package.yml create mode 100644 config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml create mode 100644 config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml create mode 100644 config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml create mode 100644 config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml create mode 100644 config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml create mode 100644 config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml create mode 100644 config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml create mode 100644 config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml create mode 100644 config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml create mode 100644 config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml create mode 100644 config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml create mode 100644 config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml create mode 100644 config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml create mode 100644 config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml create mode 100644 config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml create mode 100644 config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml create mode 100644 config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml create mode 100644 config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml create mode 100644 config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml create mode 100644 config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml create mode 100644 config/metrics/counts_all/20210216183017_package_events_i_package_tag_delete_package.yml create mode 100644 config/metrics/counts_all/20210216183019_package_events_i_package_tag_pull_package.yml create mode 100644 config/metrics/counts_all/20210216183021_package_events_i_package_tag_push_package.yml create mode 100644 config/metrics/counts_all/20210216183023_wiki_pages_view.yml create mode 100644 config/metrics/counts_all/20210216183146_coverage_fuzzing_jobs.yml create mode 100644 config/metrics/counts_all/20210216183149_dast_on_demand_pipelines.yml create mode 100644 config/metrics/counts_all/20210216183241_filesystems.yml create mode 100644 config/metrics/counts_all/20210216183248_pg_system_id.yml create mode 100644 config/metrics/counts_all/20210216183339_merge_requests_with_overridden_project_rules.yml create mode 100644 config/metrics/counts_all/20210216183344_users_using_path_locks.yml create mode 100644 config/metrics/counts_all/20210216183346_users_using_lfs_locks.yml create mode 100644 config/metrics/counts_all/20210216183352_approval_project_rules_with_more_approvers_than_required.yml create mode 100644 config/metrics/counts_all/20210216183354_approval_project_rules_with_less_approvers_than_required.yml create mode 100644 config/metrics/counts_all/20210216183355_approval_project_rules_with_exact_required_approvers.yml create mode 100644 config/metrics/counts_all/20210216183400_omniauth_providers.yml create mode 100644 config/metrics/counts_all/20210216183402_two-factor.yml create mode 100644 config/metrics/counts_all/20210216183404_two-factor-via-u2f-device.yml create mode 100644 config/metrics/counts_all/20210216183406_two-factor-via-webauthn-device.yml create mode 100644 config/metrics/counts_all/20210216183408_standard.yml create mode 100644 config/metrics/counts_all/20210216183410_google_oauth2.yml create mode 100644 config/metrics/counts_all/20210216183514_user_coverage_fuzzing_jobs.yml create mode 100644 config/metrics/counts_all/20210216183904_g_compliance_dashboard.yml create mode 100644 config/metrics/counts_all/20210216183906_g_compliance_audit_events.yml create mode 100644 config/metrics/counts_all/20210216183908_i_compliance_audit_events.yml create mode 100644 config/metrics/counts_all/20210216183910_i_compliance_credential_inventory.yml create mode 100644 config/metrics/counts_all/20210216183912_a_compliance_audit_events_api.yml create mode 100644 config/metrics/counts_all/20210216183914_compliance_unique_visits_for_any_target.yml create mode 100644 config/metrics/license/20210216175601_version.yml create mode 100644 config/metrics/license/20210216175602_installation_type.yml create mode 100644 config/metrics/license/20210216175604_edition.yml create mode 100644 config/metrics/license/20210216175609_version.yml create mode 100644 config/metrics/license/20210216181053_version.yml create mode 100644 config/metrics/license/20210216183237_version.yml delete mode 100644 config/metrics/settings/20210204124924_elasticsearch_enabled.yml create mode 100644 config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml create mode 100644 config/metrics/settings/20210216175606_ldap_encrypted_secrets_enabled.yml create mode 100644 config/metrics/settings/20210216180314_gitpod_enabled.yml create mode 100644 config/metrics/settings/20210216180836_enabled.yml create mode 100644 config/metrics/settings/20210216180838_enabled.yml create mode 100644 config/metrics/settings/20210216180840_direct_upload.yml create mode 100644 config/metrics/settings/20210216180841_background_upload.yml create mode 100644 config/metrics/settings/20210216180845_enabled.yml create mode 100644 config/metrics/settings/20210216180847_enabled.yml create mode 100644 config/metrics/settings/20210216180849_direct_upload.yml create mode 100644 config/metrics/settings/20210216180851_background_upload.yml create mode 100644 config/metrics/settings/20210216180854_enabled.yml create mode 100644 config/metrics/settings/20210216180856_enabled.yml create mode 100644 config/metrics/settings/20210216180858_direct_upload.yml create mode 100644 config/metrics/settings/20210216180900_background_upload.yml create mode 100644 config/metrics/settings/20210216180905_enabled.yml create mode 100644 config/metrics/settings/20210216180907_direct_upload.yml create mode 100644 config/metrics/settings/20210216180909_background_upload.yml create mode 100644 config/metrics/settings/20210216180913_enabled.yml create mode 100644 config/metrics/settings/20210216180915_enabled.yml create mode 100644 config/metrics/settings/20210216180916_direct_upload.yml create mode 100644 config/metrics/settings/20210216180918_background_upload.yml create mode 100644 config/metrics/settings/20210225045628_operating_system.yml delete mode 100644 db/fixtures/development/29_instance_statistics.rb create mode 100644 db/fixtures/development/29_usage_trends.rb create mode 100644 db/migrate/20200816133024_add_cve_id_request_project_setting.rb create mode 100644 db/migrate/20201209163113_recreate_index_issue_email_participants_on_issue_id_and_email.rb create mode 100644 db/migrate/20201228110136_create_iterations_cadence.rb create mode 100644 db/migrate/20201228110238_add_iterations_cadence_to_sprints.rb create mode 100644 db/migrate/20210106191305_rename_indexes_on_git_lab_com.rb create mode 100644 db/migrate/20210127152613_add_iterations_cadence_date_range_constraint.rb create mode 100644 db/migrate/20210127202613_remove_iteration_group_date_range_constraint.rb create mode 100644 db/migrate/20210128172149_create_background_migration_tracking_tables.rb create mode 100644 db/migrate/20210201034649_add_active_periods_to_on_call_rotations.rb create mode 100644 db/migrate/20210205134213_add_creator_id_to_custom_emoji.rb create mode 100644 db/migrate/20210208103243_add_issue_created_at_to_onboarding_progress.rb create mode 100644 db/migrate/20210208200914_add_ends_at_to_oncall_rotations.rb create mode 100644 db/migrate/20210209110019_create_external_approval_rules.rb create mode 100644 db/migrate/20210209232508_add_markdown_surround_selection_to_user_preferences.rb create mode 100644 db/migrate/20210212153934_make_the_geo_oauth_application_trusted_by_default.rb create mode 100644 db/migrate/20210212163231_add_merge_when_pipeline_succeeds_to_notification_settings.rb create mode 100644 db/migrate/20210214201118_add_delayed_project_removal_to_namespace_settings.rb create mode 100644 db/migrate/20210214205155_add_index_to_namespaces_delayed_project_removal.rb create mode 100644 db/migrate/20210216122140_add_in_product_marketing_emails_enabled_setting.rb create mode 100644 db/migrate/20210216193620_add_description_to_cluster_token.rb create mode 100644 db/migrate/20210216223335_remove_index_on_issues_where_service_desk_reply_to_is_not_null.rb create mode 100644 db/migrate/20210217101901_create_epic_list_user_preferences.rb create mode 100644 db/migrate/20210218040814_add_environment_scope_to_group_variables.rb create mode 100644 db/migrate/20210218142626_change_finding_fingerprint_enum.rb create mode 100644 db/migrate/20210218144056_add_sprints_start_date_not_null_check_constraint.rb create mode 100644 db/migrate/20210218144656_add_sprints_due_date_not_null_check_constraint.rb create mode 100644 db/migrate/20210219100137_add_creator_foreign_key_to_custom_emoji.rb create mode 100644 db/migrate/20210219111040_add_epic_issue_composite_index.rb create mode 100644 db/migrate/20210222030537_add_is_removed_to_oncall_participant.rb create mode 100644 db/migrate/20210222042745_add_is_removed_index_to_oncall_participant.rb create mode 100644 db/migrate/20210222070356_add_storage_size_to_namespace_statistics.rb create mode 100644 db/migrate/20210222070413_add_wiki_size_to_namespace_statistics.rb create mode 100644 db/migrate/20210222085529_add_epic_board_user_preference_user_fk.rb create mode 100644 db/migrate/20210222085551_add_epic_board_user_preference_epic_list_fk.rb create mode 100644 db/migrate/20210222105120_add_container_registry_access_level.rb create mode 100644 db/migrate/20210223053451_add_branch_name_to_dast_profile.rb create mode 100644 db/migrate/20210223132934_add_foreign_key_to_external_approval_rules.rb create mode 100644 db/migrate/20210223133116_add_foreign_key_to_external_approval_rules_protected_branches.rb create mode 100644 db/migrate/20210224132547_add_null_constraint_to_terraform_state_name.rb create mode 100644 db/migrate/20210224133337_add_name_field_to_cluster_agent_token.rb create mode 100644 db/migrate/20210225090801_create_dora_daily_metrics.rb create mode 100644 db/migrate/20210225135533_limit_cluster_token_size.rb create mode 100644 db/migrate/20210225153522_add_allow_force_push_to_protected_branches.rb create mode 100644 db/migrate/20210301150451_add_tier_to_environments.rb create mode 100644 db/migrate/20210302103851_add_deployed_deployment_id_index_to_project_pages_metadata.rb create mode 100644 db/migrate/20210302155904_remove_index_for_security_orchestration_policy.rb create mode 100644 db/migrate/20210302160544_add_index_to_security_orchestration_policy.rb create mode 100644 db/migrate/20210302212623_rename_vuln_fingerprints_indexes.rb create mode 100644 db/migrate/20210303053341_add_last_edited_at_and_last_edited_by_id_to_notes.rb create mode 100644 db/migrate/20210303091651_add_index_to_environments_tier.rb create mode 100644 db/migrate/20210303165201_add_index_for_succeeded_deployments.rb create mode 100644 db/migrate/20210303165301_add_not_null_constraint_to_cluster_token_name.rb create mode 100644 db/migrate/20210305002016_update_terraform_states_locked_by_user_id_foreign_key.rb create mode 100644 db/migrate/20210305013509_add_text_limit_to_group_ci_variables_environment_scope.rb create mode 100644 db/migrate/20210306121300_partition_web_hook_logs.rb create mode 100644 db/migrate/20210308125742_add_info_column_into_security_scans_table.rb create mode 100644 db/migrate/20210308190413_change_batched_background_migrations_batch_class_name_default.rb create mode 100644 db/migrate/20210309181019_add_last_used_at_to_cluster_agent_token.rb delete mode 100644 db/post_migrate/20190402224749_schedule_merge_request_assignees_migration_progress_check.rb create mode 100644 db/post_migrate/20201112130715_schedule_recalculate_uuid_on_vulnerabilities_occurrences.rb create mode 100644 db/post_migrate/20201231133921_schedule_set_default_iteration_cadences.rb create mode 100644 db/post_migrate/20210111075206_schedule_uuid_population_for_security_findings2.rb create mode 100644 db/post_migrate/20210210221006_cleanup_projects_with_bad_has_external_issue_tracker_data.rb create mode 100644 db/post_migrate/20210215095328_migrate_delayed_project_removal_from_namespaces_to_namespace_settings.rb create mode 100644 db/post_migrate/20210215144909_migrate_usage_trends_sidekiq_queue.rb create mode 100644 db/post_migrate/20210217100728_move_create_release_evidence_queue_out_of_cronjob_namespace.rb create mode 100644 db/post_migrate/20210218105431_remove_deprecated_ci_builds_columns.rb create mode 100644 db/post_migrate/20210218110552_remove_deprecated_ci_runner_column.rb create mode 100644 db/post_migrate/20210219102900_reschedule_set_default_iteration_cadences.rb create mode 100644 db/post_migrate/20210222185538_remove_backup_labels_foreign_keys.rb create mode 100644 db/post_migrate/20210222192144_remove_backup_labels_table.rb create mode 100644 db/post_migrate/20210224150506_reschedule_artifact_expiry_backfill.rb create mode 100644 db/post_migrate/20210302074524_backfill_namespace_statistics_with_wiki_size.rb create mode 100644 db/post_migrate/20210303064112_add_not_null_constraints_to_gitlab_subscriptions_namespace_id.rb create mode 100644 db/post_migrate/20210303064142_cleanup_gitlab_subscriptions_with_null_namespace_id.rb create mode 100644 db/post_migrate/20210303165302_cleanup_cluster_tokens_with_null_name.rb create mode 100644 db/post_migrate/20210304133508_schedule_remove_duplicate_vulnerabilities_findings2.rb create mode 100644 db/post_migrate/20210306121310_backfill_partitioned_web_hook_logs.rb delete mode 100644 db/schema_migrations/20190402224749 create mode 100644 db/schema_migrations/20200816133024 create mode 100644 db/schema_migrations/20201112130715 create mode 100644 db/schema_migrations/20201209163113 create mode 100644 db/schema_migrations/20201228110136 create mode 100644 db/schema_migrations/20201228110238 create mode 100644 db/schema_migrations/20201231133921 create mode 100644 db/schema_migrations/20210106191305 create mode 100644 db/schema_migrations/20210111075206 create mode 100644 db/schema_migrations/20210127152613 create mode 100644 db/schema_migrations/20210127202613 create mode 100644 db/schema_migrations/20210128172149 create mode 100644 db/schema_migrations/20210201034649 create mode 100644 db/schema_migrations/20210205134213 create mode 100644 db/schema_migrations/20210208103243 create mode 100644 db/schema_migrations/20210208200914 create mode 100644 db/schema_migrations/20210209110019 create mode 100644 db/schema_migrations/20210209232508 create mode 100644 db/schema_migrations/20210210221006 create mode 100644 db/schema_migrations/20210212153934 create mode 100644 db/schema_migrations/20210212163231 create mode 100644 db/schema_migrations/20210214201118 create mode 100644 db/schema_migrations/20210214205155 create mode 100644 db/schema_migrations/20210215095328 create mode 100644 db/schema_migrations/20210215144909 create mode 100644 db/schema_migrations/20210216122140 create mode 100644 db/schema_migrations/20210216193620 create mode 100644 db/schema_migrations/20210216223335 create mode 100644 db/schema_migrations/20210217100728 create mode 100644 db/schema_migrations/20210217101901 create mode 100644 db/schema_migrations/20210218040814 create mode 100644 db/schema_migrations/20210218105431 create mode 100644 db/schema_migrations/20210218110552 create mode 100644 db/schema_migrations/20210218142626 create mode 100644 db/schema_migrations/20210218144056 create mode 100644 db/schema_migrations/20210218144656 create mode 100644 db/schema_migrations/20210219100137 create mode 100644 db/schema_migrations/20210219102900 create mode 100644 db/schema_migrations/20210219111040 create mode 100644 db/schema_migrations/20210222030537 create mode 100644 db/schema_migrations/20210222042745 create mode 100644 db/schema_migrations/20210222070356 create mode 100644 db/schema_migrations/20210222070413 create mode 100644 db/schema_migrations/20210222085529 create mode 100644 db/schema_migrations/20210222085551 create mode 100644 db/schema_migrations/20210222105120 create mode 100644 db/schema_migrations/20210222185538 create mode 100644 db/schema_migrations/20210222192144 create mode 100644 db/schema_migrations/20210223053451 create mode 100644 db/schema_migrations/20210223132934 create mode 100644 db/schema_migrations/20210223133116 create mode 100644 db/schema_migrations/20210224132547 create mode 100644 db/schema_migrations/20210224133337 create mode 100644 db/schema_migrations/20210224150506 create mode 100644 db/schema_migrations/20210225090801 create mode 100644 db/schema_migrations/20210225135533 create mode 100644 db/schema_migrations/20210225153522 create mode 100644 db/schema_migrations/20210301150451 create mode 100644 db/schema_migrations/20210302074524 create mode 100644 db/schema_migrations/20210302103851 create mode 100644 db/schema_migrations/20210302155904 create mode 100644 db/schema_migrations/20210302160544 create mode 100644 db/schema_migrations/20210302212623 create mode 100644 db/schema_migrations/20210303053341 create mode 100644 db/schema_migrations/20210303064112 create mode 100644 db/schema_migrations/20210303064142 create mode 100644 db/schema_migrations/20210303091651 create mode 100644 db/schema_migrations/20210303165201 create mode 100644 db/schema_migrations/20210303165301 create mode 100644 db/schema_migrations/20210303165302 create mode 100644 db/schema_migrations/20210304133508 create mode 100644 db/schema_migrations/20210305002016 create mode 100644 db/schema_migrations/20210305013509 create mode 100644 db/schema_migrations/20210306121300 create mode 100644 db/schema_migrations/20210306121310 create mode 100644 db/schema_migrations/20210308125742 create mode 100644 db/schema_migrations/20210308190413 create mode 100644 db/schema_migrations/20210309181019 create mode 100644 doc/.vale/gitlab/DefaultBranch.yml create mode 100644 doc/.vale/gitlab/RelativeLinksDoubleSlashes.yml delete mode 100644 doc/administration/auth/img/okta_admin_panel.png create mode 100644 doc/administration/gitaly/configure_gitaly.md create mode 100644 doc/administration/gitaly/img/gitaly_network_13_9.png delete mode 100644 doc/api/graphql/reference/gitlab_schema.graphql delete mode 100644 doc/api/graphql/reference/gitlab_schema.json create mode 100644 doc/api/plan_limits.md create mode 100644 doc/architecture/blueprints/container_registry_metadata_database/index.md create mode 100644 doc/ci/cloud_deployment/ecs/img/container-name.png create mode 100644 doc/ci/cloud_deployment/ecs/img/container-port-mapping.png create mode 100644 doc/ci/cloud_deployment/ecs/img/ecs-launch-status.png create mode 100644 doc/ci/cloud_deployment/ecs/img/ecs-policy.png create mode 100644 doc/ci/cloud_deployment/ecs/img/ecs-task-definitions.png create mode 100644 doc/ci/cloud_deployment/ecs/img/initial-pipeline.png create mode 100644 doc/ci/cloud_deployment/ecs/img/rails-template.png create mode 100644 doc/ci/cloud_deployment/ecs/img/registry.png create mode 100644 doc/ci/cloud_deployment/ecs/img/service-parameter.png create mode 100644 doc/ci/cloud_deployment/ecs/img/service-running.png create mode 100644 doc/ci/cloud_deployment/ecs/img/view-running-app-2.png create mode 100644 doc/ci/cloud_deployment/ecs/img/view-running-app.png create mode 100644 doc/ci/cloud_deployment/ecs/quick_start_guide.md create mode 100644 doc/ci/environments/img/deployments_list.png create mode 100644 doc/ci/environments/img/environment_auto_stop_v13_10.png create mode 100644 doc/ci/environments/img/environments_dynamic_groups_v13_10.png create mode 100644 doc/ci/environments/img/environments_list.png create mode 100644 doc/ci/environments/img/environments_terminal_button_on_index_v13_10.png create mode 100644 doc/ci/environments/img/environments_terminal_button_on_show_v13_10.png delete mode 100644 doc/ci/img/environment_auto_stop_v12_8.png create mode 100644 doc/ci/img/environments_available_13_10.png delete mode 100644 doc/ci/img/environments_available_13_7.png delete mode 100644 doc/ci/img/environments_dynamic_groups.png delete mode 100644 doc/ci/img/environments_manual_action_deployments.png delete mode 100644 doc/ci/img/environments_manual_action_environments.png delete mode 100644 doc/ci/img/environments_manual_action_jobs.png delete mode 100644 doc/ci/img/environments_manual_action_pipelines.png delete mode 100644 doc/ci/img/environments_manual_action_single_pipeline.png delete mode 100644 doc/ci/img/environments_terminal_button_on_index.png delete mode 100644 doc/ci/img/environments_terminal_button_on_show.png delete mode 100644 doc/ci/pipelines/img/pipelines_settings_test_coverage.png delete mode 100644 doc/ci/test_cases/img/test_case_list_v13_6.png create mode 100644 doc/ci/test_cases/img/test_case_show_v13_10.png delete mode 100644 doc/ci/test_cases/img/test_case_show_v13_6.png create mode 100644 doc/development/appsec/index.md delete mode 100644 doc/development/documentation/styleguide.md create mode 100644 doc/development/experiment_guide/experimentation.md create mode 100644 doc/development/experiment_guide/gitlab_experiment.md create mode 100644 doc/development/fe_guide/widgets.md delete mode 100644 doc/development/prometheus.md create mode 100644 doc/development/usage_ping/index.md create mode 100644 doc/development/usage_ping/product_intelligence_review.md delete mode 100644 doc/integration/img/oauth_provider_admin_application.png create mode 100644 doc/security/token_overview.md delete mode 100644 doc/topics/autodevops/img/alexj_autodevops_min_v13_8.png delete mode 100644 doc/topics/autodevops/img/kai_autodevops_min_v13_8.png create mode 100644 doc/topics/autodevops/troubleshooting.md create mode 100644 doc/topics/git/cherry_picking.md create mode 100644 doc/topics/git/tags.md delete mode 100644 doc/university/training/gitlab_flow/feature_branches.png delete mode 100644 doc/user/admin_area/analytics/img/cohorts_v13_9.png delete mode 100644 doc/user/admin_area/analytics/instance_statistics.md create mode 100644 doc/user/admin_area/img/cohorts_v13_9.png create mode 100644 doc/user/admin_area/img/credentials_inventory_gpg_keys_v13_10.png create mode 100644 doc/user/admin_area/img/credentials_inventory_v13_10.png delete mode 100644 doc/user/admin_area/img/credentials_inventory_v13_4.png create mode 100644 doc/user/admin_area/user_cohorts.md create mode 100644 doc/user/analytics/img/mr_mean_time_to_merge_metric_v13_9.png create mode 100644 doc/user/application_security/api_fuzzing/img/api_fuzzing_postman_collection_edit_variable.png create mode 100644 doc/user/application_security/api_fuzzing/img/api_fuzzing_postman_environment_edit_variable.png create mode 100644 doc/user/application_security/api_fuzzing/img/api_fuzzing_postman_request_edit.png delete mode 100644 doc/user/application_security/dast/img/dast_single_v13_0.png delete mode 100644 doc/user/application_security/img/vulnerability_page_merge_request_button_v13_1.png delete mode 100644 doc/user/application_security/img/vulnerability_related_issues_add_button_v13_2.png delete mode 100644 doc/user/application_security/img/vulnerability_related_issues_remove_v13_2.gif create mode 100644 doc/user/application_security/security_dashboard/img/pipeline_security_dashboard_v13_10.png delete mode 100644 doc/user/application_security/vulnerability_report/img/project_security_dashboard_dismissal_v13_9.png create mode 100644 doc/user/application_security/vulnerability_report/img/project_security_dashboard_status_change_v13_9.png delete mode 100644 doc/user/application_security/vulnerability_report/img/vulnerability_details_create_issue_v13_7.png delete mode 100644 doc/user/group/img/access_requests_management.png delete mode 100644 doc/user/group/img/add_new_members_v13_7.png delete mode 100644 doc/user/group/img/create_new_group_info.png delete mode 100644 doc/user/group/img/create_new_project_from_group_v13_6.png delete mode 100644 doc/user/group/img/group_activity_analytics_v12_10.png create mode 100644 doc/user/group/img/group_activity_analytics_v13_10.png delete mode 100644 doc/user/group/img/group_file_template_dropdown.png delete mode 100644 doc/user/group/img/group_members_filter_2fa_disabled_13_7.png delete mode 100644 doc/user/group/img/group_members_filter_2fa_enabled_13_7.png delete mode 100644 doc/user/group/img/group_members_filter_direct_13_7.png delete mode 100644 doc/user/group/img/group_members_filter_inherited_13_7.png delete mode 100644 doc/user/group/img/group_members_search_13_7.png delete mode 100644 doc/user/group/img/group_members_sort_13_7.png delete mode 100644 doc/user/group/img/group_settings.png delete mode 100644 doc/user/group/img/groups.png delete mode 100644 doc/user/group/img/ldap_sync_cn_v13_1.png delete mode 100644 doc/user/group/img/ldap_sync_filter_v13_1.png delete mode 100644 doc/user/group/img/manual_permissions_v13_7.png delete mode 100644 doc/user/group/img/member_lock.png delete mode 100644 doc/user/group/img/new_group_from_groups.png delete mode 100644 doc/user/group/img/new_group_from_other_pages.png delete mode 100644 doc/user/group/img/request_access_button.png delete mode 100644 doc/user/group/img/select_group_dropdown.png create mode 100644 doc/user/group/img/select_group_dropdown_13_10.png delete mode 100644 doc/user/group/img/share_with_group_lock.png delete mode 100644 doc/user/group/img/withdraw_access_request_button.png delete mode 100644 doc/user/img/gitlab_snippet_v13_0.png delete mode 100644 doc/user/img/gitlab_snippet_v13_5.png delete mode 100644 doc/user/img/new_personal_snippet_from_project_v12_10.png delete mode 100644 doc/user/img/new_personal_snippet_v12_10.png delete mode 100644 doc/user/packages/workflows/monorepo.md create mode 100644 doc/user/profile/img/busy_indicator_note_header_v13_9.png create mode 100644 doc/user/profile/img/busy_indicator_notes_v13_9.png create mode 100644 doc/user/profile/img/busy_indicator_profile_page_v13_6.png create mode 100644 doc/user/profile/img/busy_indicator_settings_menu_v13_6.png create mode 100644 doc/user/profile/img/busy_indicator_sidebar_collapsed_v13_9.png create mode 100644 doc/user/profile/img/busy_indicator_sidebar_v13_9.png create mode 100644 doc/user/profile/img/busy_indicator_user_popovers_v13_6.png delete mode 100644 doc/user/project/img/autocomplete_characters_example1_v12_0.png delete mode 100644 doc/user/project/img/autocomplete_characters_example2_v12_0.png delete mode 100644 doc/user/project/img/code_owners_approval_new_protected_branch_v12_4.png create mode 100644 doc/user/project/img/code_owners_approval_new_protected_branch_v13_10.png delete mode 100644 doc/user/project/img/code_owners_approval_protected_branch_v12_4.png create mode 100644 doc/user/project/img/code_owners_approval_protected_branch_v13_10.png delete mode 100644 doc/user/project/img/issue_boards_remove_issue_v13_6.png delete mode 100644 doc/user/project/integrations/img/mattermost_config_help.png delete mode 100644 doc/user/project/integrations/img/mattermost_console_integrations.png delete mode 100644 doc/user/project/integrations/img/mattermost_goto_console.png delete mode 100644 doc/user/project/integrations/img/mattermost_slash_command_configuration.png delete mode 100644 doc/user/project/integrations/img/mattermost_slash_command_token.png delete mode 100644 doc/user/project/integrations/img/mattermost_team_integrations.png delete mode 100644 doc/user/project/members/img/project_members_filter_v12_6.png create mode 100644 doc/user/project/merge_requests/drafts.md delete mode 100644 doc/user/project/merge_requests/img/comment-on-any-diff-line.png create mode 100644 doc/user/project/merge_requests/img/comment-on-any-diff-line_v13_10.png create mode 100644 doc/user/project/merge_requests/img/draft_blocked_merge_button_v13_10.png delete mode 100644 doc/user/project/merge_requests/img/draft_blocked_merge_button_v13_2.png create mode 100644 doc/user/project/merge_requests/img/filter_draft_merge_requests_v13_10.png delete mode 100644 doc/user/project/merge_requests/img/filter_wip_merge_requests.png delete mode 100644 doc/user/project/merge_requests/img/multiline-comment-highlighted.png delete mode 100644 doc/user/project/merge_requests/img/scoped_to_protected_branch_v12_8.png create mode 100644 doc/user/project/merge_requests/img/scoped_to_protected_branch_v13_10.png create mode 100644 doc/user/project/merge_requests/img/update_approval_rule_v13_10.png delete mode 100644 doc/user/project/merge_requests/img/update_approval_rule_v13_4.png delete mode 100644 doc/user/project/milestones/burndown_charts.md delete mode 100644 doc/user/project/repository/branches/img/branch_filter_search_box.png create mode 100644 doc/user/project/repository/branches/img/branch_filter_search_box_v13_10.png delete mode 100644 doc/user/project/repository/branches/img/compare_branches.png create mode 100644 doc/user/project/repository/branches/img/compare_branches_v13_10.png create mode 100644 doc/user/project/repository/branches/img/repository_filter_search_box_v13_10.png delete mode 100644 doc/user/project/web_ide/img/solarized_light_theme_v13_0.png delete mode 100644 doc/user/search/advanced_global_search.md create mode 100644 doc/user/search/advanced_search.md delete mode 100644 doc/user/search/advanced_search_syntax.md delete mode 100644 doc/user/search/img/advanced_global_search.png create mode 100644 doc/user/search/img/advanced_search_v13.10.png create mode 100644 lib/api/admin/plan_limits.rb create mode 100644 lib/api/entities/plan_limit.rb delete mode 100644 lib/api/entities/project_repository_storage_move.rb create mode 100644 lib/api/entities/projects/repository_storage_move.rb create mode 100644 lib/api/entities/public_group_details.rb create mode 100644 lib/api/entities/snippets/repository_storage_move.rb delete mode 100644 lib/bulk_imports/common/loaders/entity_loader.rb delete mode 100644 lib/bulk_imports/common/transformers/award_emoji_transformer.rb create mode 100644 lib/bulk_imports/common/transformers/user_reference_transformer.rb create mode 100644 lib/bulk_imports/groups/graphql/get_milestones_query.rb delete mode 100644 lib/bulk_imports/groups/loaders/labels_loader.rb delete mode 100644 lib/bulk_imports/groups/loaders/members_loader.rb create mode 100644 lib/bulk_imports/groups/pipelines/milestones_pipeline.rb create mode 100644 lib/error_tracking/sentry_client.rb create mode 100644 lib/error_tracking/sentry_client/api_urls.rb create mode 100644 lib/error_tracking/sentry_client/event.rb create mode 100644 lib/error_tracking/sentry_client/issue.rb create mode 100644 lib/error_tracking/sentry_client/issue_link.rb create mode 100644 lib/error_tracking/sentry_client/pagination_parser.rb create mode 100644 lib/error_tracking/sentry_client/projects.rb create mode 100644 lib/error_tracking/sentry_client/repo.rb create mode 100644 lib/gitlab/analytics/cycle_analytics/average.rb create mode 100644 lib/gitlab/analytics/cycle_analytics/sorting.rb delete mode 100644 lib/gitlab/analytics/instance_statistics/workers_argument_builder.rb create mode 100644 lib/gitlab/analytics/usage_trends/workers_argument_builder.rb create mode 100644 lib/gitlab/avatar_cache.rb create mode 100644 lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb delete mode 100644 lib/gitlab/background_migration/merge_request_assignees_migration_progress_check.rb create mode 100644 lib/gitlab/background_migration/populate_namespace_statistics.rb create mode 100644 lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid.rb create mode 100644 lib/gitlab/background_migration/set_default_iteration_cadences.rb create mode 100644 lib/gitlab/ci/queue/metrics.rb create mode 100644 lib/gitlab/ci/variables/collection/sort.rb delete mode 100644 lib/gitlab/ci/variables/collection/sorted.rb create mode 100644 lib/gitlab/database/background_migration/batched_job.rb create mode 100644 lib/gitlab/database/background_migration/batched_migration.rb create mode 100644 lib/gitlab/database/background_migration/batched_migration_wrapper.rb create mode 100644 lib/gitlab/database/background_migration/scheduler.rb create mode 100644 lib/gitlab/database/migrations/observers/query_statistics.rb create mode 100644 lib/gitlab/diff/pair_selector.rb create mode 100644 lib/gitlab/error_tracking/context_payload_generator.rb create mode 100644 lib/gitlab/error_tracking/log_formatter.rb create mode 100644 lib/gitlab/error_tracking/processor/context_payload_processor.rb create mode 100644 lib/gitlab/etag_caching/router/graphql.rb create mode 100644 lib/gitlab/etag_caching/router/restful.rb delete mode 100644 lib/gitlab/graphql/calls_gitaly.rb create mode 100644 lib/gitlab/graphql/calls_gitaly/field_extension.rb delete mode 100644 lib/gitlab/graphql/calls_gitaly/instrumentation.rb create mode 100644 lib/gitlab/graphql/pagination/keyset/generic_keyset_pagination.rb create mode 100644 lib/gitlab/graphql/present/field_extension.rb delete mode 100644 lib/gitlab/graphql/present/instrumentation.rb create mode 100644 lib/gitlab/hook_data/project_member_builder.rb delete mode 100644 lib/gitlab/marginalia/active_record_instrumentation.rb create mode 100644 lib/gitlab/marker_range.rb create mode 100644 lib/gitlab/metrics/background_transaction.rb create mode 100644 lib/gitlab/pagination/keyset/column_order_definition.rb create mode 100644 lib/gitlab/pagination/keyset/order.rb create mode 100644 lib/gitlab/relative_positioning/closed_range.rb create mode 100644 lib/gitlab/relative_positioning/ending_at.rb create mode 100644 lib/gitlab/relative_positioning/starting_from.rb create mode 100644 lib/gitlab/sidekiq_middleware/size_limiter/client.rb create mode 100644 lib/gitlab/sidekiq_middleware/size_limiter/exceed_limit_error.rb create mode 100644 lib/gitlab/sidekiq_middleware/size_limiter/validator.rb create mode 100644 lib/gitlab/usage/metrics/names_suggestions/generator.rb create mode 100644 lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml create mode 100644 lib/gitlab/word_diff/chunk_collection.rb create mode 100644 lib/gitlab/word_diff/line_processor.rb create mode 100644 lib/gitlab/word_diff/parser.rb create mode 100644 lib/gitlab/word_diff/positions_counter.rb create mode 100644 lib/gitlab/word_diff/segments/chunk.rb create mode 100644 lib/gitlab/word_diff/segments/diff_hunk.rb create mode 100644 lib/gitlab/word_diff/segments/newline.rb delete mode 100644 lib/rspec_flaky/config.rb delete mode 100644 lib/rspec_flaky/example.rb delete mode 100644 lib/rspec_flaky/flaky_example.rb delete mode 100644 lib/rspec_flaky/flaky_examples_collection.rb delete mode 100644 lib/rspec_flaky/listener.rb delete mode 100644 lib/rspec_flaky/report.rb delete mode 100644 lib/sentry/api_urls.rb delete mode 100644 lib/sentry/client.rb delete mode 100644 lib/sentry/client/event.rb delete mode 100644 lib/sentry/client/issue.rb delete mode 100644 lib/sentry/client/issue_link.rb delete mode 100644 lib/sentry/client/projects.rb delete mode 100644 lib/sentry/client/repo.rb delete mode 100644 lib/sentry/pagination_parser.rb create mode 100644 lib/spam/concerns/has_spam_action_response_fields.rb create mode 100644 lib/tasks/gitlab/packages/composer.rake delete mode 100644 lib/tasks/scss-lint.rake create mode 100644 locale/br_FR/gitlab.po create mode 100644 qa/qa/page/component/invite_members_modal.rb create mode 100644 qa/qa/page/group/settings/package_registries.rb create mode 100644 qa/qa/page/project/registry/show.rb create mode 100644 qa/qa/resource/registry_repository.rb create mode 100644 qa/qa/specs/features/api/3_create/snippet/snippet_repository_storage_move_spec.rb create mode 100644 qa/qa/specs/features/api/4_verify/.gitkeep delete mode 100644 qa/qa/specs/features/api/4_verify/pipeline_deletion_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/5_package/container_registry_spec.rb create mode 100644 qa/tls_certificates/authority/ca.crt create mode 100644 qa/tls_certificates/authority/ca.key create mode 100644 qa/tls_certificates/authority/ca.pem create mode 100755 scripts/frontend/execute-on-staged-files.sh delete mode 100644 scripts/frontend/frontend_script_utils.js delete mode 100644 scripts/frontend/prettier.js delete mode 100755 scripts/update-workhorse delete mode 100644 spec/controllers/admin/instance_statistics_controller_spec.rb create mode 100644 spec/controllers/admin/usage_trends_controller_spec.rb delete mode 100644 spec/controllers/notification_settings_controller_spec.rb delete mode 100644 spec/experiments/application_experiment/cache_spec.rb delete mode 100644 spec/factories/analytics/instance_statistics/measurement.rb create mode 100644 spec/factories/analytics/usage_trends/measurement.rb create mode 100644 spec/factories/gitlab/database/background_migration/batched_jobs.rb create mode 100644 spec/factories/gitlab/database/background_migration/batched_migrations.rb delete mode 100644 spec/factories/iterations.rb create mode 100644 spec/features/boards/user_adds_lists_to_board_spec.rb create mode 100644 spec/features/groups/settings/user_searches_in_settings_spec.rb create mode 100644 spec/features/projects/settings/user_searches_in_settings_spec.rb create mode 100644 spec/finders/admin/plans_finder_spec.rb create mode 100644 spec/finders/boards/boards_finder_spec.rb delete mode 100644 spec/finders/ci/testing/daily_build_group_report_results_finder_spec.rb create mode 100644 spec/finders/namespaces/projects_finder_spec.rb create mode 100644 spec/finders/projects/groups_finder_spec.rb create mode 100644 spec/finders/repositories/changelog_commits_finder_spec.rb delete mode 100644 spec/finders/repositories/commits_with_trailer_finder_spec.rb create mode 100644 spec/frontend/__helpers__/fake_date/fixtures.js create mode 100644 spec/frontend/access_tokens/components/projects_field_spec.js create mode 100644 spec/frontend/access_tokens/components/projects_token_selector_spec.js create mode 100644 spec/frontend/access_tokens/index_spec.js create mode 100644 spec/frontend/admin/users/tabs_spec.js delete mode 100644 spec/frontend/alerts_settings/mocks/alertFields.json create mode 100644 spec/frontend/alerts_settings/mocks/alert_fields.json create mode 100644 spec/frontend/alerts_settings/mocks/parsed_mapping.json delete mode 100644 spec/frontend/analytics/instance_statistics/apollo_mock_data.js delete mode 100644 spec/frontend/analytics/instance_statistics/components/__snapshots__/instance_statistics_count_chart_spec.js.snap delete mode 100644 spec/frontend/analytics/instance_statistics/components/app_spec.js delete mode 100644 spec/frontend/analytics/instance_statistics/components/instance_counts_spec.js delete mode 100644 spec/frontend/analytics/instance_statistics/components/instance_statistics_count_chart_spec.js delete mode 100644 spec/frontend/analytics/instance_statistics/components/projects_and_groups_chart_spec.js delete mode 100644 spec/frontend/analytics/instance_statistics/components/users_chart_spec.js delete mode 100644 spec/frontend/analytics/instance_statistics/mock_data.js delete mode 100644 spec/frontend/analytics/instance_statistics/utils_spec.js create mode 100644 spec/frontend/analytics/usage_trends/apollo_mock_data.js create mode 100644 spec/frontend/analytics/usage_trends/components/__snapshots__/usage_trends_count_chart_spec.js.snap create mode 100644 spec/frontend/analytics/usage_trends/components/app_spec.js create mode 100644 spec/frontend/analytics/usage_trends/components/instance_counts_spec.js create mode 100644 spec/frontend/analytics/usage_trends/components/usage_trends_count_chart_spec.js create mode 100644 spec/frontend/analytics/usage_trends/components/users_chart_spec.js create mode 100644 spec/frontend/analytics/usage_trends/mock_data.js create mode 100644 spec/frontend/analytics/usage_trends/utils_spec.js create mode 100644 spec/frontend/boards/board_card_inner_spec.js create mode 100644 spec/frontend/boards/components/board_add_new_column_form_spec.js create mode 100644 spec/frontend/boards/components/board_add_new_column_spec.js create mode 100644 spec/frontend/boards/components/board_card_deprecated_spec.js delete mode 100644 spec/frontend/boards/components/board_card_layout_spec.js create mode 100644 spec/frontend/boards/components/filtered_search_spec.js delete mode 100644 spec/frontend/boards/components/sidebar/remove_issue_spec.js delete mode 100644 spec/frontend/boards/issue_card_inner_spec.js create mode 100644 spec/frontend/captcha/captcha_modal_axios_interceptor_spec.js create mode 100644 spec/frontend/captcha/wait_for_captcha_to_be_solved_spec.js create mode 100644 spec/frontend/emoji/components/category_spec.js create mode 100644 spec/frontend/emoji/components/emoji_group_spec.js create mode 100644 spec/frontend/emoji/components/emoji_list_spec.js create mode 100644 spec/frontend/experimentation/experiment_tracking_spec.js create mode 100644 spec/frontend/experimentation/utils_spec.js delete mode 100644 spec/frontend/fixtures/test_report.rb create mode 100644 spec/frontend/invite_members/components/group_select_spec.js create mode 100644 spec/frontend/invite_members/components/invite_group_trigger_spec.js create mode 100644 spec/frontend/issuable/components/csv_export_modal_spec.js create mode 100644 spec/frontend/issuable/components/csv_import_export_buttons_spec.js create mode 100644 spec/frontend/issuable/components/csv_import_modal_spec.js create mode 100644 spec/frontend/issues_list/components/jira_issues_import_status_app_spec.js delete mode 100644 spec/frontend/issues_list/components/jira_issues_list_root_spec.js create mode 100644 spec/frontend/jira_connect/utils_spec.js delete mode 100644 spec/frontend/lib/utils/experimentation_spec.js create mode 100644 spec/frontend/lib/utils/select2_utils_spec.js create mode 100644 spec/frontend/merge_conflicts/store/actions_spec.js create mode 100644 spec/frontend/packages/details/components/installation_title_spec.js create mode 100644 spec/frontend/pages/projects/forks/new/components/app_spec.js create mode 100644 spec/frontend/pages/projects/forks/new/components/fork_form_spec.js create mode 100644 spec/frontend/pages/projects/learn_gitlab/components/learn_gitlab_info_card_spec.js create mode 100644 spec/frontend/pages/projects/learn_gitlab/components/mock_data.js create mode 100644 spec/frontend/pages/shared/wikis/wiki_alert_spec.js create mode 100644 spec/frontend/pipeline_editor/components/header/pipeline_status_spec.js create mode 100644 spec/frontend/pipeline_editor/components/ui/pipeline_editor_empty_state_spec.js create mode 100644 spec/frontend/pipeline_new/components/refs_dropdown_spec.js create mode 100644 spec/frontend/pipelines/components/pipelines_list/pipeline_mini_graph_spec.js create mode 100644 spec/frontend/pipelines/components/pipelines_list/pipeline_stage_spec.js delete mode 100644 spec/frontend/pipelines/stage_spec.js create mode 100644 spec/frontend/projects/compare/components/app_legacy_spec.js create mode 100644 spec/frontend/projects/compare/components/repo_dropdown_spec.js create mode 100644 spec/frontend/projects/compare/components/revision_card_spec.js create mode 100644 spec/frontend/projects/compare/components/revision_dropdown_legacy_spec.js create mode 100644 spec/frontend/projects/details/upload_button_spec.js create mode 100644 spec/frontend/projects/experiment_new_project_creation/components/new_project_push_tip_popover_spec.js create mode 100644 spec/frontend/projects/upload_file_experiment_spec.js create mode 100644 spec/frontend/protected_branches/protected_branch_edit_spec.js create mode 100644 spec/frontend/ref/components/__snapshots__/ref_selector_spec.js.snap create mode 100644 spec/frontend/related_issues/components/related_issuable_input_spec.js create mode 100644 spec/frontend/repository/components/upload_blob_modal_spec.js delete mode 100644 spec/frontend/shared/popover_spec.js delete mode 100644 spec/frontend/sidebar/__snapshots__/confidential_issue_sidebar_spec.js.snap create mode 100644 spec/frontend/sidebar/components/confidential/sidebar_confidentiality_content_spec.js create mode 100644 spec/frontend/sidebar/components/confidential/sidebar_confidentiality_form_spec.js create mode 100644 spec/frontend/sidebar/components/confidential/sidebar_confidentiality_widget_spec.js delete mode 100644 spec/frontend/sidebar/confidential/__snapshots__/edit_form_spec.js.snap delete mode 100644 spec/frontend/sidebar/confidential/edit_form_buttons_spec.js delete mode 100644 spec/frontend/sidebar/confidential/edit_form_spec.js delete mode 100644 spec/frontend/sidebar/confidential_issue_sidebar_spec.js create mode 100644 spec/frontend/single_file_diff_spec.js create mode 100644 spec/frontend/vue_mr_widget/deployment/deployment_list_spec.js create mode 100644 spec/frontend/vue_shared/components/registry/persisted_dropdown_selection_spec.js delete mode 100644 spec/frontend/vue_shared/components/tabs/tab_spec.js delete mode 100644 spec/frontend/vue_shared/components/tabs/tabs_spec.js create mode 100644 spec/frontend/vue_shared/components/user_access_role_badge_spec.js delete mode 100644 spec/frontend/vue_shared/directives/tooltip_spec.js create mode 100644 spec/generator_helper.rb create mode 100644 spec/graphql/mutations/boards/update_spec.rb create mode 100644 spec/graphql/mutations/custom_emoji/create_spec.rb create mode 100644 spec/graphql/mutations/merge_requests/accept_spec.rb create mode 100644 spec/graphql/mutations/release_asset_links/create_spec.rb create mode 100644 spec/graphql/mutations/user_callouts/create_spec.rb delete mode 100644 spec/graphql/resolvers/admin/analytics/instance_statistics/measurements_resolver_spec.rb create mode 100644 spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb create mode 100644 spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb create mode 100644 spec/graphql/resolvers/group_packages_resolver_spec.rb delete mode 100644 spec/graphql/resolvers/packages_resolver_spec.rb create mode 100644 spec/graphql/resolvers/project_packages_resolver_spec.rb delete mode 100644 spec/graphql/types/admin/analytics/instance_statistics/measurement_identifier_enum_spec.rb delete mode 100644 spec/graphql/types/admin/analytics/instance_statistics/measurement_type_spec.rb create mode 100644 spec/graphql/types/admin/analytics/usage_trends/measurement_identifier_enum_spec.rb create mode 100644 spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb create mode 100644 spec/graphql/types/base_argument_spec.rb create mode 100644 spec/graphql/types/user_callout_feature_name_enum_spec.rb create mode 100644 spec/graphql/types/user_callout_type_spec.rb create mode 100644 spec/helpers/ide_helper_spec.rb create mode 100644 spec/helpers/projects/security/configuration_helper_spec.rb create mode 100644 spec/initializers/rack_multipart_patch_spec.rb create mode 100644 spec/lib/api/entities/plan_limit_spec.rb delete mode 100644 spec/lib/api/entities/project_repository_storage_move_spec.rb create mode 100644 spec/lib/api/entities/projects/repository_storage_move_spec.rb create mode 100644 spec/lib/api/entities/public_group_details_spec.rb delete mode 100644 spec/lib/api/entities/snippet_repository_storage_move_spec.rb create mode 100644 spec/lib/api/entities/snippets/repository_storage_move_spec.rb delete mode 100644 spec/lib/bulk_imports/common/loaders/entity_loader_spec.rb delete mode 100644 spec/lib/bulk_imports/common/transformers/award_emoji_transformer_spec.rb create mode 100644 spec/lib/bulk_imports/common/transformers/user_reference_transformer_spec.rb create mode 100644 spec/lib/bulk_imports/groups/graphql/get_milestones_query_spec.rb delete mode 100644 spec/lib/bulk_imports/groups/loaders/labels_loader_spec.rb delete mode 100644 spec/lib/bulk_imports/groups/loaders/members_loader_spec.rb create mode 100644 spec/lib/bulk_imports/groups/pipelines/milestones_pipeline_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client/api_urls_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client/event_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client/issue_link_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client/issue_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client/pagination_parser_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client/projects_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client/repo_spec.rb create mode 100644 spec/lib/error_tracking/sentry_client_spec.rb create mode 100644 spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb create mode 100644 spec/lib/gitlab/analytics/cycle_analytics/average_spec.rb create mode 100644 spec/lib/gitlab/analytics/cycle_analytics/sorting_spec.rb delete mode 100644 spec/lib/gitlab/analytics/instance_statistics/workers_argument_builder_spec.rb create mode 100644 spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb create mode 100644 spec/lib/gitlab/avatar_cache_spec.rb create mode 100644 spec/lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/merge_request_assignees_migration_progress_check_spec.rb create mode 100644 spec/lib/gitlab/background_migration/recalculate_vulnerabilities_occurrences_uuid_spec.rb create mode 100644 spec/lib/gitlab/background_migration/set_default_iteration_cadences_spec.rb create mode 100644 spec/lib/gitlab/ci/variables/collection/sort_spec.rb delete mode 100644 spec/lib/gitlab/ci/variables/collection/sorted_spec.rb create mode 100644 spec/lib/gitlab/database/background_migration/batched_job_spec.rb create mode 100644 spec/lib/gitlab/database/background_migration/batched_migration_spec.rb create mode 100644 spec/lib/gitlab/database/background_migration/batched_migration_wrapper_spec.rb create mode 100644 spec/lib/gitlab/database/background_migration/scheduler_spec.rb create mode 100644 spec/lib/gitlab/database/migrations/observers/query_statistics_spec.rb create mode 100644 spec/lib/gitlab/diff/pair_selector_spec.rb create mode 100644 spec/lib/gitlab/error_tracking/context_payload_generator_spec.rb create mode 100644 spec/lib/gitlab/error_tracking/log_formatter_spec.rb create mode 100644 spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb create mode 100644 spec/lib/gitlab/etag_caching/router/graphql_spec.rb create mode 100644 spec/lib/gitlab/etag_caching/router/restful_spec.rb create mode 100644 spec/lib/gitlab/etag_caching/store_spec.rb create mode 100644 spec/lib/gitlab/graphql/calls_gitaly/field_extension_spec.rb delete mode 100644 spec/lib/gitlab/graphql/calls_gitaly/instrumentation_spec.rb create mode 100644 spec/lib/gitlab/graphql/present/field_extension_spec.rb create mode 100644 spec/lib/gitlab/hook_data/project_member_builder_spec.rb create mode 100644 spec/lib/gitlab/marker_range_spec.rb create mode 100644 spec/lib/gitlab/metrics/background_transaction_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset/column_order_definition_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset/order_spec.rb create mode 100644 spec/lib/gitlab/sidekiq_middleware/size_limiter/client_spec.rb create mode 100644 spec/lib/gitlab/sidekiq_middleware/size_limiter/exceed_limit_error_spec.rb create mode 100644 spec/lib/gitlab/sidekiq_middleware/size_limiter/validator_spec.rb create mode 100644 spec/lib/gitlab/usage/metrics/names_suggestions/generator_spec.rb create mode 100644 spec/lib/gitlab/usage_data_counters/code_review_events_spec.rb create mode 100644 spec/lib/gitlab/word_diff/chunk_collection_spec.rb create mode 100644 spec/lib/gitlab/word_diff/line_processor_spec.rb create mode 100644 spec/lib/gitlab/word_diff/parser_spec.rb create mode 100644 spec/lib/gitlab/word_diff/positions_counter_spec.rb create mode 100644 spec/lib/gitlab/word_diff/segments/chunk_spec.rb create mode 100644 spec/lib/gitlab/word_diff/segments/diff_hunk_spec.rb create mode 100644 spec/lib/gitlab/word_diff/segments/newline_spec.rb create mode 100644 spec/lib/peek/views/active_record_spec.rb delete mode 100644 spec/lib/rspec_flaky/config_spec.rb delete mode 100644 spec/lib/rspec_flaky/example_spec.rb delete mode 100644 spec/lib/rspec_flaky/flaky_example_spec.rb delete mode 100644 spec/lib/rspec_flaky/flaky_examples_collection_spec.rb delete mode 100644 spec/lib/rspec_flaky/listener_spec.rb delete mode 100644 spec/lib/rspec_flaky/report_spec.rb delete mode 100644 spec/lib/sentry/api_urls_spec.rb delete mode 100644 spec/lib/sentry/client/event_spec.rb delete mode 100644 spec/lib/sentry/client/issue_link_spec.rb delete mode 100644 spec/lib/sentry/client/issue_spec.rb delete mode 100644 spec/lib/sentry/client/projects_spec.rb delete mode 100644 spec/lib/sentry/client/repo_spec.rb delete mode 100644 spec/lib/sentry/client_spec.rb delete mode 100644 spec/lib/sentry/pagination_parser_spec.rb create mode 100644 spec/lib/system_check/sidekiq_check_spec.rb create mode 100644 spec/migrations/20201112130715_schedule_recalculate_uuid_on_vulnerabilities_occurrences_spec.rb create mode 100644 spec/migrations/20210218040814_add_environment_scope_to_group_variables_spec.rb create mode 100644 spec/migrations/cleanup_projects_with_bad_has_external_issue_tracker_data_spec.rb create mode 100644 spec/migrations/migrate_delayed_project_removal_from_namespaces_to_namespace_settings_spec.rb create mode 100644 spec/migrations/reschedule_artifact_expiry_backfill_spec.rb create mode 100644 spec/migrations/reschedule_set_default_iteration_cadences_spec.rb delete mode 100644 spec/migrations/schedule_merge_request_assignees_migration_progress_check_spec.rb delete mode 100644 spec/models/analytics/instance_statistics/measurement_spec.rb create mode 100644 spec/models/analytics/usage_trends/measurement_spec.rb delete mode 100644 spec/models/iteration_spec.rb create mode 100644 spec/models/projects/repository_storage_move_spec.rb create mode 100644 spec/models/snippets/repository_storage_move_spec.rb create mode 100644 spec/requests/api/admin/plan_limits_spec.rb create mode 100644 spec/requests/api/graphql/group/packages_spec.rb delete mode 100644 spec/requests/api/graphql/instance_statistics_measurements_spec.rb create mode 100644 spec/requests/api/graphql/mutations/merge_requests/accept_spec.rb create mode 100644 spec/requests/api/graphql/mutations/release_asset_links/create_spec.rb create mode 100644 spec/requests/api/graphql/mutations/user_callouts/create_spec.rb create mode 100644 spec/requests/api/graphql/project/alert_management/alert/issue_spec.rb create mode 100644 spec/requests/api/graphql/snippets_spec.rb create mode 100644 spec/requests/api/graphql/usage_trends_measurements_spec.rb create mode 100644 spec/requests/projects/merge_requests/content_spec.rb delete mode 100644 spec/services/boards/list_service_spec.rb create mode 100644 spec/services/ci/create_pipeline_service/environment_spec.rb create mode 100644 spec/services/issuable/process_assignees_spec.rb create mode 100644 spec/services/merge_requests/retarget_chain_service_spec.rb create mode 100644 spec/services/packages/create_temporary_package_service_spec.rb create mode 100644 spec/services/packages/debian/find_or_create_incoming_service_spec.rb create mode 100644 spec/services/packages/debian/find_or_create_package_service_spec.rb delete mode 100644 spec/services/packages/debian/get_or_create_incoming_service_spec.rb create mode 100644 spec/services/packages/maven/metadata/append_package_file_service_spec.rb create mode 100644 spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb create mode 100644 spec/services/packages/maven/metadata/sync_service_spec.rb delete mode 100644 spec/services/packages/nuget/create_package_service_spec.rb create mode 100644 spec/services/packages/rubygems/dependency_resolver_service_spec.rb create mode 100644 spec/services/users/dismiss_user_callout_service_spec.rb create mode 100644 spec/spam/concerns/has_spam_action_response_fields_spec.rb create mode 100644 spec/support/graphql/resolver_factories.rb create mode 100644 spec/support/matchers/email_matcher.rb create mode 100644 spec/support/services/issues/move_and_clone_services_shared_examples.rb create mode 100644 spec/support/services/service_response_shared_examples.rb create mode 100644 spec/support/shared_contexts/security_and_compliance_permissions_shared_context.rb create mode 100644 spec/support/shared_examples/banzai/filters/emoji_shared_examples.rb create mode 100644 spec/support/shared_examples/controllers/create_notes_rate_limit_shared_examples.rb delete mode 100644 spec/support/shared_examples/features/comment_and_close_button_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/usage_data_counters/issuable_activity_shared_examples.rb delete mode 100644 spec/support/shared_examples/lib/gitlab/usage_data_counters/issue_activity_shared_examples.rb create mode 100644 spec/support/shared_examples/metrics/active_record_subscriber_shared_examples.rb create mode 100644 spec/support/shared_examples/models/boards/user_preferences_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/graphql/packages/group_and_project_packages_list_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/rubygems_packages_shared_examples.rb create mode 100644 spec/support/shared_examples/service_desk_issue_templates_examples.rb create mode 100644 spec/support/shared_examples/services/boards/update_boards_shared_examples.rb create mode 100644 spec/support/stub_snowplow.rb create mode 100644 spec/tasks/admin_mode_spec.rb create mode 100644 spec/tasks/gitlab/packages/composer_rake_spec.rb create mode 100644 spec/tooling/rspec_flaky/config_spec.rb create mode 100644 spec/tooling/rspec_flaky/example_spec.rb create mode 100644 spec/tooling/rspec_flaky/flaky_example_spec.rb create mode 100644 spec/tooling/rspec_flaky/flaky_examples_collection_spec.rb create mode 100644 spec/tooling/rspec_flaky/listener_spec.rb create mode 100644 spec/tooling/rspec_flaky/report_spec.rb create mode 100644 spec/validators/gitlab/utils/zoom_url_validator_spec.rb delete mode 100644 spec/validators/zoom_url_validator_spec.rb delete mode 100644 spec/views/groups/show.html.haml_spec.rb create mode 100644 spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb create mode 100644 spec/views/notify/change_in_merge_request_draft_status_email.text.erb_spec.rb delete mode 100644 spec/views/projects/show.html.haml_spec.rb create mode 100644 spec/workers/analytics/usage_trends/count_job_trigger_worker_spec.rb create mode 100644 spec/workers/analytics/usage_trends/counter_job_worker_spec.rb create mode 100644 spec/workers/merge_requests/delete_source_branch_worker_spec.rb create mode 100644 spec/workers/namespaces/onboarding_issue_created_worker_spec.rb create mode 100644 spec/workers/namespaces/onboarding_progress_worker_spec.rb create mode 100644 spec/workers/packages/composer/cache_update_worker_spec.rb create mode 100644 spec/workers/packages/maven/metadata/sync_worker_spec.rb create mode 100644 spec/workers/projects/schedule_bulk_repository_shard_moves_worker_spec.rb create mode 100644 spec/workers/projects/update_repository_storage_worker_spec.rb create mode 100644 spec/workers/snippets/schedule_bulk_repository_shard_moves_worker_spec.rb create mode 100644 spec/workers/snippets/update_repository_storage_worker_spec.rb create mode 100644 tooling/rspec_flaky/config.rb create mode 100644 tooling/rspec_flaky/example.rb create mode 100644 tooling/rspec_flaky/flaky_example.rb create mode 100644 tooling/rspec_flaky/flaky_examples_collection.rb create mode 100644 tooling/rspec_flaky/listener.rb create mode 100644 tooling/rspec_flaky/report.rb mode change 100755 => 100644 vendor/gitignore/C++.gitignore mode change 100755 => 100644 vendor/gitignore/Java.gitignore delete mode 100644 vendor/project_templates/learn_gitlab_gold_trial.tar.gz create mode 100644 vendor/project_templates/learn_gitlab_ultimate_trial.tar.gz mode change 100644 => 120000 workhorse/VERSION delete mode 100644 workhorse/internal/errortracker/sentry.go create mode 100644 workhorse/internal/helper/raven.go create mode 100644 workhorse/raven.go diff --git a/.eslintignore b/.eslintignore index c41556f6aae..73e11dfd974 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,15 +1,9 @@ /app/assets/javascripts/locale/**/app.js -/config/ /builds/ /coverage/ /coverage-frontend/ /coverage-javascript/ /node_modules/ /public/ -/scripts/ /tmp/ /vendor/ -jest.config.js -jest.config.*.js -karma.config.js -webpack.config.js diff --git a/.eslintrc.yml b/.eslintrc.yml index 75c52ac1319..678750c085b 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -89,3 +89,15 @@ overrides: rules: '@gitlab/require-i18n-strings': off '@gitlab/no-runtime-template-compiler': off + - files: + - 'config/**/*' + - 'scripts/**/*' + - '*.config.js' + - 'jest.*.js' + rules: + '@gitlab/require-i18n-strings': off + import/no-extraneous-dependencies: off + import/no-commonjs: off + import/no-nodejs-modules: off + filenames/match-regex: off + no-console: off diff --git a/.gitignore b/.gitignore index 93fb0b1144b..388718898e4 100644 --- a/.gitignore +++ b/.gitignore @@ -19,8 +19,8 @@ eslint-report.html /.ruby-version /.tool-versions /.rvmrc -.sass-cache/ /.secret +.sass-cache/ /.vagrant /.yarn-cache /.byebug_history @@ -104,3 +104,4 @@ ee/changelogs/unreleased-ee /sitespeed-result tags.lock tags.temp +.stylelintcache diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e38e2f765bd..8bb09825e67 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -111,4 +111,4 @@ include: - local: .gitlab/ci/dast.gitlab-ci.yml - local: .gitlab/ci/workhorse.gitlab-ci.yml - local: .gitlab/ci/graphql.gitlab-ci.yml - - local: .gitlab/ci/verify-lockfile.gitlab-ci.yml + - remote: 'https://gitlab.com/gitlab-org/frontend/untamper-my-lockfile/-/raw/main/.gitlab-ci-template.yml' diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 0d34eeccf8c..2eda1a890d9 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -24,7 +24,6 @@ /doc/administration/troubleshooting @axil @marcia @mjang1 /doc/ci/ @marcel.amirault @sselhorn /doc/ci/environments/ @axil -/doc/ci/release/ @axil /doc/ci/services/ @sselhorn /doc/ci/test_cases/ @msedlakjakubowski /doc/development/ @marcia @mjang1 @@ -101,6 +100,7 @@ /doc/api/repository_files.md @aqualls /doc/api/repository_submodules.md @aqualls /doc/api/search.md @aqualls +/doc/api/services.md @aqualls /doc/api/snippets.md @aqualls /doc/api/suggestions.md @aqualls /doc/api/tags.md @aqualls @@ -110,6 +110,7 @@ /doc/topics/gitlab_flow.md @aqualls /doc/user/admin_area/settings/account_and_limit_settings.md @aqualls /doc/user/admin_area/settings/instance_template_repository.md @aqualls +/doc/user/admin_area/settings/project_integration_management.md @aqualls /doc/user/admin_area/settings/push_event_activities_limit.md @aqualls /doc/user/admin_area/settings/visibility_and_access_controls.md @aqualls /doc/user/asciidoc.md @aqualls @@ -129,6 +130,15 @@ /doc/user/project/settings/import_export.md @aqualls /doc/user/snippets.md @aqualls +[Docs Growth] +/doc/administration/instance_review.md @aqualls +/doc/api/invitations.md @aqualls +/doc/api/experiments.md @aqualls +/doc/development/experiment_guide/ @aqualls +/doc/development/snowplow.md @aqualls +/doc/development/usage_ping/ @aqualls +/doc/user/admin_area/license.md @aqualls + [Frontend] *.scss @annabeldunstone @gitlab-org/maintainers/frontend *.js @gitlab-org/maintainers/frontend @@ -170,6 +180,11 @@ Dangerfile @gl-quality/eng-prod /scripts/review_apps/seed-dast-test-data.sh @dappelt @ngeorge1 @gl-quality/eng-prod .editorconfig @gl-quality/eng-prod +[Backend Static Code Analysis] +.rubocop*.yml @dstull @splattael @gl-quality/eng-prod +/rubocop/ @dstull @splattael @gl-quality/eng-prod +/spec/rubocop/ @dstull @splattael @gl-quality/eng-prod + [End-to-end] /qa/ @gl-quality @@ -189,15 +204,16 @@ Dangerfile @gl-quality/eng-prod # Secure & Threat Management ownership delineation # https://about.gitlab.com/handbook/engineering/development/threat-management/delineate-secure-threat-management.html#technical-boundaries [Threat Insights] +/app/models/vulnerability.rb @gitlab-org/secure/threat-insights-backend-team /ee/app/finders/security/ @gitlab-org/secure/threat-insights-backend-team /ee/app/models/security/ @gitlab-org/secure/threat-insights-backend-team /ee/app/models/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team -/ee/app/models/vulnerability.rb @gitlab-org/secure/threat-insights-backend-team /ee/app/policies/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team /ee/app/policies/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team /ee/lib/api/vulnerabilit*.rb @gitlab-org/secure/threat-insights-backend-team /ee/spec/policies/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team -/ee/spec/policies/vulnerabilities/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team +/ee/spec/policies/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team + [Secure] /ee/lib/gitlab/ci/parsers/license_compliance/ @gitlab-org/secure/composition-analysis-be /ee/lib/gitlab/ci/parsers/security/ @gitlab-org/secure/composition-analysis-be @gitlab-org/secure/dynamic-analysis-be @gitlab-org/secure/static-analysis-be @gitlab-org/secure/fuzzing-be @@ -244,9 +260,7 @@ Dangerfile @gl-quality/eng-prod [Product Intelligence] /ee/lib/gitlab/usage_data_counters/ @gitlab-org/growth/product-intelligence/engineers /ee/lib/ee/gitlab/usage_data.rb @gitlab-org/growth/product-intelligence/engineers -/lib/gitlab/grafana_embed_usage_data.rb @gitlab-org/growth/product-intelligence/engineers /lib/gitlab/usage_data.rb @gitlab-org/growth/product_intelligence/engineers -/lib/gitlab/cycle_analytics/usage_data.rb @gitlab-org/growth/product-intelligence/engineers /lib/gitlab/usage_data_counters/ @gitlab-org/growth/product-intelligence/engineers [Growth Experiments] @@ -266,3 +280,6 @@ Dangerfile @gl-quality/eng-prod [Legal] /config/dependency_decisions.yml @gitlab-org/legal-reviewers + +[Workhorse] +/workhorse/ @jacobvosmaer-gitlab @nick.thomas @nolith @patrickbajao diff --git a/.gitlab/ci/cache-repo.gitlab-ci.yml b/.gitlab/ci/cache-repo.gitlab-ci.yml index 18e1ca1644d..324c8615083 100644 --- a/.gitlab/ci/cache-repo.gitlab-ci.yml +++ b/.gitlab/ci/cache-repo.gitlab-ci.yml @@ -29,6 +29,7 @@ cache-repo: - '[ -z "$CI_REPO_CACHE_CREDENTIALS" ] || gcloud auth activate-service-account --key-file=$CI_REPO_CACHE_CREDENTIALS' script: # Enable shallow repo caching only if the $ENABLE_SHALLOW_REPO_CACHING variable exists + # The `git repack` call works around a Git bug with shallow clones: https://gitlab.com/gitlab-org/git/-/issues/86 - if [ -n "$ENABLE_SHALLOW_REPO_CACHING" ]; then cd .. && rm -rf $CI_PROJECT_NAME; today=$(date +%Y-%m-%d); @@ -38,6 +39,7 @@ cache-repo: echo "Cloning $CI_REPOSITORY_URL into $CI_PROJECT_NAME with commits from $one_year_ago."; time git clone --progress --no-checkout --shallow-since=$one_year_ago $CI_REPOSITORY_URL $CI_PROJECT_NAME; cd $CI_PROJECT_NAME; + time git repack -d; echo "Archiving $CI_PROJECT_NAME into /tmp/$SHALLOW_CLONE_TAR_FILENAME."; time tar cf /tmp/$SHALLOW_CLONE_TAR_FILENAME .; echo "GZipping /tmp/$SHALLOW_CLONE_TAR_FILENAME."; diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 1b4b8a12772..910a58bcd0e 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -131,6 +131,24 @@ rspec-ee frontend_fixture: - .frontend:rules:default-frontend-jobs parallel: 2 +graphql-schema-dump: + variables: + SETUP_DB: "false" + extends: + - .default-retry + - .rails-cache + - .default-before_script + - .frontend:rules:default-frontend-jobs + stage: fixtures + needs: [] + script: + - bundle exec rake gitlab:graphql:schema:dump + artifacts: + name: graphql-schema + paths: + - tmp/tests/graphql/gitlab_schema.graphql + - tmp/tests/graphql/gitlab_schema.json + .frontend-test-base: extends: - .frontend-base @@ -214,7 +232,7 @@ jest-integration: - *yarn-install - run_timed_command "yarn jest:integration --ci" # Don't use `needs` since `rspec-ee frontend_fixture` doesn't exist in `gitlab-foss` pipelines. - dependencies: ["rspec frontend_fixture", "rspec-ee frontend_fixture"] + dependencies: ["rspec frontend_fixture", "rspec-ee frontend_fixture", "graphql-schema-dump"] jest-as-if-foss: extends: diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 5de8a6bc250..274629f9c60 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -102,7 +102,7 @@ - name: postgres:11.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine - - name: elasticsearch:7.10.1 + - name: elasticsearch:7.11.1 command: ["elasticsearch", "-E", "discovery.type=single-node"] variables: POSTGRES_HOST_AUTH_METHOD: trust @@ -113,7 +113,7 @@ - name: postgres:12 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine - - name: elasticsearch:7.10.1 + - name: elasticsearch:7.11.1 command: ["elasticsearch", "-E", "discovery.type=single-node"] variables: POSTGRES_HOST_AUTH_METHOD: trust diff --git a/.gitlab/ci/graphql.gitlab-ci.yml b/.gitlab/ci/graphql.gitlab-ci.yml index 4aff0ef6306..1a05f68b178 100644 --- a/.gitlab/ci/graphql.gitlab-ci.yml +++ b/.gitlab/ci/graphql.gitlab-ci.yml @@ -11,4 +11,3 @@ graphql-verify: script: - bundle exec rake gitlab:graphql:validate - bundle exec rake gitlab:graphql:check_docs - - bundle exec rake gitlab:graphql:check_schema diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 22aa92779ea..e1ddefca99e 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -6,12 +6,17 @@ - .default-before_script - .rails-cache -.base-script: &base-script - # Only install knapsack after bundle install! Otherwise oddly some native - # gems could not be found under some circumstance. No idea why, hours wasted. - - run_timed_command "gem install knapsack --no-document" - - run_timed_command "scripts/gitaly-test-spawn" - - source ./scripts/rspec_helpers.sh +.minimal-bundle-install: + script: + - run_timed_command "bundle install --jobs=$(nproc) --path=vendor --retry=3 --quiet --without default development test production puma unicorn kerberos metrics omnibus ed25519" + +.base-script: + script: + # Only install knapsack after bundle install! Otherwise oddly some native + # gems could not be found under some circumstance. No idea why, hours wasted. + - run_timed_command "gem install knapsack --no-document" + - run_timed_command "scripts/gitaly-test-spawn" + - source ./scripts/rspec_helpers.sh .minimal-rspec-tests: variables: @@ -27,7 +32,7 @@ RECORD_DEPRECATIONS: "true" needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets", "detect-tests"] script: - - *base-script + - !reference [.base-script, script] - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration" artifacts: expire_in: 31d @@ -49,7 +54,7 @@ .rspec-base-migration: extends: .rails:rules:ee-and-foss-migration script: - - *base-script + - !reference [.base-script, script] - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration" .rspec-base-pg11: @@ -82,7 +87,7 @@ .rspec-ee-base-geo: extends: .rspec-base script: - - *base-script + - !reference [.base-script, script] - rspec_paralellized_job "--tag ~quarantine --tag geo" .rspec-ee-base-geo-pg11: @@ -142,7 +147,7 @@ setup-test-env: extends: - .rails-job-base - .setup-test-env-cache - - .rails:rules:default-refs-code-backstage-qa + - .rails:rules:code-backstage-qa - .use-pg11 stage: prepare variables: @@ -162,6 +167,7 @@ setup-test-env: - tmp/tests/gitaly/gitaly-lfs-smudge - tmp/tests/gitaly/gitaly-ssh - tmp/tests/gitaly/internal/ + - tmp/tests/gitaly/internal_gitaly2/ - tmp/tests/gitaly/internal_sockets/ - tmp/tests/gitaly/Makefile - tmp/tests/gitaly/praefect @@ -212,7 +218,7 @@ update-coverage-cache: - .shared:rules:update-cache stage: prepare script: - - run_timed_command "bundle install --jobs=$(nproc) --path=vendor --retry=3 --quiet --without default development test production puma unicorn kerberos metrics omnibus ed25519" + - !reference [.minimal-bundle-install, script] cache: policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. @@ -243,7 +249,7 @@ update-static-analysis-cache: static-analysis: extends: - .static-analysis-base - - .rails:rules:default-refs-code-backstage-qa + - .rails:rules:code-backstage-qa stage: test parallel: 4 script: @@ -316,7 +322,7 @@ rspec db-library-code pg12: - .rspec-base-pg12 - .rails:rules:ee-and-foss-db-library-code script: - - *base-script + - !reference [.base-script, script] - rspec_db_library_code rspec fast_spec_helper: @@ -405,7 +411,7 @@ gitlab:setup: # db/fixtures/development/04_project.rb thanks to SIZE=1 below - git clone https://gitlab.com/gitlab-org/gitlab-test.git /home/git/repositories/gitlab-org/gitlab-test.git - - *base-script + - !reference [.base-script, script] - force=yes SIZE=1 FIXTURE_PATH="db/fixtures/development" bundle exec rake gitlab:setup artifacts: when: on_failure @@ -485,7 +491,7 @@ rspec:coverage: - memory-static - memory-on-boot script: - - run_timed_command "bundle install --jobs=$(nproc) --path=vendor --retry=3 --quiet --without default development test production puma unicorn kerberos metrics omnibus ed25519" + - !reference [.minimal-bundle-install, script] - run_timed_command "bundle exec scripts/merge-simplecov" - run_timed_command "bundle exec scripts/gather-test-memory-data" coverage: '/LOC \((\d+\.\d+%)\) covered.$/' @@ -522,7 +528,7 @@ rspec:feature-flags: - memory-static - memory-on-boot script: - - run_timed_command "bundle install --jobs=$(nproc) --path=vendor --retry=3 --quiet --without default development test production puma unicorn kerberos metrics omnibus ed25519" + - !reference [.minimal-bundle-install, script] - if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then run_timed_command "bundle exec scripts/used-feature-flags" || (scripts/slack master-broken "☠️ \`${CI_JOB_NAME}\` failed! ☠️ See ${CI_JOB_URL}" ci_failing "GitLab Bot" && exit 1); else @@ -762,7 +768,7 @@ rspec fail-fast: stage: test needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets", "detect-tests"] script: - - *base-script + - !reference [.base-script, script] - rspec_fail_fast tmp/matching_tests.txt "--tag ~quarantine" artifacts: expire_in: 7d @@ -775,7 +781,7 @@ rspec foss-impact: - .rails:rules:rspec-foss-impact needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss", "detect-tests as-if-foss"] script: - - *base-script + - !reference [.base-script, script] - rspec_matched_foss_tests tmp/matching_foss_tests.txt "--tag ~quarantine" artifacts: expire_in: 7d diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index 77ada89aa6a..4d54380cefe 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -15,7 +15,7 @@ code_quality: stage: test needs: [] variables: - CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.18" + CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.23" script: - | if ! docker info &>/dev/null; then diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 1eafd024f5e..e76b0f2d07f 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -11,25 +11,25 @@ if: '$CI_PROJECT_NAME != "gitlab-foss" && $CI_PROJECT_NAME != "gitlab-ce" && $CI_PROJECT_NAME != "gitlabhq"' .if-default-refs: &if-default-refs - if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG || $FORCE_GITLAB_CI' + if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "main" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG || $FORCE_GITLAB_CI' .if-master-refs: &if-master-refs - if: '$CI_COMMIT_REF_NAME == "master"' + if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "main"' .if-master-push: &if-master-push - if: '$CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE == "push"' + if: '($CI_COMMIT_BRANCH == "master" || $CI_COMMIT_REF_NAME == "main") && $CI_PIPELINE_SOURCE == "push"' .if-master-schedule-2-hourly: &if-master-schedule-2-hourly - if: '$CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"' + if: '($CI_COMMIT_BRANCH == "master" || $CI_COMMIT_REF_NAME == "main") && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"' .if-master-schedule-nightly: &if-master-schedule-nightly - if: '$CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"' + if: '($CI_COMMIT_BRANCH == "master" || $CI_COMMIT_REF_NAME == "main") && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"' .if-auto-deploy-branches: &if-auto-deploy-branches if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/' .if-master-or-tag: &if-master-or-tag - if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_TAG' + if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "main" || $CI_COMMIT_TAG' .if-merge-request: &if-merge-request if: '$CI_MERGE_REQUEST_IID' @@ -53,7 +53,7 @@ if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"' .if-dot-com-gitlab-org-master: &if-dot-com-gitlab-org-master - if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_COMMIT_REF_NAME == "master"' + if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && ($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "main")' .if-dot-com-gitlab-org-merge-request: &if-dot-com-gitlab-org-merge-request if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_MERGE_REQUEST_IID' @@ -149,6 +149,7 @@ - "{,ee/}{app/channels,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*" - "{,ee/}{bin,cable,config,db,lib}/**/*" - "{,ee/}spec/**/*.rb" + # CI changes - ".gitlab-ci.yml" - ".gitlab/ci/**/*" - "*_VERSION" @@ -162,6 +163,9 @@ - "{,ee/}spec/support/helpers/database/**/*" - "config/prometheus/common_metrics.yml" # Used by Gitlab::DatabaseImporters::CommonMetrics::Importer - "{,ee/}app/models/project_statistics.rb" # Used to calculate sizes in migration specs + # CI changes + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" .db-library-patterns: &db-library-patterns - "{,ee/}{,spec/}lib/{,ee/}gitlab/database/**/*" @@ -183,9 +187,11 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" + # CI changes + - ".gitlab-ci.yml" - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo,scss-lint}.yml" + - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" - "Gemfile{,.lock}" - "Rakefile" @@ -193,6 +199,7 @@ - "config.ru" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated + - "data/whats_new/*.yml" .qa-patterns: &qa-patterns - ".dockerignore" @@ -205,9 +212,11 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" + # CI changes + - ".gitlab-ci.yml" - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo,scss-lint}.yml" + - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" - "Gemfile{,.lock}" - "Rakefile" @@ -215,6 +224,7 @@ - "config.ru" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated + - "data/whats_new/*.yml" # Backstage changes - "Dangerfile" - "danger/**/*" @@ -230,9 +240,11 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" + # CI changes + - ".gitlab-ci.yml" - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo,scss-lint}.yml" + - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" - "Gemfile{,.lock}" - "Rakefile" @@ -240,6 +252,7 @@ - "config.ru" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated + - "data/whats_new/*.yml" # QA changes - ".dockerignore" - "qa/**/*" @@ -251,9 +264,11 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" + # CI changes + - ".gitlab-ci.yml" - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo,scss-lint}.yml" + - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" - "Gemfile{,.lock}" - "Rakefile" @@ -261,6 +276,7 @@ - "config.ru" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated + - "data/whats_new/*.yml" # Backstage changes - "Dangerfile" - "danger/**/*" @@ -405,6 +421,7 @@ - <<: *if-security-merge-request changes: *code-backstage-patterns - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *ci-patterns @@ -445,7 +462,9 @@ .frontend:rules:bundle-size-review: rules: - - if: '$DANGER_GITLAB_API_TOKEN && $CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"' + - <<: *if-not-canonical-namespace + when: never + - if: '$DANGER_GITLAB_API_TOKEN && $CI_MERGE_REQUEST_IID && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main")' changes: *frontend-patterns allow_failure: true @@ -483,6 +502,7 @@ - <<: *if-security-merge-request changes: *code-qa-patterns - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *ci-patterns @@ -602,10 +622,9 @@ - <<: *if-merge-request changes: ["config/**/*"] -.rails:rules:default-refs-code-backstage-qa: +.rails:rules:code-backstage-qa: rules: - - <<: *if-default-refs - changes: *code-backstage-qa-patterns + - changes: *code-backstage-qa-patterns - <<: *if-merge-request-title-run-all-rspec .rails:rules:ee-only-migration: @@ -700,6 +719,7 @@ changes: *db-patterns - <<: *if-merge-request-title-as-if-foss changes: *db-patterns + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *ci-patterns @@ -716,6 +736,7 @@ changes: *db-patterns - <<: *if-merge-request-title-as-if-foss changes: *db-patterns + - <<: *if-merge-request-title-run-all-rspec .rails:rules:as-if-foss-unit: rules: @@ -725,6 +746,7 @@ changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *ci-patterns @@ -741,6 +763,7 @@ changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec .rails:rules:as-if-foss-integration: rules: @@ -750,6 +773,7 @@ changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *ci-patterns @@ -766,6 +790,7 @@ changes: *backend-patterns - <<: *if-merge-request-title-as-if-foss changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec .rails:rules:as-if-foss-system: rules: @@ -775,6 +800,7 @@ changes: *code-backstage-patterns - <<: *if-merge-request-title-as-if-foss changes: *code-backstage-patterns + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *ci-patterns @@ -791,6 +817,7 @@ changes: *code-backstage-patterns - <<: *if-merge-request-title-as-if-foss changes: *code-backstage-patterns + - <<: *if-merge-request-title-run-all-rspec .rails:rules:ee-and-foss-db-library-code: rules: @@ -809,8 +836,7 @@ .rails:rules:detect-tests: rules: - - <<: *if-default-refs - changes: *code-backstage-patterns + - changes: *code-backstage-patterns - <<: *if-merge-request-title-run-all-rspec .rails:rules:rspec-foss-impact: @@ -1123,8 +1149,7 @@ ####################### .test-metadata:rules:retrieve-tests-metadata: rules: - - <<: *if-default-refs - changes: *code-backstage-patterns + - changes: *code-backstage-patterns when: on_success - <<: *if-merge-request-title-run-all-rspec @@ -1136,7 +1161,6 @@ - ".gitlab/ci/test-metadata.gitlab-ci.yml" - "scripts/rspec_helpers.sh" - <<: *if-dot-com-ee-schedule - changes: *code-backstage-patterns ################### # workhorse rules # diff --git a/.gitlab/ci/verify-lockfile.gitlab-ci.yml b/.gitlab/ci/verify-lockfile.gitlab-ci.yml deleted file mode 100644 index 6336a428b4b..00000000000 --- a/.gitlab/ci/verify-lockfile.gitlab-ci.yml +++ /dev/null @@ -1,11 +0,0 @@ -verify_lockfile: - stage: test - image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2-git-2.29-lfs-2.9-node-14.15-yarn-1.22-graphicsmagick-1.3.34 - needs: [] - rules: - - changes: - - yarn.lock - script: - - npm config set @dappelt:registry https://gitlab.com/api/v4/projects/22564149/packages/npm/ - - npx lockfile-lint@4.3.7 --path yarn.lock --allowed-hosts yarn --validate-https - - npx @dappelt/untamper-my-lockfile --lockfile yarn.lock diff --git a/.gitlab/ci/workhorse.gitlab-ci.yml b/.gitlab/ci/workhorse.gitlab-ci.yml index a40eebd131b..8361d20d2b7 100644 --- a/.gitlab/ci/workhorse.gitlab-ci.yml +++ b/.gitlab/ci/workhorse.gitlab-ci.yml @@ -1,20 +1,10 @@ -workhorse: - extends: .workhorse:rules:workhorse - image: ${GITLAB_DEPENDENCY_PROXY}golang:1.14 - stage: test - needs: [] - script: - - rm .git/hooks/post-checkout - - git checkout . - - scripts/update-workhorse check - - make -C workhorse - workhorse:verify: extends: .workhorse:rules:workhorse image: ${GITLAB_DEPENDENCY_PROXY}golang:1.15 stage: test needs: [] script: + - make -C workhorse # test build - make -C workhorse verify .workhorse:test: diff --git a/.gitlab/issue_templates/Adoption Engineering.md b/.gitlab/issue_templates/Adoption Engineering.md deleted file mode 100644 index 01e9d0ea033..00000000000 --- a/.gitlab/issue_templates/Adoption Engineering.md +++ /dev/null @@ -1,14 +0,0 @@ -#Design - - - -#Rollout strategy - - -#Inclusions and exclusions - - -#Segmentation - - -#Tracking diff --git a/.gitlab/issue_templates/Experiment Successful Cleanup.md b/.gitlab/issue_templates/Experiment Successful Cleanup.md index 3f148ec00b1..afe4793cdfc 100644 --- a/.gitlab/issue_templates/Experiment Successful Cleanup.md +++ b/.gitlab/issue_templates/Experiment Successful Cleanup.md @@ -10,9 +10,10 @@ The changes need to become an official part of the product. - [ ] Determine whether the feature should apply to SaaS and/or self-managed - [ ] Determine whether the feature should apply to EE - and which tiers - and/or Core - [ ] Determine if tracking should be kept as is, removed, or modified. -- [ ] Migrate experiment to a default enabled [feature flag](https://docs.gitlab.com/ee/development/feature_flags/development.html) for one milestone and add a changelog. Converting to a feature flag can be skipped at the ICs discretion if risk is deemed low with consideration to both SaaS and (if applicable) self managed. - [ ] Ensure any relevant documentation has been updated. -- [ ] In the next milestone, [remove the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up). +- [ ] Consider changes to any `feature_category:` introduced by the experiment if ownership is changing (PM for Growth and PM for the new category as DRIs) +- [ ] Optional: Migrate experiment to a default enabled [feature flag](https://docs.gitlab.com/ee/development/feature_flags) for one milestone and add a changelog. Converting to a feature flag can be skipped at the ICs discretion if risk is deemed low with consideration to both SaaS and (if applicable) self managed +- [ ] In the next milestone, [remove the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) if applicable - [ ] After the flag removal is deployed, [clean up the feature/experiment feature flags](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) by running chatops command in `#production` channel /label ~"feature" ~"feature::maintenance" ~"workflow::scheduling" ~"growth experiment" ~"feature flag" diff --git a/.gitlab/issue_templates/Experimentation.md b/.gitlab/issue_templates/Experimentation.md new file mode 100644 index 00000000000..f84c4305c2c --- /dev/null +++ b/.gitlab/issue_templates/Experimentation.md @@ -0,0 +1,25 @@ + + +# Experiment Summary + + +# Design + + +# Rollout strategy + + +# Inclusions and exclusions + + +# Segmentation + + +# Tracking Details + +- [json schema](https://gitlab.com/gitlab-org/iglu/-/blob/master/public/schemas/com.gitlab/gitlab_experiment/jsonschema/0-3-0) used in `gitlab-experiment` tracking. +- see [taxonomy](https://docs.gitlab.com/ee/development/snowplow.html#structured-event-taxonomy) for a guide. + +| activity | category | action | label | context | property | value | +| -------- | -------- | ------ | ----- | ------- | -------- | ----- | +| | | | | json schema | | | diff --git a/.gitlab/issue_templates/Query Performance Investigation.md b/.gitlab/issue_templates/Query Performance Investigation.md index 3f2a6361d64..ddd361e4f2f 100644 --- a/.gitlab/issue_templates/Query Performance Investigation.md +++ b/.gitlab/issue_templates/Query Performance Investigation.md @@ -1,6 +1,6 @@ ## Description -As the name implies, the purpose of the template is to detail underperforming queries for futher investigation. +As the name implies, the purpose of the template is to detail underperforming queries for further investigation. ### Steps @@ -14,8 +14,10 @@ As the name implies, the purpose of the template is to detail underperforming qu Please provide as many of these fields as possible when submitting a query performance report. -- TPS -- Duration +- Queries per second (on average or peak) +- Number of calls per second and relative to total number of calls +- Query timings (on average or peak) +- Database time relative to total database time - Source of calls (Sidekiq, WebAPI, etc) - Query ID - SQL Statement diff --git a/.gitlab/issue_templates/experiment_tracking_template.md b/.gitlab/issue_templates/experiment_tracking_template.md new file mode 100644 index 00000000000..432ae57e594 --- /dev/null +++ b/.gitlab/issue_templates/experiment_tracking_template.md @@ -0,0 +1,94 @@ + + +## What + +Track the status of an experiment through to removal. + +1. Experiment key: `` +1. Framework: `experimentation.rb` | `gitlab_experiment` +1. Feature flag name: _experiment_percentage` | `` + +This is an experiment tracking issue for: `` +using the scoped [experiment label](https://about.gitlab.com/handbook/engineering/development/growth/#experiment-tracking-issue). + +As well as defining the experiment rollout and cleanup, this issue incorporates the relevant +[`Feature Flag Roll Out`](https://gitlab.com/gitlab-org/gitlab/-/edit/master/.gitlab/issue_templates/Feature%20Flag%20Roll%20Out.md) steps. + +## Owners + +- Team: `group::TEAM_NAME` +- Most appropriate slack channel to reach out to: `#g_TEAM_NAME` +- Best individual to reach out to: NAME + +## Expectations + +### What are we expecting to happen? + +### What might happen if this goes wrong? + +### What can we monitor to detect problems with this? + + +### Tracked data + + + Note: you can utilize [CXL calculator](https://cxl.com/ab-test-calculator/) to determine if your experiment has reached signifigance, it also includes an estimate for how much longer an experiment will need to run for before reaching signifigance. + +### Staging Test + + + + + +### Experiment tracking log + + + +### Experiment Results + + +## Roll Out Steps + +- [ ] Confirm that QA tests pass with the feature flag enabled (if you're unsure how, contact the relevant [stable counterpart in the Quality department](https://about.gitlab.com/handbook/engineering/quality/#individual-contributors)) +- [ ] Enable on staging (`/chatops run feature set feature_name true --staging`) +- [ ] Test on staging +- [ ] Ensure that documentation has been updated +- [ ] Enable on GitLab.com for individual groups/projects listed above and verify behaviour (`/chatops run feature set --project=gitlab-org/gitlab feature_name true`) +- [ ] Coordinate a time to enable the flag with the SRE oncall and release managers + - In `#production` mention `@sre-oncall` and `@release-managers`. Once an SRE on call and Release Manager on call confirm, you can proceed with the rollout +- [ ] Announce on the issue an estimated time this will be enabled on GitLab.com +- [ ] Enable on GitLab.com by running chatops command in `#production` (`/chatops run feature set feature_name true`) +- [ ] Cross post chatops Slack command to `#support_gitlab-com` ([more guidance when this is necessary in the dev docs](https://docs.gitlab.com/ee/development/feature_flags/controls.html#where-to-run-commands)) and in your team channel +- [ ] Announce on the issue that the flag has been enabled +- [ ] Remove experiment code and feature flag and add changelog entry - a separate [cleanup issue](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Experiment%20Successful%20Cleanup) might be required +- [ ] After the flag removal is deployed, [clean up the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) by running chatops command in `#production` channel + +## Rollback Steps + +- [ ] This feature can be disabled by running the following Chatops command: + +``` +/chatops run feature set feature_name false +``` + +/label ~"feature flag" ~"devops::growth" ~"growth experiment" ~"experiment tracking" ~Engineering ~"workflow::scheduling" ~"experiment::pending" + diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 5b92863b91e..555f2645d6b 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -213,12 +213,6 @@ linters: - 'app/views/projects/mattermosts/new.html.haml' - 'app/views/projects/merge_requests/_commits.html.haml' - 'app/views/projects/merge_requests/_mr_title.html.haml' - - 'app/views/projects/merge_requests/conflicts/_commit_stats.html.haml' - - 'app/views/projects/merge_requests/conflicts/_file_actions.html.haml' - - 'app/views/projects/merge_requests/conflicts/_submit_form.html.haml' - - 'app/views/projects/merge_requests/conflicts/components/_diff_file_editor.html.haml' - - 'app/views/projects/merge_requests/conflicts/components/_inline_conflict_lines.html.haml' - - 'app/views/projects/merge_requests/conflicts/show.html.haml' - 'app/views/projects/merge_requests/creations/_diffs.html.haml' - 'app/views/projects/merge_requests/creations/_new_compare.html.haml' - 'app/views/projects/merge_requests/creations/_new_submit.html.haml' @@ -297,8 +291,6 @@ linters: - 'app/views/shared/milestones/_sidebar.html.haml' - 'app/views/shared/milestones/_top.html.haml' - 'app/views/shared/notes/_hints.html.haml' - - 'app/views/shared/notifications/_button.html.haml' - - 'app/views/shared/notifications/_new_button.html.haml' - 'app/views/shared/runners/_runner_description.html.haml' - 'app/views/shared/runners/show.html.haml' - 'app/views/shared/snippets/_header.html.haml' diff --git a/.prettierignore b/.prettierignore index ff8188bbda4..ea7e6268b93 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,9 +1,9 @@ /app/assets/javascripts/locale/**/app.js +/fixtures/lib/gitlab/graphql/ /node_modules/ /public/ /vendor/ /tmp/ -doc/api/graphql/reference/gitlab_schema.graphql # ignore stylesheets for now as this clashes with our linter *.css diff --git a/.rubocop.yml b/.rubocop.yml index 7a4b53b5aa5..8f5407c64c5 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -7,8 +7,10 @@ require: - rubocop-rspec inherit_from: - - .rubocop_manual_todo.yml - - .rubocop_todo.yml + <% unless ENV['REVEAL_RUBOCOP_TODO'] == '1' %> + - '.rubocop_manual_todo.yml' + - '.rubocop_todo.yml' + <% end %> - ./rubocop/rubocop-migrations.yml - ./rubocop/rubocop-usage-data.yml - ./rubocop/rubocop-code_reuse.yml @@ -16,6 +18,7 @@ inherit_from: inherit_mode: merge: - Include + - Exclude AllCops: TargetRubyVersion: 2.7 @@ -87,6 +90,17 @@ RSpec/FilePath: - 'ee/spec/frontend/fixtures/*' - 'spec/requests/api/v3/*' +# Configuration parameters: AllowSubject. +RSpec/MultipleMemoizedHelpers: + Max: 28 + AllowSubject: true + Exclude: + - 'spec/migrations/**/*.rb' + - 'spec/lib/gitlab/background_migration/populate_project_snippet_statistics_spec.rb' + - 'spec/lib/gitlab/background_migration/populate_finding_uuid_for_vulnerability_feedback_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/populate_uuids_for_security_findings_spec.rb' + - 'ee/spec/lib/gitlab/background_migration/user_mentions/create_resource_user_mention_spec.rb' + Naming/FileName: ExpectMatchingDefinition: true Exclude: @@ -240,7 +254,7 @@ Gitlab/Json: - 'db/**/*' - 'qa/**/*' - 'scripts/**/*' - - 'lib/rspec_flaky/**/*' + - 'tooling/rspec_flaky/**/*' - 'lib/quality/**/*' - 'tooling/danger/**/*' @@ -595,3 +609,23 @@ FactoryBot/InlineAssociation: Include: - 'spec/factories/**/*.rb' - 'ee/spec/factories/**/*.rb' + +# WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/321982 +Gitlab/NamespacedClass: + Exclude: + - 'config/**/*.rb' + - 'db/**/*.rb' + - 'ee/bin/**/*' + - 'ee/db/**/*.rb' + - 'ee/elastic/**/*.rb' + - 'scripts/**/*' + - 'spec/migrations/**/*.rb' + +Lint/HashCompareByIdentity: + Enabled: true + +Lint/RedundantSafeNavigation: + Enabled: true + +Style/ClassEqualityComparison: + Enabled: true diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 477d9adec40..4572078e721 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -10,10 +10,40 @@ # - guidelines for use found in # https://docs.gitlab.com/ee/development/contributing/style_guides.html#resolving-rubocop-exceptions. +# WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/322903 +Graphql/Descriptions: + Exclude: + - 'app/graphql/types/access_level_enum.rb' + - 'app/graphql/types/base_enum.rb' + - 'app/graphql/types/ci/pipeline_config_source_enum.rb' + - 'app/graphql/types/ci/pipeline_status_enum.rb' + - 'app/graphql/types/container_expiration_policy_cadence_enum.rb' + - 'app/graphql/types/container_expiration_policy_keep_enum.rb' + - 'app/graphql/types/container_expiration_policy_older_than_enum.rb' + - 'app/graphql/types/notes/position_type_enum.rb' + - 'app/graphql/types/packages/package_type_enum.rb' + - 'app/graphql/types/snippets/blob_action_enum.rb' + - 'app/graphql/types/snippets/type_enum.rb' + - 'app/graphql/types/snippets/visibility_scopes_enum.rb' + - 'app/graphql/types/todo_action_enum.rb' + - 'app/graphql/types/tree/type_enum.rb' + - 'ee/app/graphql/ee/types/list_limit_metric_enum.rb' + - 'ee/app/graphql/types/alert_management/payload_alert_field_name_enum.rb' + - 'ee/app/graphql/types/epic_state_enum.rb' + - 'ee/app/graphql/types/health_status_enum.rb' + - 'ee/app/graphql/types/iteration_state_enum.rb' + - 'ee/app/graphql/types/requirements_management/requirement_state_enum.rb' + - 'ee/app/graphql/types/requirements_management/test_report_state_enum.rb' + - 'ee/app/graphql/types/security_scanner_type_enum.rb' + - 'ee/app/graphql/types/vulnerability/issue_link_type_enum.rb' + - 'ee/app/graphql/types/vulnerability_grade_enum.rb' + - 'ee/app/graphql/types/vulnerability_report_type_enum.rb' + - 'ee/app/graphql/types/vulnerability_severity_enum.rb' + - 'ee/app/graphql/types/vulnerability_state_enum.rb' + +# WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/267606 FactoryBot/InlineAssociation: Exclude: - - 'ee/spec/factories/analytics/cycle_analytics/group_stages.rb' - - 'ee/spec/factories/geo/event_log.rb' - 'ee/spec/factories/merge_request_blocks.rb' - 'ee/spec/factories/vulnerabilities/feedback.rb' - 'spec/factories/atlassian_identities.rb' @@ -25,42 +55,8 @@ FactoryBot/InlineAssociation: - 'spec/factories/go_modules.rb' - 'spec/factories/group_group_links.rb' - 'spec/factories/import_export_uploads.rb' - - 'spec/factories/uploads.rb' - - 'spec/factories/wiki_pages.rb' - -InternalAffairs/DeprecateCopHelper: # issue to resolve: https://gitlab.com/gitlab-org/gitlab/-/issues/276734 - Exclude: - - 'spec/rubocop/cop/migration/safer_boolean_column_spec.rb' - - 'spec/rubocop/cop/migration/remove_index_spec.rb' - - 'spec/rubocop/cop/migration/add_index_spec.rb' - - 'spec/rubocop/cop/migration/drop_table_spec.rb' - - 'spec/rubocop/cop/migration/hash_index_spec.rb' - - 'spec/rubocop/cop/migration/datetime_spec.rb' - - 'spec/rubocop/cop/migration/add_column_with_default_spec.rb' - - 'spec/rubocop/cop/migration/prevent_strings_spec.rb' - - 'spec/rubocop/cop/migration/add_timestamps_spec.rb' - - 'spec/rubocop/cop/migration/add_concurrent_index_spec.rb' - - 'spec/rubocop/cop/migration/update_column_in_batches_spec.rb' - - 'spec/rubocop/cop/migration/complex_indexes_require_name_spec.rb' - - 'spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb' - - 'spec/rubocop/cop/migration/schedule_async_spec.rb' - - 'spec/rubocop/cop/migration/timestamps_spec.rb' - - 'spec/rubocop/cop/migration/remove_concurrent_index_spec.rb' - - 'spec/rubocop/cop/migration/add_columns_to_wide_tables_spec.rb' - - 'spec/rubocop/cop/migration/with_lock_retries_disallowed_method_spec.rb' - - 'spec/rubocop/cop/migration/add_reference_spec.rb' - - 'spec/rubocop/cop/migration/remove_column_spec.rb' - - 'spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb' - - 'spec/rubocop/cop/migration/add_concurrent_foreign_key_spec.rb' - - 'spec/rubocop/cop/migration/with_lock_retries_with_change_spec.rb' - - 'spec/rubocop/cop/migration/add_limit_to_text_columns_spec.rb' - - 'spec/rubocop/cop/avoid_return_from_blocks_spec.rb' - - 'spec/rubocop/cop/avoid_route_redirect_leading_slash_spec.rb' - - 'spec/rubocop/cop/put_group_routes_under_scope_spec.rb' - - 'spec/rubocop/cop/sidekiq_options_queue_spec.rb' - - 'spec/rubocop/cop/ignored_columns_spec.rb' - - 'spec/rubocop/cop/prefer_class_methods_over_module_spec.rb' +# WIP: See https://gitlab.com/gitlab-org/gitlab/-/issues/220040 Rails/SaveBang: Exclude: - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb' @@ -516,8 +512,8 @@ Rails/TimeZone: - 'lib/json_web_token/token.rb' - 'lib/object_storage/direct_upload.rb' - 'lib/quality/seeders/issues.rb' - - 'lib/rspec_flaky/flaky_example.rb' - - 'lib/rspec_flaky/report.rb' + - 'tooling/rspec_flaky/flaky_example.rb' + - 'tooling/rspec_flaky/report.rb' - 'lib/tasks/gitlab/assets.rake' - 'lib/tasks/gitlab/backup.rake' - 'lib/tasks/gitlab/cleanup.rake' @@ -583,9 +579,9 @@ Rails/TimeZone: - 'spec/lib/gitlab/x509/signature_spec.rb' - 'spec/lib/grafana/time_window_spec.rb' - 'spec/lib/json_web_token/hmac_token_spec.rb' - - 'spec/lib/rspec_flaky/flaky_example_spec.rb' - - 'spec/lib/rspec_flaky/listener_spec.rb' - - 'spec/lib/rspec_flaky/report_spec.rb' + - 'spec/tooling/rspec_flaky/flaky_example_spec.rb' + - 'spec/tooling/rspec_flaky/listener_spec.rb' + - 'spec/tooling/rspec_flaky/report_spec.rb' RSpec/TimecopFreeze: Exclude: @@ -658,8 +654,8 @@ RSpec/TimecopFreeze: - 'spec/lib/gitlab/puma_logging/json_formatter_spec.rb' - 'spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb' - 'spec/lib/json_web_token/hmac_token_spec.rb' - - 'spec/lib/rspec_flaky/flaky_example_spec.rb' - - 'spec/lib/rspec_flaky/listener_spec.rb' + - 'spec/tooling/rspec_flaky/flaky_example_spec.rb' + - 'spec/tooling/rspec_flaky/listener_spec.rb' - 'spec/models/active_session_spec.rb' - 'spec/serializers/entity_date_helper_spec.rb' - 'spec/support/cycle_analytics_helpers/test_generation.rb' @@ -812,7 +808,7 @@ RSpec/AnyInstanceOf: - 'ee/spec/services/slash_commands/global_slack_handler_spec.rb' - 'ee/spec/support/helpers/ee/stub_configuration.rb' - 'ee/spec/support/shared_examples/controllers/analytics/cycle_analytics/shared_stage_shared_examples.rb' - - 'ee/spec/support/shared_examples/features/gold_trial_callout_shared_examples.rb' + - 'ee/spec/support/shared_examples/features/ultimate_trial_callout_shared_examples.rb' - 'ee/spec/support/shared_examples/lib/gitlab/geo/geo_logs_event_source_info_shared_examples.rb' - 'ee/spec/support/shared_examples/models/member_shared_examples.rb' - 'ee/spec/support/shared_examples/services/base_sync_service_shared_examples.rb' @@ -1207,22 +1203,9 @@ RSpec/AnyInstanceOf: - 'spec/workers/wait_for_cluster_creation_worker_spec.rb' - 'ee/spec/workers/security/auto_fix_worker_spec.rb' +# WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/321982 Gitlab/NamespacedClass: Exclude: - - 'config/**/*.rb' - - 'db/**/*.rb' - - 'ee/bin/**/*' - - 'ee/db/**/*.rb' - - 'ee/elastic/**/*.rb' - - 'scripts/**/*' - - 'spec/migrations/**/*.rb' - # The list above represents the permanent exclusions for this rule - # due to the fact these files are related to infrastructure code. - # This list should eventually be moved to .rubocop.yml after all TODOs - # are addressed. - # - # The list below represents the classes that require - # a namespace as they make the domain related code. - 'app/channels/issues_channel.rb' - 'app/controllers/abuse_reports_controller.rb' - 'app/controllers/acme_challenges_controller.rb' @@ -2021,7 +2004,6 @@ Gitlab/NamespacedClass: - 'app/validators/untrusted_regexp_validator.rb' - 'app/validators/nested_attributes_duplicates_validator.rb' - 'app/validators/x509_certificate_credentials_validator.rb' - - 'app/validators/zoom_url_validator.rb' - 'app/workers/admin_email_worker.rb' - 'app/workers/approve_blocked_pending_approval_users_worker.rb' - 'app/workers/archive_trace_worker.rb' @@ -2296,6 +2278,7 @@ Gitlab/NamespacedClass: - 'ee/app/policies/instance_security_dashboard_policy.rb' - 'ee/app/policies/issuable_metric_image_policy.rb' - 'ee/app/policies/iteration_policy.rb' + - 'ee/app/policies/push_rule_policy.rb' - 'ee/app/policies/saml_provider_policy.rb' - 'ee/app/policies/timelog_policy.rb' - 'ee/app/policies/vulnerability_policy.rb' @@ -2372,7 +2355,6 @@ Gitlab/NamespacedClass: - 'ee/app/serializers/vulnerability_note_serializer.rb' - 'ee/app/serializers/vulnerability_serializer.rb' - 'ee/app/services/clear_namespace_shared_runners_minutes_service.rb' - - 'ee/app/services/fetch_subscription_plans_service.rb' - 'ee/app/services/ldap_group_reset_service.rb' - 'ee/app/services/start_pull_mirroring_service.rb' - 'ee/app/services/timebox_report_service.rb' @@ -2473,3 +2455,60 @@ Gitlab/NamespacedClass: - 'spec/support/sidekiq_middleware.rb' - 'spec/tasks/gitlab/task_helpers_spec.rb' - 'spec/uploaders/object_storage_spec.rb' + +# WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/322739 +Style/HashTransformation: + Exclude: + - 'app/controllers/projects/branches_controller.rb' + - 'app/finders/ci/commit_statuses_finder.rb' + - 'app/helpers/learn_gitlab_helper.rb' + - 'app/models/ci/build_trace_chunk.rb' + - 'app/models/concerns/cache_markdown_field.rb' + - 'app/models/gpg_key.rb' + - 'app/presenters/packages/npm/package_presenter.rb' + - 'app/services/ci/pipeline_processing/atomic_processing_service/status_collection.rb' + - 'app/services/ci/retry_build_service.rb' + - 'app/services/packages/nuget/create_dependency_service.rb' + - 'ee/app/models/ee/ci/build.rb' + - 'ee/app/models/productivity_analytics.rb' + - 'ee/app/models/sca/license_compliance.rb' + - 'ee/app/services/security/store_report_service.rb' + - 'ee/lib/ee/gitlab/auth/ldap/sync/group.rb' + - 'ee/lib/ee/gitlab/usage_data.rb' + - 'ee/lib/gitlab/custom_file_templates.rb' + - 'ee/spec/elastic_integration/global_search_spec.rb' + - 'ee/spec/lib/ee/gitlab/application_context_spec.rb' + - 'lib/api/helpers/packages/conan/api_helpers.rb' + - 'lib/api/projects.rb' + - 'lib/atlassian/jira_connect/client.rb' + - 'lib/banzai/filter/repository_link_filter.rb' + - 'lib/gitlab/ci/config/entry/product/variables.rb' + - 'lib/gitlab/ci/config/entry/variables.rb' + - 'lib/gitlab/ci/variables/collection.rb' + - 'lib/gitlab/ci/variables/helpers.rb' + - 'lib/gitlab/git/commit.rb' + - 'lib/gitlab/import_sources.rb' + - 'lib/gitlab/language_detection.rb' + - 'lib/gitlab/metrics/samplers/database_sampler.rb' + - 'lib/gitlab/metrics/subscribers/active_record.rb' + - 'lib/gitlab/phabricator_import/project_creator.rb' + - 'lib/gitlab/prometheus_client.rb' + - 'lib/gitlab/repository_hash_cache.rb' + - 'lib/gitlab/static_site_editor/config/file_config.rb' + - 'lib/gitlab/template/base_template.rb' + - 'lib/gitlab/usage_data_counters/base_counter.rb' + - 'lib/gitlab/usage_data_counters/note_counter.rb' + - 'spec/lib/atlassian/jira_connect/serializers/pull_request_entity_spec.rb' + - 'spec/lib/gitlab/ci/status/composite_spec.rb' + - 'spec/lib/gitlab/conflict/file_spec.rb' + - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb' + - 'spec/models/concerns/featurable_spec.rb' + - 'spec/models/event_spec.rb' + - 'spec/models/packages/dependency_spec.rb' + - 'spec/requests/api/graphql/project/alert_management/alert/assignees_spec.rb' + - 'spec/requests/api/graphql/project/alert_management/alert/notes_spec.rb' + - 'spec/requests/api/graphql/project/alert_management/alert/todos_spec.rb' + - 'spec/requests/api/projects_spec.rb' + - 'spec/support/helpers/graphql_helpers.rb' + - 'spec/support/import_export/project_tree_expectations.rb' + - 'spec/support/shared_contexts/services/projects/container_repository/delete_tags_service_shared_context.rb' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 0189a3d6372..deb7f287f76 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,17 +1,17 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2021-01-11 15:49:32 UTC using RuboCop version 0.91.1. +# on 2021-02-24 14:52:20 UTC using RuboCop version 0.93.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 313 +# Offense count: 314 # Cop supports --auto-correct. Capybara/CurrentPathExpectation: Enabled: false -# Offense count: 218 +# Offense count: 221 Capybara/VisibilityMatcher: Enabled: false @@ -25,7 +25,7 @@ Graphql/IDType: Exclude: - 'app/graphql/mutations/boards/issues/issue_move_list.rb' -# Offense count: 2054 +# Offense count: 2270 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: with_first_argument, with_fixed_indentation @@ -50,28 +50,28 @@ Layout/BeginEndAlignment: - 'lib/gitlab/phabricator_import/project_creator.rb' - 'scripts/gitaly_test.rb' -# Offense count: 52 +# Offense count: 54 # Cop supports --auto-correct. # Configuration parameters: AllowAliasSyntax, AllowedMethods. # AllowedMethods: alias_method, public, protected, private Layout/EmptyLinesAroundAttributeAccessor: Enabled: false -# Offense count: 721 +# Offense count: 771 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: special_inside_parentheses, consistent, align_brackets Layout/FirstArrayElementIndentation: Enabled: false -# Offense count: 1592 +# Offense count: 1684 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: special_inside_parentheses, consistent, align_braces Layout/FirstHashElementIndentation: Enabled: false -# Offense count: 3019 +# Offense count: 3233 # Cop supports --auto-correct. # Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle. # SupportedHashRocketStyles: key, separator, table @@ -80,14 +80,14 @@ Layout/FirstHashElementIndentation: Layout/HashAlignment: Enabled: false -# Offense count: 73 +# Offense count: 14544 # Cop supports --auto-correct. # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. # URISchemes: http, https Layout/LineLength: Max: 1313 -# Offense count: 163 +# Offense count: 170 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: aligned, indented @@ -113,22 +113,23 @@ Layout/RescueEnsureAlignment: Layout/SpaceAroundMethodCallOperator: Enabled: false -# Offense count: 725 +# Offense count: 754 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: require_no_space, require_space Layout/SpaceInLambdaLiteral: Enabled: false -# Offense count: 218 +# Offense count: 1209 # Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters. +# Configuration parameters: EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters. # SupportedStyles: space, no_space # SupportedStylesForEmptyBraces: space, no_space Layout/SpaceInsideBlockBraces: Enabled: false + EnforcedStyle: space -# Offense count: 559 +# Offense count: 585 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: space, no_space @@ -141,7 +142,6 @@ Lint/BinaryOperatorWithIdenticalOperands: - 'ee/spec/lib/ee/gitlab/application_context_spec.rb' - 'spec/helpers/visibility_level_helper_spec.rb' - 'spec/lib/gitlab/conan_token_spec.rb' - - 'spec/tooling/danger/sidekiq_queues_spec.rb' - 'spec/lib/gitlab/git/conflict/parser_spec.rb' - 'spec/lib/gitlab/graphql/lazy_spec.rb' - 'spec/models/ci/build_trace_chunk_spec.rb' @@ -150,8 +150,9 @@ Lint/BinaryOperatorWithIdenticalOperands: - 'spec/models/metrics/dashboard/annotation_spec.rb' - 'spec/models/repository_spec.rb' - 'spec/models/ssh_host_key_spec.rb' + - 'spec/tooling/danger/sidekiq_queues_spec.rb' -# Offense count: 83 +# Offense count: 84 Lint/ConstantDefinitionInBlock: Enabled: false @@ -174,12 +175,12 @@ Lint/IdentityComparison: - 'spec/tooling/danger/weightage/maintainers_spec.rb' - 'spec/tooling/danger/weightage/reviewers_spec.rb' -# Offense count: 184 +# Offense count: 208 # Configuration parameters: MaximumRangeSize. Lint/MissingCopEnableDirective: Enabled: false -# Offense count: 14 +# Offense count: 13 Lint/MixedRegexpCaptureTypes: Exclude: - 'app/models/alert_management/alert.rb' @@ -188,7 +189,6 @@ Lint/MixedRegexpCaptureTypes: - 'ee/lib/gitlab/code_owners/reference_extractor.rb' - 'lib/gitlab/ci/pipeline/expression/lexeme/string.rb' - 'lib/gitlab/dependency_linker/gemfile_linker.rb' - - 'lib/gitlab/diff/inline_diff.rb' - 'lib/gitlab/diff/suggestions_parser.rb' - 'lib/gitlab/github_import/representation/note.rb' - 'lib/gitlab/metrics/system.rb' @@ -197,11 +197,26 @@ Lint/MixedRegexpCaptureTypes: - 'lib/gitlab/slash_commands/issue_new.rb' - 'lib/gitlab/slash_commands/run.rb' -# Offense count: 141 +# Offense count: 200 # Cop supports --auto-correct. Lint/RedundantCopDisableDirective: Enabled: false +# Offense count: 9 +# Cop supports --auto-correct. +# Configuration parameters: AllowedMethods. +# AllowedMethods: instance_of?, kind_of?, is_a?, eql?, respond_to?, equal? +Lint/RedundantSafeNavigation: + Exclude: + - 'app/controllers/concerns/labels_as_hash.rb' + - 'app/policies/note_policy.rb' + - 'app/services/users/update_canonical_email_service.rb' + - 'ee/app/presenters/iteration_presenter.rb' + - 'ee/app/services/ee/members/destroy_service.rb' + - 'ee/lib/ee/gitlab/email/handler/reply_processing.rb' + - 'qa/qa/specs/helpers/quarantine.rb' + - 'spec/controllers/boards/issues_controller_spec.rb' + # Offense count: 1 Lint/SelfAssignment: Exclude: @@ -225,57 +240,20 @@ Lint/UnreachableLoop: Lint/UselessMethodDefinition: Enabled: false -# Offense count: 7 -# Configuration parameters: IgnoredMethods, Max. +# Offense count: 5 +# Configuration parameters: IgnoredMethods. Metrics/AbcSize: - Exclude: - - 'app/helpers/issuables_helper.rb' - - 'app/services/merge_requests/build_service.rb' - - 'app/services/projects/create_service.rb' - - 'lib/api/helpers.rb' - - 'lib/gitlab/lograge/custom_options.rb' - - 'lib/gitlab/rack_attack.rb' - - 'qa/qa/resource/repository/push.rb' + Max: 61 -# Offense count: 15 -# Configuration parameters: IgnoredMethods, Max. +# Offense count: 13 +# Configuration parameters: IgnoredMethods. Metrics/CyclomaticComplexity: - Exclude: - - 'app/services/projects/create_service.rb' - - 'app/services/system_hooks_service.rb' - - 'ee/app/controllers/ee/groups_controller.rb' - - 'ee/app/helpers/ee/groups_helper.rb' - - 'ee/lib/security/ci_configuration/sast_build_actions.rb' - - 'lib/banzai/filter/abstract_reference_filter.rb' - - 'lib/declarative_policy/runner.rb' - - 'lib/gitlab/conflict/file.rb' - - 'tooling/danger/roulette.rb' - - 'lib/gitlab/diff/parser.rb' - - 'lib/gitlab/rack_attack.rb' - - 'lib/gitlab/sidekiq_cluster/cli.rb' - - 'lib/gitlab/utils/merge_hash.rb' - - 'lib/kramdown/parser/atlassian_document_format.rb' - - 'spec/support/cycle_analytics_helpers/test_generation.rb' + Max: 25 -# Offense count: 15 -# Configuration parameters: IgnoredMethods, Max. +# Offense count: 14 +# Configuration parameters: IgnoredMethods. Metrics/PerceivedComplexity: - Exclude: - - 'app/helpers/submodule_helper.rb' - - 'app/helpers/tab_helper.rb' - - 'app/services/projects/create_service.rb' - - 'ee/app/controllers/ee/groups_controller.rb' - - 'ee/app/helpers/ee/groups_helper.rb' - - 'ee/lib/security/ci_configuration/sast_build_actions.rb' - - 'lib/banzai/filter/abstract_reference_filter.rb' - - 'lib/banzai/renderer.rb' - - 'lib/declarative_policy/runner.rb' - - 'lib/gitlab/conflict/file.rb' - - 'tooling/danger/roulette.rb' - - 'lib/gitlab/rack_attack.rb' - - 'lib/gitlab/sidekiq_cluster/cli.rb' - - 'lib/gitlab/utils/merge_hash.rb' - - 'spec/support/cycle_analytics_helpers/test_generation.rb' + Max: 25 # Offense count: 1 # Cop supports --auto-correct. @@ -283,7 +261,7 @@ Migration/DepartmentName: Exclude: - 'app/models/commit.rb' -# Offense count: 184 +# Offense count: 196 # Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, Regex, IgnoreExecutableScripts, AllowedAcronyms. # AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS Naming/FileName: @@ -300,7 +278,7 @@ Naming/HeredocDelimiterCase: - 'spec/support/helpers/repo_helpers.rb' - 'spec/support/helpers/seed_repo.rb' -# Offense count: 308 +# Offense count: 321 # Configuration parameters: ForbiddenDelimiters. # ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$)) Naming/HeredocDelimiterNaming: @@ -314,7 +292,7 @@ Naming/MethodParameterName: - 'lib/gitlab/diff/inline_diff.rb' - 'spec/support/helpers/key_generator_helper.rb' -# Offense count: 206 +# Offense count: 218 # Cop supports --auto-correct. # Configuration parameters: PreferredName. Naming/RescuedExceptionsVariableName: @@ -326,17 +304,17 @@ Performance/AncestorsInclude: Exclude: - 'lib/gitlab/ci/config/extendable/entry.rb' -# Offense count: 39 +# Offense count: 40 # Cop supports --auto-correct. Performance/BlockGivenWithExplicitBlock: Enabled: false -# Offense count: 28 +# Offense count: 29 # Configuration parameters: MinSize. Performance/CollectionLiteralInLoop: Enabled: false -# Offense count: 37 +# Offense count: 41 # Cop supports --auto-correct. Performance/ConstantRegexp: Enabled: false @@ -382,7 +360,6 @@ Performance/DeleteSuffix: - 'app/workers/concerns/application_worker.rb' - 'ee/app/models/geo/upload_registry.rb' - 'ee/app/workers/geo/file_download_dispatch_worker/attachment_job_finder.rb' - - 'lib/sentry/client/issue.rb' # Offense count: 13 # Cop supports --auto-correct. @@ -395,7 +372,7 @@ Performance/Detect: - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb' - 'spec/models/event_spec.rb' -# Offense count: 116 +# Offense count: 121 Performance/MethodObjectAsBlock: Enabled: false @@ -439,7 +416,7 @@ Performance/Sum: - 'lib/peek/views/detailed_view.rb' - 'spec/models/namespace/root_storage_statistics_spec.rb' -# Offense count: 14717 +# Offense count: 15209 # Configuration parameters: Prefixes. # Prefixes: when, with, without RSpec/ContextWording: @@ -452,22 +429,17 @@ RSpec/EmptyExampleGroup: - 'ee/spec/services/personal_access_tokens/revoke_invalid_tokens_spec.rb' - 'spec/services/projects/prometheus/alerts/notify_service_spec.rb' -# Offense count: 1365 +# Offense count: 1428 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: method_call, block RSpec/ExpectChange: Enabled: false -# Offense count: 889 +# Offense count: 930 RSpec/ExpectInHook: Enabled: false -# Offense count: 16403 -# Configuration parameters: AllowSubject. -RSpec/MultipleMemoizedHelpers: - Max: 40 - # Offense count: 2352 # Cop supports --auto-correct. # Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers. @@ -475,27 +447,27 @@ RSpec/MultipleMemoizedHelpers: RSpec/PredicateMatcher: Enabled: false -# Offense count: 112 +# Offense count: 118 RSpec/RepeatedExampleGroupBody: Enabled: false -# Offense count: 219 +# Offense count: 225 RSpec/RepeatedExampleGroupDescription: Enabled: false -# Offense count: 655 +# Offense count: 667 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: and_return, block RSpec/ReturnFromStub: Enabled: false -# Offense count: 596 +# Offense count: 610 # Cop supports --auto-correct. RSpec/ScatteredLet: Enabled: false -# Offense count: 6 +# Offense count: 4 RSpec/ScatteredSetup: Exclude: - 'spec/requests/api/jobs_spec.rb' @@ -520,7 +492,7 @@ RSpec/VariableName: - 'spec/support/shared_examples/requests/api/graphql/group_and_project_boards_query_shared_examples.rb' - 'spec/support/shared_examples/services/boards/boards_list_service_shared_examples.rb' -# Offense count: 25 +# Offense count: 26 # Cop supports --auto-correct. # Configuration parameters: Include. # Include: app/models/**/*.rb @@ -549,25 +521,25 @@ Rails/BelongsTo: - 'app/models/deployment.rb' - 'app/models/environment.rb' -# Offense count: 90 +# Offense count: 93 # Configuration parameters: Database, Include. # SupportedDatabases: mysql, postgresql # Include: db/migrate/*.rb Rails/BulkChangeTable: Enabled: false -# Offense count: 153 +# Offense count: 155 # Cop supports --auto-correct. Rails/ContentTag: Enabled: false -# Offense count: 300 +# Offense count: 313 # Configuration parameters: Include. # Include: db/migrate/*.rb Rails/CreateTableWithTimestamps: Enabled: false -# Offense count: 347 +# Offense count: 361 # Configuration parameters: EnforcedStyle. # SupportedStyles: slashes, arguments Rails/FilePath: @@ -589,13 +561,13 @@ Rails/FindById: - 'spec/finders/concerns/finder_methods_spec.rb' - 'spec/finders/concerns/finder_with_cross_project_access_spec.rb' -# Offense count: 346 +# Offense count: 354 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/HasManyOrHasOneDependent: Enabled: false -# Offense count: 539 +# Offense count: 537 # Configuration parameters: Include. # Include: app/helpers/**/*.rb Rails/HelperInstanceVariable: @@ -615,11 +587,11 @@ Rails/IndexBy: - 'ee/lib/gitlab/analytics/type_of_work/tasks_by_type.rb' - 'ee/lib/gitlab/elastic/document_reference.rb' - 'ee/lib/gitlab/group_plans_preloader.rb' - - 'tooling/danger/sidekiq_queues.rb' - 'lib/gitlab/database/count/reltuples_count_strategy.rb' - 'lib/gitlab/language_detection.rb' + - 'tooling/danger/sidekiq_queues.rb' -# Offense count: 45 +# Offense count: 47 # Cop supports --auto-correct. Rails/IndexWith: Enabled: false @@ -629,24 +601,23 @@ Rails/Inquiry: Exclude: - 'spec/helpers/labels_helper_spec.rb' -# Offense count: 115 +# Offense count: 118 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/InverseOf: Enabled: false -# Offense count: 60 +# Offense count: 62 # Configuration parameters: Include. # Include: app/controllers/**/*.rb Rails/LexicallyScopedActionFilter: Enabled: false -# Offense count: 3 +# Offense count: 2 # Cop supports --auto-correct. Rails/LinkToBlank: Exclude: - 'app/helpers/projects_helper.rb' - - 'app/helpers/wiki_helper.rb' - 'ee/app/helpers/ee/user_callouts_helper.rb' # Offense count: 1 @@ -662,12 +633,12 @@ Rails/MailerName: Rails/NegateInclude: Enabled: false -# Offense count: 44 +# Offense count: 46 # Cop supports --auto-correct. Rails/Pick: Enabled: false -# Offense count: 110 +# Offense count: 123 # Cop supports --auto-correct. Rails/Pluck: Enabled: false @@ -679,7 +650,7 @@ Rails/Pluck: Rails/RakeEnvironment: Enabled: false -# Offense count: 58 +# Offense count: 62 # Cop supports --auto-correct. Rails/RedundantForeignKey: Enabled: false @@ -699,23 +670,23 @@ Rails/ShortI18n: - 'app/uploaders/content_type_whitelist.rb' - 'spec/views/shared/runners/show.html.haml_spec.rb' -# Offense count: 1080 +# Offense count: 1144 # Configuration parameters: ForbiddenMethods, AllowedMethods. # ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, insert, insert!, insert_all, insert_all!, toggle!, touch, touch_all, update_all, update_attribute, update_column, update_columns, update_counters, upsert, upsert_all Rails/SkipsModelValidations: Enabled: false -# Offense count: 251 +# Offense count: 278 # Cop supports --auto-correct. Rails/SquishedSQLHeredocs: Enabled: false -# Offense count: 45 +# Offense count: 44 # Cop supports --auto-correct. Rails/WhereEquals: Enabled: false -# Offense count: 40 +# Offense count: 44 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: exists, where @@ -744,7 +715,7 @@ Security/YAMLLoad: Style/AccessorGrouping: Enabled: false -# Offense count: 12 +# Offense count: 11 # Cop supports --auto-correct. Style/ArrayCoercion: Exclude: @@ -756,12 +727,11 @@ Style/ArrayCoercion: - 'db/post_migrate/20200311130802_schedule_populate_user_highest_roles_table.rb' - 'db/post_migrate/20200805152108_migrate_null_external_diff_store_to_local_value.rb' - 'db/post_migrate/20200806173633_migrate_null_package_files_file_store_to_local_value.rb' - - 'ee/app/services/geo/blob_verification_secondary_service.rb' - 'ee/app/services/geo/repository_verification_secondary_service.rb' - 'ee/lib/ee/banzai/pipeline/gfm_pipeline.rb' - 'spec/support/helpers/lfs_http_helpers.rb' -# Offense count: 183 +# Offense count: 188 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: percent_q, bare_percent @@ -775,20 +745,35 @@ Style/BisectedAttrAccessor: - 'lib/system_check/base_check.rb' - 'qa/qa/resource/api_fabricator.rb' -# Offense count: 36 +# Offense count: 42 # Cop supports --auto-correct. Style/CaseLikeIf: Enabled: false -# Offense count: 15 +# Offense count: 10 +# Cop supports --auto-correct. +# Configuration parameters: IgnoredMethods. +# IgnoredMethods: ==, equal?, eql? +Style/ClassEqualityComparison: + Exclude: + - 'app/finders/security/jobs_finder.rb' + - 'app/services/projects/overwrite_project_service.rb' + - 'app/uploaders/dependency_proxy/file_uploader.rb' + - 'ee/app/graphql/resolvers/vulnerabilities/issue_links_resolver.rb' + - 'lib/gitlab/background_migration/user_mentions/models/note.rb' + - 'lib/gitlab/diff/file.rb' + - 'lib/gitlab/git.rb' + - 'lib/gitlab/import_export/relation_tree_restorer.rb' + - 'spec/requests/api/services_spec.rb' + - 'spec/support/shared_examples/lib/gitlab/import_export/relation_factory_shared_examples.rb' + +# Offense count: 13 Style/CombinableLoops: Exclude: - - 'app/models/application_setting.rb' - 'ee/db/fixtures/development/30_customizable_cycle_analytics.rb' - 'ee/lib/gitlab/audit/events/preloader.rb' - 'ee/spec/finders/snippets_finder_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/remove_duplicate_cs_findings_spec.rb' - - 'rubocop/code_reuse_helpers.rb' - 'spec/features/merge_request/user_suggests_changes_on_diff_spec.rb' - 'spec/finders/packages/group_packages_finder_spec.rb' - 'spec/migrations/cleanup_optimistic_locking_nulls_pt2_fixed_spec.rb' @@ -814,14 +799,14 @@ Style/EachWithObject: - 'lib/gitlab/i18n/po_linter.rb' - 'lib/gitlab/import_export/members_mapper.rb' -# Offense count: 53 +# Offense count: 55 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: empty, nil, both Style/EmptyElse: Enabled: false -# Offense count: 197 +# Offense count: 205 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: compact, expanded @@ -835,66 +820,75 @@ Style/ExpandPathArguments: - 'cable/config.ru' - 'config.ru' -# Offense count: 116 +# Offense count: 118 # Cop supports --auto-correct. Style/ExplicitBlockArgument: Enabled: false -# Offense count: 555 +# Offense count: 581 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: format, sprintf, percent Style/FormatString: Enabled: false -# Offense count: 61 +# Offense count: 67 # Cop supports --auto-correct. Style/GlobalStdStream: Enabled: false -# Offense count: 879 +# Offense count: 897 # Configuration parameters: MinBodyLength. Style/GuardClause: Enabled: false -# Offense count: 56 +# Offense count: 59 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: braces, no_braces Style/HashAsLastArrayItem: Enabled: false -# Offense count: 66 +# Offense count: 70 # Cop supports --auto-correct. Style/HashEachMethods: Enabled: false -# Offense count: 33 +# Offense count: 34 # Configuration parameters: AllowIfModifier. Style/IfInsideElse: Enabled: false -# Offense count: 1888 +# Offense count: 1934 # Cop supports --auto-correct. Style/IfUnlessModifier: Enabled: false -# Offense count: 68 +# Offense count: 64 # Cop supports --auto-correct. Style/KeywordParametersOrder: Enabled: false -# Offense count: 431 +# Offense count: 458 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: line_count_dependent, lambda, literal Style/Lambda: Enabled: false -# Offense count: 20 +# Offense count: 21 Style/MissingRespondToMissing: Enabled: false +# Offense count: 5 +Style/MixinUsage: + Exclude: + - 'spec/factories/ci/builds.rb' + - 'spec/factories/ci/job_artifacts.rb' + - 'spec/factories/lfs_objects.rb' + - 'spec/factories/notes.rb' + - 'spec/lib/gitlab/import_export/version_checker_spec.rb' + # Offense count: 35 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, MinBodyLength. @@ -902,36 +896,44 @@ Style/MissingRespondToMissing: Style/Next: Enabled: false -# Offense count: 98 +# Offense count: 101 # Cop supports --auto-correct. # Configuration parameters: EnforcedOctalStyle. # SupportedOctalStyles: zero_with_o, zero_only Style/NumericLiteralPrefix: Enabled: false -# Offense count: 135 +# Offense count: 140 # Cop supports --auto-correct. Style/ParallelAssignment: Enabled: false -# Offense count: 2601 +# Offense count: 2698 # Cop supports --auto-correct. # Configuration parameters: PreferredDelimiters. Style/PercentLiteralDelimiters: Enabled: false -# Offense count: 1 +# Offense count: 247 # Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle. +# Configuration parameters: . # SupportedStyles: compact, exploded Style/RaiseArgs: Enabled: false + EnforcedStyle: exploded -# Offense count: 65 +# Offense count: 73 # Cop supports --auto-correct. Style/RedundantAssignment: Enabled: false +# Offense count: 2 +# Cop supports --auto-correct. +Style/RedundantBegin: + Exclude: + - 'app/services/clusters/applications/check_installation_progress_service.rb' + - 'lib/gitlab/database/postgres_hll/batch_distinct_counter.rb' + # Offense count: 26 # Cop supports --auto-correct. # Configuration parameters: SafeForConstants. @@ -949,21 +951,23 @@ Style/RedundantFetchBlock: Style/RedundantFileExtensionInRequire: Enabled: false -# Offense count: 220 +# Offense count: 248 # Cop supports --auto-correct. Style/RedundantFreeze: Enabled: false -# Offense count: 182 +# Offense count: 206 # Cop supports --auto-correct. Style/RedundantInterpolation: Enabled: false -# Offense count: 8 +# Offense count: 10 # Cop supports --auto-correct. Style/RedundantRegexpCharacterClass: Exclude: - 'app/models/concerns/taskable.rb' + - 'ee/app/models/saml_provider.rb' + - 'lib/banzai/filter/markdown_pre_escape_filter.rb' - 'lib/gitlab/authorized_keys.rb' - 'lib/gitlab/fogbugz_import/repository.rb' - 'lib/gitlab/quick_actions/substitution_definition.rb' @@ -971,12 +975,12 @@ Style/RedundantRegexpCharacterClass: - 'spec/features/merge_request/user_views_open_merge_request_spec.rb' - 'spec/tasks/gitlab/usage_data_rake_spec.rb' -# Offense count: 270 +# Offense count: 279 # Cop supports --auto-correct. Style/RedundantRegexpEscape: Enabled: false -# Offense count: 920 +# Offense count: 968 # Cop supports --auto-correct. Style/RedundantSelf: Enabled: false @@ -988,26 +992,26 @@ Style/RedundantSelfAssignment: - 'app/models/concerns/issuable.rb' - 'spec/db/schema_spec.rb' -# Offense count: 196 +# Offense count: 213 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, AllowInnerSlashes. # SupportedStyles: slashes, percent_r, mixed Style/RegexpLiteral: Enabled: false -# Offense count: 50 +# Offense count: 53 # Cop supports --auto-correct. Style/RescueModifier: Enabled: false -# Offense count: 346 +# Offense count: 359 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: implicit, explicit Style/RescueStandardError: Enabled: false -# Offense count: 115 +# Offense count: 123 # Cop supports --auto-correct. Style/SingleArgumentDig: Enabled: false @@ -1017,34 +1021,33 @@ Style/SingleArgumentDig: Style/SlicingWithRange: Enabled: false -# Offense count: 61 +# Offense count: 63 # Configuration parameters: AllowModifier. Style/SoleNestedConditional: Enabled: false -# Offense count: 121 +# Offense count: 120 # Cop supports --auto-correct. # Configuration parameters: . # SupportedStyles: use_perl_names, use_english_names Style/SpecialGlobalVars: EnforcedStyle: use_perl_names -# Offense count: 545 +# Offense count: 562 # Cop supports --auto-correct. Style/StringConcatenation: Enabled: false -# Offense count: 108 +# Offense count: 109 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: single_quotes, double_quotes Style/StringLiteralsInInterpolation: Enabled: false -# Offense count: 292 +# Offense count: 293 # Cop supports --auto-correct. # Configuration parameters: IgnoredMethods. # IgnoredMethods: respond_to, define_method Style/SymbolProc: Enabled: false - diff --git a/.scss-lint.yml b/.scss-lint.yml deleted file mode 100644 index ec193e2a3db..00000000000 --- a/.scss-lint.yml +++ /dev/null @@ -1,277 +0,0 @@ -# Linter Documentation: -# https://github.com/brigade/scss-lint/blob/master/lib/scss_lint/linter/README.md - -scss_files: - - 'app/assets/stylesheets/**/*.scss' - - 'ee/app/assets/stylesheets/**/*.scss' - -exclude: - - 'app/assets/stylesheets/pages/emojis.scss' - - 'app/assets/stylesheets/startup/startup-*.scss' - - 'app/assets/stylesheets/lazy_bundles/select2.scss' - -linters: - # Reports when you use improper spacing around ! (the "bang") in !default, - # !global, !important, and !optional flags. - BangFormat: - enabled: true - - # Whether or not to prefer `border: 0` over `border: none`. - BorderZero: - enabled: true - - # Reports when you define a rule set using a selector with chained classes - # (a.k.a. adjoining classes). - ChainedClasses: - enabled: false - - # Prefer hexadecimal color codes over color keywords. - # (e.g. `color: green` is a color keyword) - ColorKeyword: - enabled: false - - # Prefer color literals (keywords or hexadecimal codes) to be used only in - # variable declarations. They should be referred to via variables everywhere - # else. - ColorVariable: - enabled: true - - # Which form of comments to prefer in CSS. - Comment: - enabled: false - - # Reports @debug statements (which you probably left behind accidentally). - DebugStatement: - enabled: false - - # Rule sets should be ordered as follows: - # - @extend declarations - # - @include declarations without inner @content - # - properties - # - @include declarations with inner @content - # - nested rule sets. - # Disabled to minimize Bootstrap migration footprint - DeclarationOrder: - enabled: false - - # `scss-lint:disable` control comments should be preceded by a comment - # explaining why these linters are being disabled for this file. - # See https://github.com/brigade/scss-lint#disabling-linters-via-source for - # more information. - DisableLinterReason: - enabled: true - - # Reports when you define the same property twice in a single rule set. - DuplicateProperty: - enabled: true - ignore_consecutive: - - cursor - - # Separate rule, function, and mixin declarations with empty lines. - EmptyLineBetweenBlocks: - enabled: true - - # Reports when you have an empty rule set. - EmptyRule: - enabled: true - - # Reports when you have an @extend directive. - ExtendDirective: - enabled: false - - # Files should always have a final newline. This results in better diffs - # when adding lines to the file, since SCM systems such as git won't - # think that you touched the last line. - FinalNewline: - enabled: true - - # HEX colors should use three-character values where possible. - HexLength: - enabled: false - - # HEX color values should use lower-case colors to differentiate between - # letters and numbers, e.g. `#E3E3E3` vs. `#e3e3e3`. - HexNotation: - enabled: true - - # Avoid using ID selectors. - IdSelector: - enabled: false - - # The basenames of @imported SCSS partials should not begin with an - # underscore and should not include the filename extension. - ImportPath: - enabled: true - - # Avoid using !important in properties. It is usually indicative of a - # misunderstanding of CSS specificity and can lead to brittle code. - ImportantRule: - enabled: false - - # Indentation should always be done in increments of 2 spaces. - Indentation: - enabled: true - width: 2 - - # Don't write leading zeros for numeric values with a decimal point. - LeadingZero: - enabled: false - - # Reports when you define the same selector twice in a single sheet. - MergeableSelector: - enabled: true - - # Functions, mixins, variables, and placeholders should be declared - # with all lowercase letters and hyphens instead of underscores. - NameFormat: - enabled: false - - # Avoid nesting selectors too deeply. - NestingDepth: - enabled: true - max_depth: 6 - - # Always use placeholder selectors in @extend. - PlaceholderInExtend: - enabled: false - - # Sort properties in a strict order. - PropertySortOrder: - enabled: false - - # Reports when you use an unknown or disabled CSS property - # (ignoring vendor-prefixed properties). - PropertySpelling: - enabled: true - - # Configure which units are allowed for property values. - PropertyUnits: - enabled: false - - # Pseudo-elements, like ::before, and ::first-letter, should be declared - # with two colons. Pseudo-classes, like :hover and :first-child, should - # be declared with one colon. - PseudoElement: - enabled: true - - # Avoid qualifying elements in selectors (also known as "tag-qualifying"). - QualifyingElement: - enabled: false - - # Don't write selectors with a depth of applicability greater than 3. - SelectorDepth: - enabled: false - - # Selectors should always use hyphenated-lowercase, rather than camelCase or - # snake_case. - SelectorFormat: - enabled: false - convention: hyphenated_lowercase - - # Prefer the shortest shorthand form possible for properties that support it. - Shorthand: - enabled: true - - # Each property should have its own line, except in the special case of - # single line rulesets. - SingleLinePerProperty: - enabled: true - allow_single_line_rule_sets: true - - # Split selectors onto separate lines after each comma, and have each - # individual selector occupy a single line. - SingleLinePerSelector: - enabled: true - - # Commas in lists should be followed by a space. - SpaceAfterComma: - enabled: true - - # Comment literals should be followed by a space. - SpaceAfterComment: - enabled: false - - # Properties should be formatted with a single space separating the colon - # from the property's value. - SpaceAfterPropertyColon: - enabled: true - - # Properties should be formatted with no space between the name and the - # colon. - SpaceAfterPropertyName: - enabled: true - - # Variables should be formatted with a single space separating the colon - # from the variable's value. - SpaceAfterVariableColon: - enabled: true - - # Variables should be formatted with no space between the name and the - # colon. - SpaceAfterVariableName: - enabled: false - - # Operators should be formatted with a single space on both sides of an - # infix operator. - SpaceAroundOperator: - enabled: true - - # Opening braces should be preceded by a single space. - SpaceBeforeBrace: - enabled: true - - # Parentheses should not be padded with spaces. - SpaceBetweenParens: - enabled: false - - # Enforces that string literals should be written with a consistent form - # of quotes (single or double). - StringQuotes: - enabled: false - - # Property values, @extend, @include, and @import directives, and variable - # declarations should always end with a semicolon. - TrailingSemicolon: - enabled: true - - # Reports lines containing trailing whitespace. - TrailingWhitespace: - enabled: true - - # Don't write trailing zeros for numeric values with a decimal point. - TrailingZero: - enabled: false - - # Don't use the `all` keyword to specify transition properties. - TransitionAll: - enabled: false - - # Numeric values should not contain unnecessary fractional portions. - UnnecessaryMantissa: - enabled: true - - # Do not use parent selector references (&) when they would otherwise - # be unnecessary. - UnnecessaryParentReference: - enabled: true - - # URLs should be valid and not contain protocols or domain names. - UrlFormat: - enabled: true - - # URLs should always be enclosed within quotes. - UrlQuotes: - enabled: true - - # Properties, like color and font, are easier to read and maintain - # when defined using variables rather than literals. - VariableForProperty: - enabled: false - - # Avoid vendor prefixes. Or rather: don't write them yourself. - VendorPrefix: - enabled: false - - # Omit length units on zero values, e.g. `0px` vs. `0`. - ZeroUnit: - enabled: true diff --git a/.stylelintrc b/.stylelintrc index b9174d1dca1..c383d75cb03 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -1,58 +1,18 @@ { + "extends": ["@gitlab/stylelint-config"], "ignoreFiles": [ "app/assets/stylesheets/pages/emojis.scss", "app/assets/stylesheets/startup/startup-*.scss", "app/assets/stylesheets/lazy_bundles/select2.scss", - "app/assets/stylesheets/highlight/themes/*.scss" + "app/assets/stylesheets/highlight/themes/*.scss", + "app/assets/stylesheets/lazy_bundles/cropper.css" ], "plugins":[ "./scripts/frontend/stylelint/stylelint-duplicate-selectors.js", "./scripts/frontend/stylelint/stylelint-utility-classes.js", - "stylelint-scss" ], "rules":{ - "at-rule-blacklist":[ - "debug" - ], - "at-rule-no-unknown":null, - "at-rule-no-vendor-prefix":true, - "block-no-empty":true, - "block-opening-brace-space-before":"always", - "color-hex-case":"lower", - "color-hex-length":"short", - "color-named":"never", - "color-no-invalid-hex":true, - "declaration-bang-space-after":"never", - "declaration-bang-space-before":"always", - "declaration-block-semicolon-newline-after":"always", - "declaration-block-semicolon-space-before":"never", - "declaration-block-single-line-max-declarations":1, - "declaration-block-trailing-semicolon":"always", - "declaration-colon-space-after":"always-single-line", - "declaration-colon-space-before":"never", - "declaration-property-value-blacklist":{ - "border":[ - "none" - ], - "border-top":[ - "none" - ], - "border-right":[ - "none" - ], - "border-bottom":[ - "none" - ], - "border-left":[ - "none" - ] - }, - "function-comma-space-after":"always-single-line", - "function-parentheses-space-inside":"never", - "function-url-quotes":"always", - "indentation":2, - "length-zero-no-unit":true, - "max-nesting-depth":[ + "max-nesting-depth": [ 6, { "ignoreAtRules":[ @@ -64,54 +24,7 @@ "severity":"warning" } ], - "media-feature-name-no-vendor-prefix":true, - "media-feature-parentheses-space-inside":"never", - "no-missing-end-of-source-newline":true, - "number-leading-zero":"always", - "number-no-trailing-zeros":true, - "property-no-unknown":true, - "property-no-vendor-prefix": [true, { "ignoreProperties": ["user-select"] }], - "rule-empty-line-before":[ - "always-multi-line", - { - "except":[ - "first-nested" - ], - "ignore":[ - "after-comment" - ] - } - ], - "scss/at-extend-no-missing-placeholder":[true,{ "severity": "warning" }], - "scss/at-function-pattern":"^[a-z]+([a-z0-9-]+[a-z0-9]+)?$", - "scss/at-import-no-partial-leading-underscore":true, - "scss/at-import-partial-extension-blacklist":[ - "scss" - ], - "scss/at-mixin-pattern":"^[a-z]+([a-z0-9-]+[a-z0-9]+)?$", - "scss/at-rule-no-unknown":true, - "scss/dollar-variable-colon-space-after":"always", - "scss/dollar-variable-colon-space-before":"never", - "scss/dollar-variable-pattern":"^[_]?[a-z]+([a-z0-9-]+[a-z0-9]+)?$", - "scss/percent-placeholder-pattern":"^[a-z]+([a-z0-9-]+[a-z0-9]+)?$", - "scss/selector-no-redundant-nesting-selector":true, - "selector-class-pattern":[ - "^[a-z0-9\\-]+$", - { - "message":"Selector should be written in lowercase with hyphens (selector-class-pattern)", - "severity": "warning" - } - ], - "selector-list-comma-newline-after":"always", "selector-max-compound-selectors":[6, { "severity": "warning" }], - "selector-max-id":1, - "selector-no-vendor-prefix":true, - "selector-pseudo-element-colon-notation":"double", - "selector-pseudo-element-no-unknown":true, - "shorthand-property-no-redundant-values":true, - "string-quotes":"single", - "value-no-vendor-prefix": [true, { "ignoreValues": ["sticky"] }], - "stylelint-gitlab/duplicate-selectors":[true,{ "severity": "warning" }], "stylelint-gitlab/utility-classes":[true,{ "severity": "warning" }], "declaration-block-no-duplicate-properties": [ true, diff --git a/CHANGELOG.md b/CHANGELOG.md index ce665eb7fcc..742a3a2d972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -610,6 +610,18 @@ entry. - Apply new GitLab UI for buttons in pipeline schedules. +## 13.8.5 (2021-03-04) + +### Security (6 changes) + +- Fix XSS in wiki author email and name. +- Bump thrift gem to 0.14.0. +- Allow only owners to manage group variables. +- Do not store marshalled sessions ids in Redis. +- Workhorse: prevent escaped router path traversal. +- Fix XSS vulnerability for swagger file viewer. + + ## 13.8.4 (2021-02-11) ### Security (9 changes) @@ -1010,6 +1022,17 @@ entry. - Add verbiage + link sast to show it's in core. !51935 +## 13.7.8 (2021-03-04) + +### Security (5 changes) + +- Bump thrift gem to 0.14.0. +- Allow only owners to manage group variables. +- Do not store marshalled sessions ids in Redis. +- Workhorse: prevent escaped router path traversal. +- Fix XSS vulnerability for swagger file viewer. + + ## 13.7.7 (2021-02-11) ### Security (9 changes) diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 353780b610a..37333735f60 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -13.9.3 \ No newline at end of file +ac2235fe44c106e9f69b6614ecb72b67421fd402 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION deleted file mode 100644 index 48309c07a55..00000000000 --- a/GITLAB_WORKHORSE_VERSION +++ /dev/null @@ -1 +0,0 @@ -8.63.2 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION new file mode 120000 index 00000000000..974cf28e008 --- /dev/null +++ b/GITLAB_WORKHORSE_VERSION @@ -0,0 +1 @@ +VERSION \ No newline at end of file diff --git a/Gemfile b/Gemfile index ec253c37b3a..dd1054080ea 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ gem 'default_value_for', '~> 3.4.0' # Supported DBs gem 'pg', '~> 1.1' -gem 'rugged', '~> 1.0.1' +gem 'rugged', '~> 1.1' gem 'grape-path-helpers', '~> 1.6.1' gem 'faraday', '~> 1.0' @@ -25,13 +25,13 @@ gem 'marginalia', '~> 1.10.0' # Authentication libraries gem 'devise', '~> 4.7.2' -# TODO: verify ARM compile issue on 3.1.13+ version (see https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18828) -gem 'bcrypt', '3.1.12' +gem 'bcrypt', '~> 3.1', '>= 3.1.14' gem 'doorkeeper', '~> 5.5.0.rc2' gem 'doorkeeper-openid_connect', '~> 1.7.5' gem 'omniauth', '~> 1.8' gem 'omniauth-auth0', '~> 2.0.0' -gem 'omniauth-azure-oauth2', '~> 0.0.9' +gem 'omniauth-azure-activedirectory-v2', '~> 0.1' +gem 'omniauth-azure-oauth2', '~> 0.0.9' # Deprecated v1 version gem 'omniauth-cas3', '~> 1.1.4' gem 'omniauth-facebook', '~> 4.0.0' gem 'omniauth-github', '~> 1.4' @@ -73,6 +73,9 @@ gem 'acme-client', '~> 2.0', '>= 2.0.6' # Browser detection gem 'browser', '~> 4.2' +# OS detection for usage ping +gem 'ohai', '~> 16.10' + # GPG gem 'gpgme', '~> 2.0.19' @@ -88,7 +91,7 @@ gem 'grape-entity', '~> 0.7.1' gem 'rack-cors', '~> 1.0.6', require: 'rack/cors' # GraphQL API -gem 'graphql', '~> 1.11.4' +gem 'graphql', '~> 1.11.8' # NOTE: graphiql-rails v1.5+ doesn't work: https://gitlab.com/gitlab-org/gitlab/issues/31771 # TODO: remove app/views/graphiql/rails/editors/show.html.erb when https://github.com/rmosolgo/graphiql-rails/pull/71 is released: # https://gitlab.com/gitlab-org/gitlab/issues/31747 @@ -112,16 +115,16 @@ gem 'carrierwave', '~> 1.3' gem 'mini_magick', '~> 4.10.1' # for backups -gem 'fog-aws', '~> 3.8' +gem 'fog-aws', '~> 3.9' # Locked until fog-google resolves https://github.com/fog/fog-google/issues/421. # Also see config/initializers/fog_core_patch.rb. gem 'fog-core', '= 2.1.0' -gem 'fog-google', '~> 1.12' +gem 'gitlab-fog-google', '~> 1.13', require: 'fog/google' gem 'fog-local', '~> 0.6' gem 'fog-openstack', '~> 1.0' gem 'fog-rackspace', '~> 0.1.1' gem 'fog-aliyun', '~> 0.3' -gem 'gitlab-fog-azure-rm', '~> 1.0', require: false +gem 'gitlab-fog-azure-rm', '~> 1.0.1', require: false # for Google storage gem 'google-api-client', '~> 0.33' @@ -195,7 +198,7 @@ gem 'acts-as-taggable-on', '~> 7.0' gem 'sidekiq', '~> 5.2.7' gem 'sidekiq-cron', '~> 1.0' gem 'redis-namespace', '~> 1.7.0' -gem 'gitlab-sidekiq-fetcher', '0.5.2', require: 'sidekiq-reliable-fetch' +gem 'gitlab-sidekiq-fetcher', '0.5.5', require: 'sidekiq-reliable-fetch' # Cron Parser gem 'fugit', '~> 1.2.1' @@ -233,7 +236,7 @@ gem 'connection_pool', '~> 2.0' gem 'redis-rails', '~> 5.0.2' # Discord integration -gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false +gem 'discordrb-webhooks', '~> 3.4', require: false # HipChat integration gem 'hipchat', '~> 1.5.0' @@ -309,7 +312,7 @@ gem 'pg_query', '~> 1.3.0' gem 'premailer-rails', '~> 1.10.3' # LabKit: Tracing and Correlation -gem 'gitlab-labkit', '0.14.0' +gem 'gitlab-labkit', '~> 0.16.1' # Thrift is a dependency of gitlab-labkit, we want a version higher than 0.14.0 # because of https://gitlab.com/gitlab-org/gitlab/-/issues/321900 gem 'thrift', '>= 0.14.0' @@ -321,7 +324,7 @@ gem 'gettext_i18n_rails', '~> 1.8.0' gem 'gettext_i18n_rails_js', '~> 1.3' gem 'gettext', '~> 3.3', require: false, group: :development -gem 'batch-loader', '~> 1.4.0' +gem 'batch-loader', '~> 2.0.1' # Perf bar gem 'peek', '~> 1.1' @@ -375,9 +378,8 @@ group :development, :test do gem 'spring', '~> 2.1.0' gem 'spring-commands-rspec', '~> 1.0.4' - gem 'gitlab-styles', '~> 6.0.0', require: false + gem 'gitlab-styles', '~> 6.1.0', require: false - gem 'scss_lint', '~> 0.59.0', require: false gem 'haml_lint', '~> 0.36.0', require: false gem 'bundler-audit', '~> 0.7.0.1', require: false @@ -482,7 +484,7 @@ gem 'flipper', '~> 0.17.1' gem 'flipper-active_record', '~> 0.17.1' gem 'flipper-active_support_cache_store', '~> 0.17.1' gem 'unleash', '~> 0.1.5' -gem 'gitlab-experiment', '~> 0.4.9' +gem 'gitlab-experiment', '~> 0.5.0' # Structured logging gem 'lograge', '~> 0.5' diff --git a/Gemfile.lock b/Gemfile.lock index 1b6701e8e3d..9a5c0bc10d4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -88,7 +88,7 @@ GEM asciidoctor (~> 2.0) asciidoctor-plantuml (0.0.12) asciidoctor (>= 1.5.6, < 3.0.0) - ast (2.4.1) + ast (2.4.2) atlassian-jwt (0.2.0) jwt (~> 2.1.0) attr_encrypted (3.1.0) @@ -127,8 +127,8 @@ GEM nokogiri (~> 1.11.0.rc2) babosa (1.0.2) base32 (0.3.2) - batch-loader (1.4.0) - bcrypt (3.1.12) + batch-loader (2.0.1) + bcrypt (3.1.16) bcrypt_pbkdf (1.0.0) benchmark-ips (2.3.0) benchmark-memory (0.1.2) @@ -172,6 +172,14 @@ GEM cbor (0.5.9.6) character_set (1.4.0) charlock_holmes (0.7.7) + chef-config (16.10.17) + addressable + chef-utils (= 16.10.17) + fuzzyurl + mixlib-config (>= 2.2.12, < 4.0) + mixlib-shellout (>= 2.0, < 4.0) + tomlrb (~> 1.2) + chef-utils (16.10.17) childprocess (3.0.0) chunky_png (1.3.5) citrus (3.0.2) @@ -187,7 +195,7 @@ GEM concord (0.1.5) adamantium (~> 0.2.0) equalizer (~> 0.0.9) - concurrent-ruby (1.1.7) + concurrent-ruby (1.1.8) connection_pool (2.2.2) contracts (0.11.0) cork (0.3.0) @@ -257,8 +265,8 @@ GEM diff-lcs (1.4.4) diff_match_patch (0.1.0) diffy (3.3.0) - discordrb-webhooks-blackst0ne (3.3.0) - rest-client (~> 2.0) + discordrb-webhooks (3.4.2) + rest-client (>= 2.0.0) docile (1.3.2) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) @@ -348,6 +356,8 @@ GEM ffi-compiler (1.0.1) ffi (>= 1.0.0) rake + ffi-yajl (2.3.4) + libyajl2 (~> 1.2) flipper (0.17.1) flipper-active_record (0.17.1) activerecord (>= 4.2, < 7) @@ -363,7 +373,7 @@ GEM fog-json ipaddress (~> 0.8) xml-simple (~> 1.1) - fog-aws (3.8.0) + fog-aws (3.9.0) fog-core (~> 2.1) fog-json (~> 1.1) fog-xml (~> 0.1) @@ -373,12 +383,6 @@ GEM excon (~> 0.58) formatador (~> 0.2) mime-types - fog-google (1.12.0) - fog-core (<= 2.1.0) - fog-json (~> 1.2) - fog-xml (~> 0.1.0) - google-api-client (>= 0.44.2, < 0.51) - google-cloud-env (~> 1.2) fog-json (1.2.0) fog-core multi_json (~> 1.10) @@ -403,6 +407,7 @@ GEM fuubar (2.2.0) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) + fuzzyurl (0.9.0) gemoji (3.0.1) gemojione (3.3.0) json @@ -425,36 +430,42 @@ GEM github-markup (1.7.0) gitlab-chronic (0.10.5) numerizer (~> 0.2) - gitlab-experiment (0.4.9) + gitlab-experiment (0.5.0) activesupport (>= 3.0) scientist (~> 1.5, >= 1.5.0) - gitlab-fog-azure-rm (1.0.0) + gitlab-fog-azure-rm (1.0.1) azure-storage-blob (~> 2.0) azure-storage-common (~> 2.0) fog-core (= 2.1.0) fog-json (~> 1.2.0) mime-types ms_rest_azure (~> 0.12.0) - gitlab-labkit (0.14.0) + gitlab-fog-google (1.13.0) + addressable (>= 2.7.0) + fog-core (<= 2.1.0) + fog-json (~> 1.2) + fog-xml (~> 0.1.0) + google-api-client (>= 0.44.2, < 0.51) + google-cloud-env (~> 1.2) + gitlab-labkit (0.16.1) actionpack (>= 5.0.0, < 7.0.0) activesupport (>= 5.0.0, < 7.0.0) - gitlab-pg_query (~> 1.3) grpc (~> 1.19) jaeger-client (~> 1.1) opentracing (~> 0.4) + pg_query (~> 1.3) redis (> 3.0.0, < 5.0.0) - gitlab-license (1.3.0) + gitlab-license (1.3.1) gitlab-mail_room (0.0.8) gitlab-markup (1.7.1) gitlab-net-dns (0.9.1) - gitlab-pg_query (1.3.1) gitlab-pry-byebug (3.9.0) byebug (~> 11.0) pry (~> 0.13.0) - gitlab-sidekiq-fetcher (0.5.2) + gitlab-sidekiq-fetcher (0.5.5) sidekiq (~> 5) - gitlab-styles (6.0.0) - rubocop (~> 0.91.1) + gitlab-styles (6.1.0) + rubocop (~> 0.91, >= 0.91.1) rubocop-gitlab-security (~> 0.1.1) rubocop-performance (~> 1.9.2) rubocop-rails (~> 2.9) @@ -520,7 +531,7 @@ GEM faraday (>= 1.0) faraday_middleware graphql-client - graphql (1.11.4) + graphql (1.11.8) graphql-client (0.16.0) activesupport (>= 3.0) graphql (~> 1.8) @@ -598,7 +609,7 @@ GEM mime-types (~> 3.0) multi_xml (>= 0.5.2) httpclient (2.8.3) - i18n (1.8.7) + i18n (1.8.9) concurrent-ruby (~> 1.0) i18n_data (0.8.0) icalendar (2.4.1) @@ -668,6 +679,7 @@ GEM actionmailer (>= 3.2) letter_opener (~> 1.0) railties (>= 3.2) + libyajl2 (1.2.0) license_finder (6.0.0) bundler rubyzip (>= 1, < 3) @@ -717,6 +729,12 @@ GEM mini_mime (1.0.2) mini_portile2 (2.5.0) minitest (5.11.3) + mixlib-cli (2.1.8) + mixlib-config (3.0.9) + tomlrb + mixlib-log (3.0.9) + mixlib-shellout (3.2.5) + chef-utils ms_rest (0.7.6) concurrent-ruby (~> 1.0) faraday (>= 0.9, < 2.0.0) @@ -737,10 +755,12 @@ GEM mustermann (>= 1.0.0) nap (1.1.0) nenv (0.3.0) - net-http-persistent (4.0.0) + net-http-persistent (4.0.1) connection_pool (~> 2.2) net-ldap (0.16.3) net-ntp (2.1.3) + net-scp (3.0.0) + net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.0.0) netrc (0.11.0) nio4r (2.5.4) @@ -764,6 +784,19 @@ GEM octokit (4.20.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) + ohai (16.10.6) + chef-config (>= 12.8, < 17) + chef-utils (>= 16.0, < 17) + ffi (~> 1.9) + ffi-yajl (~> 2.2) + ipaddress + mixlib-cli (>= 1.7.0) + mixlib-config (>= 2.0, < 4.0) + mixlib-log (>= 2.0.1, < 4.0) + mixlib-shellout (>= 2.0, < 4.0) + plist (~> 3.1) + train-core + wmi-lite (~> 1.0) oj (3.10.6) omniauth (1.9.0) hashie (>= 3.4.6, < 3.7.0) @@ -776,6 +809,8 @@ GEM omniauth-authentiq (0.3.3) jwt (>= 1.5) omniauth-oauth2 (>= 1.5) + omniauth-azure-activedirectory-v2 (0.1.1) + omniauth-oauth2 omniauth-azure-oauth2 (0.0.10) jwt (>= 1.0, < 3.0) omniauth (~> 1.0) @@ -855,6 +890,7 @@ GEM railties (>= 4.0.0) pg (1.2.3) pg_query (1.3.0) + plist (3.6.0) png_quantizator (0.2.1) po_to_json (1.0.1) json (>= 1.6.0) @@ -1041,16 +1077,16 @@ GEM pg rails sqlite3 - rubocop (0.91.1) + rubocop (0.93.1) parallel (~> 1.10) - parser (>= 2.7.1.1) + parser (>= 2.7.1.5) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.7) + regexp_parser (>= 1.8) rexml - rubocop-ast (>= 0.4.0, < 1.0) + rubocop-ast (>= 0.6.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 2.0) - rubocop-ast (0.8.0) + rubocop-ast (1.4.1) parser (>= 2.7.1.5) rubocop-gitlab-security (0.1.1) rubocop (>= 0.51) @@ -1079,7 +1115,7 @@ GEM rubyntlm (0.6.2) rubypants (0.2.0) rubyzip (2.0.0) - rugged (1.0.1) + rugged (1.1.0) safe_yaml (1.0.4) safety_net_attestation (0.4.0) jwt (~> 2.0) @@ -1104,9 +1140,7 @@ GEM sawyer (0.8.2) addressable (>= 2.3.5) faraday (> 0.8, < 2.0) - scientist (1.5.0) - scss_lint (0.59.0) - sass (~> 3.5, >= 3.5.5) + scientist (1.6.0) securecompare (1.0.0) seed-fu (2.3.7) activerecord (>= 3.1) @@ -1196,9 +1230,17 @@ GEM parslet (~> 1.8.0) toml-rb (1.0.0) citrus (~> 3.0, > 3.0) + tomlrb (1.3.0) tpm-key_attestation (0.9.0) bindata (~> 2.4) openssl-signature_algorithm (~> 0.4.0) + train-core (3.4.9) + addressable (~> 2.5) + ffi (!= 1.13.0) + json (>= 1.8, < 3.0) + mixlib-shellout (>= 2.0, < 4.0) + net-scp (>= 1.2, < 4.0) + net-ssh (>= 2.9, < 7.0) truncato (0.7.11) htmlentities (~> 4.3.1) nokogiri (>= 1.7.0, <= 2.0) @@ -1235,7 +1277,7 @@ GEM validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) - validate_url (1.0.8) + validate_url (1.0.13) activemodel (>= 3.0.0) public_suffix validates_hostname (1.0.11) @@ -1271,6 +1313,7 @@ GEM expression_parser rinku with_env (1.1.0) + wmi-lite (1.0.5) xml-simple (1.1.5) xpath (3.2.0) nokogiri (~> 1.8) @@ -1302,8 +1345,8 @@ DEPENDENCIES aws-sdk-s3 (~> 1) babosa (~> 1.0.2) base32 (~> 0.3.0) - batch-loader (~> 1.4.0) - bcrypt (= 3.1.12) + batch-loader (~> 2.0.1) + bcrypt (~> 3.1, >= 3.1.14) bcrypt_pbkdf (~> 1.0) benchmark-ips (~> 2.3.0) benchmark-memory (~> 0.1) @@ -1335,7 +1378,7 @@ DEPENDENCIES devise-two-factor (~> 3.1.0) diff_match_patch (~> 0.1.0) diffy (~> 3.3) - discordrb-webhooks-blackst0ne (~> 3.3) + discordrb-webhooks (~> 3.4) doorkeeper (~> 5.5.0.rc2) doorkeeper-openid_connect (~> 1.7.5) ed25519 (~> 1.2) @@ -1356,9 +1399,8 @@ DEPENDENCIES flipper-active_support_cache_store (~> 0.17.1) flowdock (~> 0.7) fog-aliyun (~> 0.3) - fog-aws (~> 3.8) + fog-aws (~> 3.9) fog-core (= 2.1.0) - fog-google (~> 1.12) fog-local (~> 0.6) fog-openstack (~> 1.0) fog-rackspace (~> 0.1.1) @@ -1371,16 +1413,17 @@ DEPENDENCIES gitaly (~> 13.9.0.pre.rc1) github-markup (~> 1.7.0) gitlab-chronic (~> 0.10.5) - gitlab-experiment (~> 0.4.9) - gitlab-fog-azure-rm (~> 1.0) - gitlab-labkit (= 0.14.0) + gitlab-experiment (~> 0.5.0) + gitlab-fog-azure-rm (~> 1.0.1) + gitlab-fog-google (~> 1.13) + gitlab-labkit (~> 0.16.1) gitlab-license (~> 1.3) gitlab-mail_room (~> 0.0.8) gitlab-markup (~> 1.7.1) gitlab-net-dns (~> 0.9.1) gitlab-pry-byebug - gitlab-sidekiq-fetcher (= 0.5.2) - gitlab-styles (~> 6.0.0) + gitlab-sidekiq-fetcher (= 0.5.5) + gitlab-styles (~> 6.1.0) gitlab_chronic_duration (~> 0.10.6.2) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) @@ -1393,7 +1436,7 @@ DEPENDENCIES grape_logging (~> 1.7) graphiql-rails (~> 1.4.10) graphlient (~> 0.4.0) - graphql (~> 1.11.4) + graphql (~> 1.11.8) graphql-docs (~> 1.6.0) grpc (~> 1.30.2) gssapi @@ -1443,11 +1486,13 @@ DEPENDENCIES nokogiri (~> 1.11.1) oauth2 (~> 1.4) octokit (~> 4.15) + ohai (~> 16.10) oj (~> 3.10.6) omniauth (~> 1.8) omniauth-atlassian-oauth2 (~> 0.2.0) omniauth-auth0 (~> 2.0.0) omniauth-authentiq (~> 0.3.3) + omniauth-azure-activedirectory-v2 (~> 0.1) omniauth-azure-oauth2 (~> 0.0.9) omniauth-cas3 (~> 1.1.4) omniauth-facebook (~> 4.0.0) @@ -1509,10 +1554,9 @@ DEPENDENCIES ruby-progressbar (~> 1.10) ruby_parser (~> 3.15) rubyzip (~> 2.0.0) - rugged (~> 1.0.1) + rugged (~> 1.1) sanitize (~> 5.2.1) sassc-rails (~> 2.1.0) - scss_lint (~> 0.59.0) seed-fu (~> 2.3.7) selenium-webdriver (~> 3.142) sentry-raven (~> 3.0) diff --git a/PROCESS.md b/PROCESS.md index 820f19a290b..67abe2f0a98 100644 --- a/PROCESS.md +++ b/PROCESS.md @@ -77,9 +77,9 @@ star, smile, etc.). Some good tips about code reviews can be found in our ## Feature flags -Overview and details of feature flag processes in development of GitLab itself is described in [feature flags process documentation](https://docs.gitlab.com/ee/development/feature_flags/process.html). +Overview and details of feature flag processes in development of GitLab itself is described in [feature flags process documentation](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/). -Guides on how to include feature flags in your backend/frontend code while developing GitLab are described in [developing with feature flags documentation](https://docs.gitlab.com/ee/development/feature_flags/development.html). +Guides on how to include feature flags in your backend/frontend code while developing GitLab are described in [developing with feature flags documentation](https://docs.gitlab.com/ee/development/feature_flags). Getting access and how to expose the feature to users is detailed in [controlling feature flags documentation](https://docs.gitlab.com/ee/development/feature_flags/controls.html). diff --git a/app/assets/images/learn_gitlab/code_owners_enabled.svg b/app/assets/images/learn_gitlab/code_owners_enabled.svg new file mode 100644 index 00000000000..019d74c64cc --- /dev/null +++ b/app/assets/images/learn_gitlab/code_owners_enabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/app/assets/images/learn_gitlab/git_write.svg b/app/assets/images/learn_gitlab/git_write.svg new file mode 100644 index 00000000000..ad87b3f3b12 --- /dev/null +++ b/app/assets/images/learn_gitlab/git_write.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/app/assets/images/learn_gitlab/merge_request_created.svg b/app/assets/images/learn_gitlab/merge_request_created.svg new file mode 100644 index 00000000000..b8137a60f06 --- /dev/null +++ b/app/assets/images/learn_gitlab/merge_request_created.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/images/learn_gitlab/pipeline_created.svg b/app/assets/images/learn_gitlab/pipeline_created.svg new file mode 100644 index 00000000000..91c716be475 --- /dev/null +++ b/app/assets/images/learn_gitlab/pipeline_created.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/images/learn_gitlab/required_mr_approvals_enabled.svg b/app/assets/images/learn_gitlab/required_mr_approvals_enabled.svg new file mode 100644 index 00000000000..027767368a6 --- /dev/null +++ b/app/assets/images/learn_gitlab/required_mr_approvals_enabled.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/images/learn_gitlab/security_scan_enabled.svg b/app/assets/images/learn_gitlab/security_scan_enabled.svg new file mode 100644 index 00000000000..eea0693484c --- /dev/null +++ b/app/assets/images/learn_gitlab/security_scan_enabled.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/images/learn_gitlab/trial_started.svg b/app/assets/images/learn_gitlab/trial_started.svg new file mode 100644 index 00000000000..42d6fb6c013 --- /dev/null +++ b/app/assets/images/learn_gitlab/trial_started.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/assets/images/learn_gitlab/user_added.svg b/app/assets/images/learn_gitlab/user_added.svg new file mode 100644 index 00000000000..efbccff0bbb --- /dev/null +++ b/app/assets/images/learn_gitlab/user_added.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/assets/javascripts/access_tokens/components/projects_field.vue b/app/assets/javascripts/access_tokens/components/projects_field.vue new file mode 100644 index 00000000000..066cea5e90c --- /dev/null +++ b/app/assets/javascripts/access_tokens/components/projects_field.vue @@ -0,0 +1,69 @@ + + + diff --git a/app/assets/javascripts/access_tokens/components/projects_token_selector.vue b/app/assets/javascripts/access_tokens/components/projects_token_selector.vue new file mode 100644 index 00000000000..cc5532696c7 --- /dev/null +++ b/app/assets/javascripts/access_tokens/components/projects_token_selector.vue @@ -0,0 +1,158 @@ + + + diff --git a/app/assets/javascripts/access_tokens/graphql/queries/get_projects.query.graphql b/app/assets/javascripts/access_tokens/graphql/queries/get_projects.query.graphql new file mode 100644 index 00000000000..60110437ecd --- /dev/null +++ b/app/assets/javascripts/access_tokens/graphql/queries/get_projects.query.graphql @@ -0,0 +1,28 @@ +#import "~/graphql_shared/fragments/pageInfo.fragment.graphql" + +query getProjects( + $search: String = "" + $after: String = "" + $first: Int = null + $ids: [ID!] = null +) { + projects( + search: $search + after: $after + first: $first + ids: $ids + membership: true + searchNamespaces: true + sort: "UPDATED_ASC" + ) { + nodes { + id + name + nameWithNamespace + avatarUrl + } + pageInfo { + ...PageInfo + } + } +} diff --git a/app/assets/javascripts/access_tokens/index.js b/app/assets/javascripts/access_tokens/index.js index b4353af30d5..43d56295f78 100644 --- a/app/assets/javascripts/access_tokens/index.js +++ b/app/assets/javascripts/access_tokens/index.js @@ -1,4 +1,7 @@ import Vue from 'vue'; +import createFlash from '~/flash'; +import { __ } from '~/locale'; + import ExpiresAtField from './components/expires_at_field.vue'; const getInputAttrs = (el) => { @@ -7,11 +10,12 @@ const getInputAttrs = (el) => { return { id: input.id, name: input.name, + value: input.value, placeholder: input.placeholder, }; }; -const initExpiresAtField = () => { +export const initExpiresAtField = () => { const el = document.querySelector('.js-access-tokens-expires-at'); if (!el) { @@ -32,4 +36,58 @@ const initExpiresAtField = () => { }); }; -export default initExpiresAtField; +export const initProjectsField = () => { + const el = document.querySelector('.js-access-tokens-projects'); + + if (!el) { + return null; + } + + const inputAttrs = getInputAttrs(el); + + if (window.gon.features.personalAccessTokensScopedToProjects) { + return new Promise((resolve) => { + Promise.all([ + import('./components/projects_field.vue'), + import('vue-apollo'), + import('~/lib/graphql'), + ]) + .then( + ([ + { default: ProjectsField }, + { default: VueApollo }, + { default: createDefaultClient }, + ]) => { + const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient(), + }); + + Vue.use(VueApollo); + + resolve( + new Vue({ + el, + apolloProvider, + render(h) { + return h(ProjectsField, { + props: { + inputAttrs, + }, + }); + }, + }), + ); + }, + ) + .catch(() => { + createFlash({ + message: __( + 'An error occurred while loading the access tokens form, please try again.', + ), + }); + }); + }); + } + + return null; +}; diff --git a/app/assets/javascripts/admin/dev_ops_report/components/usage_ping_disabled.vue b/app/assets/javascripts/admin/dev_ops_report/components/usage_ping_disabled.vue deleted file mode 100644 index c0ad814172d..00000000000 --- a/app/assets/javascripts/admin/dev_ops_report/components/usage_ping_disabled.vue +++ /dev/null @@ -1,53 +0,0 @@ - - diff --git a/app/assets/javascripts/admin/dev_ops_report/devops_adoption.js b/app/assets/javascripts/admin/dev_ops_report/devops_adoption.js deleted file mode 100644 index ae73033079d..00000000000 --- a/app/assets/javascripts/admin/dev_ops_report/devops_adoption.js +++ /dev/null @@ -1,2 +0,0 @@ -// EE-specific feature. Find the implementation in the `ee/`-folder -export default () => {}; diff --git a/app/assets/javascripts/admin/dev_ops_report/devops_score_empty_state.js b/app/assets/javascripts/admin/dev_ops_report/devops_score_empty_state.js deleted file mode 100644 index 0cb8d9be0e4..00000000000 --- a/app/assets/javascripts/admin/dev_ops_report/devops_score_empty_state.js +++ /dev/null @@ -1,27 +0,0 @@ -import Vue from 'vue'; -import UserCallout from '~/user_callout'; -import UsagePingDisabled from './components/usage_ping_disabled.vue'; - -export default () => { - // eslint-disable-next-line no-new - new UserCallout(); - - const emptyStateContainer = document.getElementById('js-devops-empty-state'); - - if (!emptyStateContainer) return false; - - const { emptyStateSvgPath, enableUsagePingLink, docsLink, isAdmin } = emptyStateContainer.dataset; - - return new Vue({ - el: emptyStateContainer, - provide: { - isAdmin: Boolean(isAdmin), - svgPath: emptyStateSvgPath, - primaryButtonPath: enableUsagePingLink, - docsLink, - }, - render(h) { - return h(UsagePingDisabled); - }, - }); -}; diff --git a/app/assets/javascripts/admin/users/tabs.js b/app/assets/javascripts/admin/users/tabs.js index 9ada77396c7..cbaab7df4e9 100644 --- a/app/assets/javascripts/admin/users/tabs.js +++ b/app/assets/javascripts/admin/users/tabs.js @@ -1,11 +1,20 @@ +import Api from '~/api'; import { historyPushState } from '~/lib/utils/common_utils'; import { mergeUrlParams } from '~/lib/utils/url_utility'; const COHORTS_PANE = 'cohorts'; +const COHORTS_PANE_TAB_CLICK_EVENT = 'i_analytics_cohorts'; const tabClickHandler = (e) => { const { hash } = e.currentTarget; - const tab = hash === `#${COHORTS_PANE}` ? COHORTS_PANE : null; + + let tab = null; + + if (hash === `#${COHORTS_PANE}`) { + tab = COHORTS_PANE; + Api.trackRedisHllUserEvent(COHORTS_PANE_TAB_CLICK_EVENT); + } + const newUrl = mergeUrlParams({ tab }, window.location.href); historyPushState(newUrl); }; diff --git a/app/assets/javascripts/alert_management/components/alert_management_table.vue b/app/assets/javascripts/alert_management/components/alert_management_table.vue index dd702c4a5d3..79a6bac3ba7 100644 --- a/app/assets/javascripts/alert_management/components/alert_management_table.vue +++ b/app/assets/javascripts/alert_management/components/alert_management_table.vue @@ -42,6 +42,7 @@ export default { "AlertManagement|There was an error displaying the alerts. Confirm your endpoint's configuration details to ensure alerts appear.", ), unassigned: __('Unassigned'), + closed: __('closed'), }, fields: [ { @@ -75,7 +76,7 @@ export default { { key: 'issue', label: s__('AlertManagement|Incident'), - thClass: 'gl-w-12 gl-pointer-events-none', + thClass: 'gl-w-15p gl-pointer-events-none', tdClass, }, { @@ -221,8 +222,11 @@ export default { hasAssignees(assignees) { return Boolean(assignees.nodes?.length); }, - getIssueLink(item) { - return joinPaths('/', this.projectPath, '-', 'issues', item.issueIid); + getIssueMeta({ issue: { iid, state } }) { + return { + state: state === 'closed' ? `(${this.$options.i18n.closed})` : '', + link: joinPaths('/', this.projectPath, '-', 'issues/incident', iid), + }; }, tbodyTrClass(item) { return { @@ -343,8 +347,14 @@ export default { diff --git a/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue b/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue index 1135562834a..07b2e59671e 100644 --- a/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue +++ b/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue @@ -7,15 +7,12 @@ import { GlSearchBoxByType, GlTooltipDirective as GlTooltip, } from '@gitlab/ui'; -import { cloneDeep } from 'lodash'; +import { cloneDeep, isEqual } from 'lodash'; import Vue from 'vue'; import { capitalizeFirstCharacter } from '~/lib/utils/text_utility'; import { s__, __ } from '~/locale'; -import { - getMappingData, - getPayloadFields, - transformForSave, -} from '../utils/mapping_transformations'; +import { mappingFields } from '../constants'; +import { getMappingData, transformForSave } from '../utils/mapping_transformations'; export const i18n = { columns: { @@ -33,6 +30,7 @@ export const i18n = { export default { i18n, + mappingFields, components: { GlIcon, GlFormInput, @@ -73,18 +71,15 @@ export default { }; }, computed: { - payloadFields() { - return getPayloadFields(this.parsedPayload); - }, mappingData() { - return getMappingData(this.gitlabFields, this.payloadFields, this.savedMapping); + return getMappingData(this.gitlabFields, this.parsedPayload, this.savedMapping); }, hasFallbackColumn() { return this.gitlabFields.some(({ numberOfFallbacks }) => Boolean(numberOfFallbacks)); }, }, methods: { - setMapping(gitlabKey, mappingKey, valueKey) { + setMapping(gitlabKey, mappingKey, valueKey = mappingFields.mapping) { const fieldIndex = this.gitlabFields.findIndex((field) => field.name === gitlabKey); const updatedField = { ...this.gitlabFields[fieldIndex], ...{ [valueKey]: mappingKey } }; Vue.set(this.gitlabFields, fieldIndex, updatedField); @@ -100,11 +95,11 @@ export default { return fields.filter((field) => field.label.toLowerCase().includes(search)); }, isSelected(fieldValue, mapping) { - return fieldValue === mapping; + return isEqual(fieldValue, mapping); }, - selectedValue(name) { + selectedValue(mapping) { return ( - this.payloadFields.find((item) => item.name === name)?.label || + this.parsedPayload.find((item) => isEqual(item.path, mapping))?.label || this.$options.i18n.makeSelection ); }, @@ -150,7 +145,7 @@ export default { :key="gitlabField.name" class="gl-display-table-row" > -
+
-
+
{{ mappingField.label }} @@ -188,7 +183,7 @@ export default {
-
+
{{ mappingField.label }} diff --git a/app/assets/javascripts/alerts_settings/components/alerts_integrations_list.vue b/app/assets/javascripts/alerts_settings/components/alerts_integrations_list.vue index 6cfb4601192..a5e17d80f86 100644 --- a/app/assets/javascripts/alerts_settings/components/alerts_integrations_list.vue +++ b/app/assets/javascripts/alerts_settings/components/alerts_integrations_list.vue @@ -10,6 +10,7 @@ import { GlTooltipDirective, GlSprintf, } from '@gitlab/ui'; +import { capitalize } from 'lodash'; import { s__, __ } from '~/locale'; import Tracking from '~/tracking'; import { @@ -77,6 +78,7 @@ export default { { key: 'type', label: __('Type'), + formatter: (value) => (value === typeSet.prometheus ? capitalize(value) : value), }, { key: 'actions', @@ -120,14 +122,17 @@ export default { const { category, action } = trackAlertIntegrationsViewsOptions; Tracking.event(category, action); }, - setIntegrationToDelete({ name, id }) { - this.integrationToDelete.id = id; - this.integrationToDelete.name = name; + setIntegrationToDelete(integration) { + this.integrationToDelete = integration; }, deleteIntegration() { - this.$emit('delete-integration', { id: this.integrationToDelete.id }); + const { id, type } = this.integrationToDelete; + this.$emit('delete-integration', { id, type }); this.integrationToDelete = { ...integrationToDeleteDefault }; }, + editIntegration({ id, type }) { + this.$emit('edit-integration', { id, type }); + }, }, }; @@ -169,7 +174,7 @@ export default { diff --git a/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue b/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue index 366f2209fb2..3ffb652e61b 100644 --- a/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue +++ b/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue @@ -1,22 +1,26 @@ @@ -316,7 +338,18 @@ export default { @edit-integration="editIntegration" @delete-integration="deleteIntegration" /> + + {{ $options.i18n.addNewIntegration }} +
diff --git a/app/assets/javascripts/alerts_settings/components/mocks/parsedMapping.json b/app/assets/javascripts/alerts_settings/components/mocks/parsedMapping.json deleted file mode 100644 index 80fbebf2a60..00000000000 --- a/app/assets/javascripts/alerts_settings/components/mocks/parsedMapping.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "samplePayload": { - "body": "{\n \"dashboardId\":1,\n \"evalMatches\":[\n {\n \"value\":1,\n \"metric\":\"Count\",\n \"tags\":{}\n }\n ],\n \"imageUrl\":\"https://grafana.com/static/assets/img/blog/mixed_styles.png\",\n \"message\":\"Notification Message\",\n \"orgId\":1,\n \"panelId\":2,\n \"ruleId\":1,\n \"ruleName\":\"Panel Title alert\",\n \"ruleUrl\":\"http://localhost:3000/d/hZ7BuVbWz/test-dashboard?fullscreen\\u0026edit\\u0026tab=alert\\u0026panelId=2\\u0026orgId=1\",\n \"state\":\"alerting\",\n \"tags\":{\n \"tag name\":\"tag value\"\n },\n \"title\":\"[Alerting] Panel Title alert\"\n}\n", - "payloadAlerFields": { - "nodes": [ - { - "path": ["dashboardId"], - "label": "Dashboard Id", - "type": "string" - }, - { - "path": ["evalMatches"], - "label": "Eval Matches", - "type": "array" - }, - { - "path": ["createdAt"], - "label": "Created At", - "type": "datetime" - }, - { - "path": ["imageUrl"], - "label": "Image Url", - "type": "string" - }, - { - "path": ["message"], - "label": "Message", - "type": "string" - }, - { - "path": ["orgId"], - "label": "Org Id", - "type": "string" - }, - { - "path": ["panelId"], - "label": "Panel Id", - "type": "string" - }, - { - "path": ["ruleId"], - "label": "Rule Id", - "type": "string" - }, - { - "path": ["ruleName"], - "label": "Rule Name", - "type": "string" - }, - { - "path": ["ruleUrl"], - "label": "Rule Url", - "type": "string" - }, - { - "path": ["state"], - "label": "State", - "type": "string" - }, - { - "path": ["title"], - "label": "Title", - "type": "string" - }, - { - "path": ["tags", "tag"], - "label": "Tags", - "type": "string" - } - ] - } - }, - "storedMapping": { - "nodes": [ - { - "alertFieldName": "title", - "payloadAlertPaths": "title", - "fallbackAlertPaths": "ruleUrl" - }, - { - "alertFieldName": "description", - "payloadAlertPaths": "message" - }, - { - "alertFieldName": "hosts", - "payloadAlertPaths": "evalMatches" - }, - { - "alertFieldName": "startTime", - "payloadAlertPaths": "createdAt" - } - ] - } -} diff --git a/app/assets/javascripts/alerts_settings/constants.js b/app/assets/javascripts/alerts_settings/constants.js index ecd7c921b2f..ce6cf61b5dd 100644 --- a/app/assets/javascripts/alerts_settings/constants.js +++ b/app/assets/javascripts/alerts_settings/constants.js @@ -1,50 +1,106 @@ -import { s__ } from '~/locale'; +import { s__, __ } from '~/locale'; -// TODO: Remove this as part of the form old removal export const i18n = { - usageSection: s__( - 'AlertSettings|You must provide this URL and authorization key to authorize an external service to send alerts to GitLab. You can provide this URL and key to multiple services. After configuring an external service, alerts from your service will display on the GitLab %{linkStart}Alerts%{linkEnd} page.', - ), - setupSection: s__( - "AlertSettings|Review your external service's documentation to learn where to provide this information to your external service, and the %{linkStart}GitLab documentation%{linkEnd} to learn more about configuring your endpoint.", - ), - errorMsg: s__('AlertSettings|There was an error updating the alert settings.'), - errorKeyMsg: s__( - 'AlertSettings|There was an error while trying to reset the key. Please refresh the page to try again.', - ), - restKeyInfo: s__( - 'AlertSettings|Resetting the authorization key for this project will require updating the authorization key in every alert source it is enabled in.', - ), + integrationTabs: { + configureDetails: s__('AlertSettings|Configure details'), + viewCredentials: s__('AlertSettings|View credentials'), + sendTestAlert: s__('AlertSettings|Send test alert'), + }, + integrationFormSteps: { + selectType: { + label: s__('AlertSettings|Select integration type'), + enterprise: s__( + 'AlertSettings|In free versions of GitLab, only one integration for each type can be added. %{linkStart}Upgrade your subscription%{linkEnd} to add additional integrations.', + ), + }, + nameIntegration: { + label: s__('AlertSettings|Name integration'), + placeholder: s__('AlertSettings|Enter integration name'), + activeToggle: __('Active'), + }, + setupCredentials: { + help: s__( + "AlertSettings|Utilize the URL and authorization key below to authorize an external service to send alerts to GitLab. Review your external service's documentation to learn where to add these details, and the %{linkStart}GitLab documentation%{linkEnd} to learn more about configuring your endpoint.", + ), + prometheusHelp: s__( + 'AlertSettings|Utilize the URL and authorization key below to authorize Prometheus to send alerts to GitLab. Review the Prometheus documentation to learn where to add these details, and the %{linkStart}GitLab documentation%{linkEnd} to learn more about configuring your endpoint.', + ), + webhookUrl: s__('AlertSettings|Webhook URL'), + authorizationKey: s__('AlertSettings|Authorization key'), + reset: s__('AlertSettings|Reset Key'), + }, + setSamplePayload: { + label: s__('AlertSettings|Sample alert payload (optional)'), + testPayloadHelpHttp: s__( + 'AlertSettings|Provide an example payload from the monitoring tool you intend to integrate with. This payload can be used to create a custom mapping (optional).', + ), + testPayloadHelp: s__( + 'AlertSettings|Provide an example payload from the monitoring tool you intend to integrate with. This will allow you to send an alert to an active GitLab alerting point.', + ), + placeholder: s__('AlertSettings|{ "events": [{ "application": "Name of application" }] }'), + resetHeader: s__('AlertSettings|Reset the mapping'), + resetBody: s__( + "AlertSettings|If you edit the payload, the stored mapping will be reset, and you'll need to re-map the fields.", + ), + resetOk: s__('AlertSettings|Proceed with editing'), + editPayload: s__('AlertSettings|Edit payload'), + parsePayload: s__('AlertSettings|Parse payload for custom mapping'), + payloadParsedSucessMsg: s__( + 'AlertSettings|Sample payload has been parsed. You can now map the fields.', + ), + }, + mapFields: { + label: s__('AlertSettings|Customize alert payload mapping (optional)'), + intro: s__( + 'AlertSettings|If you intend to create a custom mapping, provide an example payload from your monitoring tool and click "parse payload fields" button to continue. The sample payload is required for completing the custom mapping; if you want to skip the mapping step, progress straight to saving your integration.', + ), + }, + prometheusFormUrl: { + label: s__('AlertSettings|Prometheus API base URL'), + help: s__('AlertSettings|URL cannot be blank and must start with http or https'), + }, + restKeyInfo: { + label: s__( + 'AlertSettings|Resetting the authorization key for this project will require updating the authorization key in every alert source it is enabled in.', + ), + }, + }, + saveIntegration: s__('AlertSettings|Save integration'), changesSaved: s__('AlertSettings|Your integration was successfully updated.'), - prometheusInfo: s__('AlertSettings|Add URL and auth key to your Prometheus config file'), - integrationsInfo: s__( - 'AlertSettings|Learn more about our our upcoming %{linkStart}integrations%{linkEnd}', - ), - resetKey: s__('AlertSettings|Reset key'), - copyToClipboard: s__('AlertSettings|Copy'), - apiBaseUrlLabel: s__('AlertSettings|API URL'), - authKeyLabel: s__('AlertSettings|Authorization key'), - urlLabel: s__('AlertSettings|Webhook URL'), - activeLabel: s__('AlertSettings|Active'), - apiBaseUrlHelpText: s__('AlertSettings|URL cannot be blank and must start with http or https'), - testAlertInfo: s__('AlertSettings|Test alert payload'), - alertJson: s__('AlertSettings|Alert test payload'), - alertJsonPlaceholder: s__('AlertSettings|Enter test alert JSON....'), - testAlertFailed: s__('AlertSettings|Test failed. Do you still want to save your changes anyway?'), - testAlertSuccess: s__( - 'AlertSettings|Test alert sent successfully. If you have made other changes, please save them now.', - ), - authKeyRest: s__( - 'AlertSettings|Authorization key has been successfully reset. Please save your changes now.', - ), - integration: s__('AlertSettings|Integration'), + cancelAndClose: __('Cancel and close'), + send: s__('AlertSettings|Send'), + copy: __('Copy'), }; -export const integrationTypes = [ - { value: '', text: s__('AlertSettings|Select integration type') }, - { value: 'HTTP', text: s__('AlertSettings|HTTP Endpoint') }, - { value: 'PROMETHEUS', text: s__('AlertSettings|External Prometheus') }, -]; +export const integrationSteps = { + selectType: 'SELECT_TYPE', + nameIntegration: 'NAME_INTEGRATION', + setPrometheusApiUrl: 'SET_PROMETHEUS_API_URL', + setSamplePayload: 'SET_SAMPLE_PAYLOAD', + customizeMapping: 'CUSTOMIZE_MAPPING', +}; + +export const createStepNumbers = { + [integrationSteps.selectType]: 1, + [integrationSteps.nameIntegration]: 2, + [integrationSteps.setPrometheusApiUrl]: 2, + [integrationSteps.setSamplePayload]: 3, + [integrationSteps.customizeMapping]: 4, +}; + +export const editStepNumbers = { + [integrationSteps.selectType]: 1, + [integrationSteps.nameIntegration]: 1, + [integrationSteps.setPrometheusApiUrl]: null, + [integrationSteps.setSamplePayload]: 2, + [integrationSteps.customizeMapping]: 3, +}; + +export const integrationTypes = { + none: { value: '', text: s__('AlertSettings|Select integration type') }, + http: { value: 'HTTP', text: s__('AlertSettings|HTTP Endpoint') }, + prometheus: { value: 'PROMETHEUS', text: s__('AlertSettings|External Prometheus') }, +}; export const typeSet = { http: 'HTTP', @@ -57,14 +113,18 @@ export const JSON_VALIDATE_DELAY = 250; export const targetPrometheusUrlPlaceholder = 'http://prometheus.example.com/'; -export const sectionHash = 'js-alert-management-settings'; - -/* eslint-disable @gitlab/require-i18n-strings */ - /** * Tracks snowplow event when user views alerts integration list */ export const trackAlertIntegrationsViewsOptions = { + /* eslint-disable-next-line @gitlab/require-i18n-strings */ category: 'Alert Integrations', action: 'view_alert_integrations_list', }; + +export const mappingFields = { + mapping: 'mapping', + fallback: 'fallback', +}; + +export const viewCredentialsTabIndex = 1; diff --git a/app/assets/javascripts/alerts_settings/graphql.js b/app/assets/javascripts/alerts_settings/graphql.js index 5fd05169533..c6c19d26adb 100644 --- a/app/assets/javascripts/alerts_settings/graphql.js +++ b/app/assets/javascripts/alerts_settings/graphql.js @@ -10,7 +10,18 @@ const resolvers = { Mutation: { updateCurrentIntegration: ( _, - { id = null, name, active, token, type, url, apiUrl }, + { + id = null, + name, + active, + token, + type, + url, + apiUrl, + payloadExample, + payloadAttributeMappings, + payloadAlertFields, + }, { cache }, ) => { const sourceData = cache.readQuery({ query: getCurrentIntegrationQuery }); @@ -28,6 +39,9 @@ const resolvers = { type, url, apiUrl, + payloadExample, + payloadAttributeMappings, + payloadAlertFields, }; } }); diff --git a/app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_item.fragment.graphql b/app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_item.fragment.graphql new file mode 100644 index 00000000000..742228e2928 --- /dev/null +++ b/app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_item.fragment.graphql @@ -0,0 +1,7 @@ +#import "./integration_item.fragment.graphql" +#import "ee_else_ce/alerts_settings/graphql/fragments/http_integration_payload_data.fragment.graphql" + +fragment HttpIntegrationItem on AlertManagementHttpIntegration { + ...IntegrationItem + ...HttpIntegrationPayloadData +} diff --git a/app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_payload_data.fragment.graphql b/app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_payload_data.fragment.graphql new file mode 100644 index 00000000000..df6ad0b712d --- /dev/null +++ b/app/assets/javascripts/alerts_settings/graphql/fragments/http_integration_payload_data.fragment.graphql @@ -0,0 +1,3 @@ +fragment HttpIntegrationPayloadData on AlertManagementHttpIntegration { + id +} diff --git a/app/assets/javascripts/alerts_settings/graphql/mutations/create_http_integration.mutation.graphql b/app/assets/javascripts/alerts_settings/graphql/mutations/create_http_integration.mutation.graphql index f3fc10b4bd4..babcdea935d 100644 --- a/app/assets/javascripts/alerts_settings/graphql/mutations/create_http_integration.mutation.graphql +++ b/app/assets/javascripts/alerts_settings/graphql/mutations/create_http_integration.mutation.graphql @@ -1,24 +1,10 @@ -#import "../fragments/integration_item.fragment.graphql" +#import "../fragments/http_integration_item.fragment.graphql" -mutation createHttpIntegration( - $projectPath: ID! - $name: String! - $active: Boolean! - $payloadExample: JsonString - $payloadAttributeMappings: [AlertManagementPayloadAlertFieldInput!] -) { - httpIntegrationCreate( - input: { - projectPath: $projectPath - name: $name - active: $active - payloadExample: $payloadExample - payloadAttributeMappings: $payloadAttributeMappings - } - ) { +mutation createHttpIntegration($projectPath: ID!, $name: String!, $active: Boolean!) { + httpIntegrationCreate(input: { projectPath: $projectPath, name: $name, active: $active }) { errors integration { - ...IntegrationItem + ...HttpIntegrationItem } } } diff --git a/app/assets/javascripts/alerts_settings/graphql/mutations/destroy_http_integration.mutation.graphql b/app/assets/javascripts/alerts_settings/graphql/mutations/destroy_http_integration.mutation.graphql index 0a49c140e6a..a3a50651fd0 100644 --- a/app/assets/javascripts/alerts_settings/graphql/mutations/destroy_http_integration.mutation.graphql +++ b/app/assets/javascripts/alerts_settings/graphql/mutations/destroy_http_integration.mutation.graphql @@ -1,10 +1,10 @@ -#import "../fragments/integration_item.fragment.graphql" +#import "../fragments/http_integration_item.fragment.graphql" mutation destroyHttpIntegration($id: ID!) { httpIntegrationDestroy(input: { id: $id }) { errors integration { - ...IntegrationItem + ...HttpIntegrationItem } } } diff --git a/app/assets/javascripts/alerts_settings/graphql/mutations/reset_http_token.mutation.graphql b/app/assets/javascripts/alerts_settings/graphql/mutations/reset_http_token.mutation.graphql index 178d1e13047..c0754d8e32b 100644 --- a/app/assets/javascripts/alerts_settings/graphql/mutations/reset_http_token.mutation.graphql +++ b/app/assets/javascripts/alerts_settings/graphql/mutations/reset_http_token.mutation.graphql @@ -1,10 +1,10 @@ -#import "../fragments/integration_item.fragment.graphql" +#import "../fragments/http_integration_item.fragment.graphql" mutation resetHttpIntegrationToken($id: ID!) { httpIntegrationResetToken(input: { id: $id }) { errors integration { - ...IntegrationItem + ...HttpIntegrationItem } } } diff --git a/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_http_integration.mutation.graphql b/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_http_integration.mutation.graphql new file mode 100644 index 00000000000..5f3d305993c --- /dev/null +++ b/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_http_integration.mutation.graphql @@ -0,0 +1,25 @@ +mutation updateCurrentHttpIntegration( + $id: String + $name: String + $active: Boolean + $token: String + $type: String + $url: String + $apiUrl: String + $payloadExample: JsonString + $payloadAttributeMappings: [AlertManagementPayloadAlertFieldInput!] + $payloadAlertFields: [AlertManagementPayloadAlertField!] +) { + updateCurrentIntegration( + id: $id + name: $name + active: $active + token: $token + type: $type + url: $url + apiUrl: $apiUrl + payloadExample: $payloadExample + payloadAttributeMappings: $payloadAttributeMappings + payloadAlertFields: $payloadAlertFields + ) @client +} diff --git a/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_intergration.mutation.graphql b/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_intergration.mutation.graphql deleted file mode 100644 index 3505241309e..00000000000 --- a/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_intergration.mutation.graphql +++ /dev/null @@ -1,19 +0,0 @@ -mutation updateCurrentIntegration( - $id: String - $name: String - $active: Boolean - $token: String - $type: String - $url: String - $apiUrl: String -) { - updateCurrentIntegration( - id: $id - name: $name - active: $active - token: $token - type: $type - url: $url - apiUrl: $apiUrl - ) @client -} diff --git a/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_prometheus_integration.mutation.graphql b/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_prometheus_integration.mutation.graphql new file mode 100644 index 00000000000..5bd63820629 --- /dev/null +++ b/app/assets/javascripts/alerts_settings/graphql/mutations/update_current_prometheus_integration.mutation.graphql @@ -0,0 +1,21 @@ +mutation updateCurrentPrometheusIntegration( + $id: String + $name: String + $active: Boolean + $token: String + $type: String + $url: String + $apiUrl: String + $samplePayload: String +) { + updateCurrentIntegration( + id: $id + name: $name + active: $active + token: $token + type: $type + url: $url + apiUrl: $apiUrl + samplePayload: $samplePayload + ) @client +} diff --git a/app/assets/javascripts/alerts_settings/graphql/mutations/update_http_integration.mutation.graphql b/app/assets/javascripts/alerts_settings/graphql/mutations/update_http_integration.mutation.graphql index bb5b334deeb..37df9ec25eb 100644 --- a/app/assets/javascripts/alerts_settings/graphql/mutations/update_http_integration.mutation.graphql +++ b/app/assets/javascripts/alerts_settings/graphql/mutations/update_http_integration.mutation.graphql @@ -1,10 +1,10 @@ -#import "../fragments/integration_item.fragment.graphql" +#import "../fragments/http_integration_item.fragment.graphql" mutation updateHttpIntegration($id: ID!, $name: String!, $active: Boolean!) { httpIntegrationUpdate(input: { id: $id, name: $name, active: $active }) { errors integration { - ...IntegrationItem + ...HttpIntegrationItem } } } diff --git a/app/assets/javascripts/alerts_settings/graphql/queries/get_http_integrations.query.graphql b/app/assets/javascripts/alerts_settings/graphql/queries/get_http_integrations.query.graphql new file mode 100644 index 00000000000..833a2d6c12f --- /dev/null +++ b/app/assets/javascripts/alerts_settings/graphql/queries/get_http_integrations.query.graphql @@ -0,0 +1,12 @@ +#import "ee_else_ce/alerts_settings/graphql/fragments/http_integration_payload_data.fragment.graphql" + +# TODO: this query need to accept http integration id to request a sepcific integration +query getHttpIntegrations($projectPath: ID!) { + project(fullPath: $projectPath) { + alertManagementHttpIntegrations { + nodes { + ...HttpIntegrationPayloadData + } + } + } +} diff --git a/app/assets/javascripts/alerts_settings/graphql/queries/parse_sample_payload.query.graphql b/app/assets/javascripts/alerts_settings/graphql/queries/parse_sample_payload.query.graphql new file mode 100644 index 00000000000..159b2661f0b --- /dev/null +++ b/app/assets/javascripts/alerts_settings/graphql/queries/parse_sample_payload.query.graphql @@ -0,0 +1,9 @@ +query parsePayloadFields($projectPath: ID!, $payload: String!) { + project(fullPath: $projectPath) { + alertManagementPayloadFields(payloadExample: $payload) { + path + label + type + } + } +} diff --git a/app/assets/javascripts/alerts_settings/index.js b/app/assets/javascripts/alerts_settings/index.js index 8506b3fda01..321af9fedb6 100644 --- a/app/assets/javascripts/alerts_settings/index.js +++ b/app/assets/javascripts/alerts_settings/index.js @@ -63,10 +63,7 @@ export default (el) => { render(createElement) { return createElement('alert-settings-wrapper', { props: { - alertFields: - gon.features?.multipleHttpIntegrationsCustomMapping && parseBoolean(multiIntegrations) - ? JSON.parse(alertFields) - : null, + alertFields: parseBoolean(multiIntegrations) ? JSON.parse(alertFields) : null, }, }); }, diff --git a/app/assets/javascripts/alerts_settings/utils/cache_updates.js b/app/assets/javascripts/alerts_settings/utils/cache_updates.js index 758f3eb6dd4..c29160c1e39 100644 --- a/app/assets/javascripts/alerts_settings/utils/cache_updates.js +++ b/app/assets/javascripts/alerts_settings/utils/cache_updates.js @@ -60,6 +60,32 @@ const addIntegrationToStore = ( }); }; +const addHttpIntegrationToStore = (store, query, { httpIntegrationCreate }, variables) => { + const integration = httpIntegrationCreate?.integration; + if (!integration) { + return; + } + + const sourceData = store.readQuery({ + query, + variables, + }); + + const data = produce(sourceData, (draftData) => { + // eslint-disable-next-line no-param-reassign + draftData.project.alertManagementHttpIntegrations.nodes = [ + integration, + ...draftData.project.alertManagementHttpIntegrations.nodes, + ]; + }); + + store.writeQuery({ + query, + variables, + data, + }); +}; + const onError = (data, message) => { createFlash({ message }); throw new Error(data.errors); @@ -82,3 +108,11 @@ export const updateStoreAfterIntegrationAdd = (store, query, data, variables) => addIntegrationToStore(store, query, data, variables); } }; + +export const updateStoreAfterHttpIntegrationAdd = (store, query, data, variables) => { + if (hasErrors(data)) { + onError(data, ADD_INTEGRATION_ERROR); + } else { + addHttpIntegrationToStore(store, query, data, variables); + } +}; diff --git a/app/assets/javascripts/alerts_settings/utils/error_messages.js b/app/assets/javascripts/alerts_settings/utils/error_messages.js index 979d1ca3ccc..e380257f983 100644 --- a/app/assets/javascripts/alerts_settings/utils/error_messages.js +++ b/app/assets/javascripts/alerts_settings/utils/error_messages.js @@ -17,5 +17,5 @@ export const RESET_INTEGRATION_TOKEN_ERROR = s__( ); export const INTEGRATION_PAYLOAD_TEST_ERROR = s__( - 'AlertsIntegrations|Integration payload is invalid. You can still save your changes.', + 'AlertsIntegrations|Integration payload is invalid.', ); diff --git a/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js b/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js index a86103540c0..5c4b9bcd505 100644 --- a/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js +++ b/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js @@ -1,3 +1,4 @@ +import { isEqual } from 'lodash'; /** * Given data for GitLab alert fields, parsed payload fields data and previously stored mapping (if any) * creates an object in a form convenient to build UI && interact with it @@ -10,16 +11,19 @@ export const getMappingData = (gitlabFields, payloadFields, savedMapping) => { return gitlabFields.map((gitlabField) => { // find fields from payload that match gitlab alert field by type - const mappingFields = payloadFields.filter(({ type }) => gitlabField.types.includes(type)); + const mappingFields = payloadFields.filter(({ type }) => + gitlabField.types.includes(type.toLowerCase()), + ); // find the mapping that was previously stored - const foundMapping = savedMapping.find(({ fieldName }) => fieldName === gitlabField.name); - - const { fallbackAlertPaths, payloadAlertPaths } = foundMapping || {}; + const foundMapping = savedMapping.find( + ({ fieldName }) => fieldName.toLowerCase() === gitlabField.name, + ); + const { path: mapping, fallbackPath: fallback } = foundMapping || {}; return { - mapping: payloadAlertPaths, - fallback: fallbackAlertPaths, + mapping, + fallback, searchTerm: '', fallbackSearchTerm: '', mappingFields, @@ -36,7 +40,7 @@ export const getMappingData = (gitlabFields, payloadFields, savedMapping) => { */ export const transformForSave = (mappingData) => { return mappingData.reduce((acc, field) => { - const mapped = field.mappingFields.find(({ name }) => name === field.mapping); + const mapped = field.mappingFields.find(({ path }) => isEqual(path, field.mapping)); if (mapped) { const { path, type, label } = mapped; acc.push({ @@ -49,13 +53,3 @@ export const transformForSave = (mappingData) => { return acc; }, []); }; - -/** - * Adds `name` prop to each provided by BE parsed payload field - * @param {Object} payload - parsed sample payload - * - * @return {Object} same as input with an extra `name` property which basically serves as a key to make a match - */ -export const getPayloadFields = (payload) => { - return payload.map((field) => ({ ...field, name: field.path.join('_') })); -}; diff --git a/app/assets/javascripts/analytics/devops_report/components/usage_ping_disabled.vue b/app/assets/javascripts/analytics/devops_report/components/usage_ping_disabled.vue new file mode 100644 index 00000000000..c0ad814172d --- /dev/null +++ b/app/assets/javascripts/analytics/devops_report/components/usage_ping_disabled.vue @@ -0,0 +1,53 @@ + + diff --git a/app/assets/javascripts/analytics/devops_report/devops_score_empty_state.js b/app/assets/javascripts/analytics/devops_report/devops_score_empty_state.js new file mode 100644 index 00000000000..0cb8d9be0e4 --- /dev/null +++ b/app/assets/javascripts/analytics/devops_report/devops_score_empty_state.js @@ -0,0 +1,27 @@ +import Vue from 'vue'; +import UserCallout from '~/user_callout'; +import UsagePingDisabled from './components/usage_ping_disabled.vue'; + +export default () => { + // eslint-disable-next-line no-new + new UserCallout(); + + const emptyStateContainer = document.getElementById('js-devops-empty-state'); + + if (!emptyStateContainer) return false; + + const { emptyStateSvgPath, enableUsagePingLink, docsLink, isAdmin } = emptyStateContainer.dataset; + + return new Vue({ + el: emptyStateContainer, + provide: { + isAdmin: Boolean(isAdmin), + svgPath: emptyStateSvgPath, + primaryButtonPath: enableUsagePingLink, + docsLink, + }, + render(h) { + return h(UsagePingDisabled); + }, + }); +}; diff --git a/app/assets/javascripts/analytics/instance_statistics/components/app.vue b/app/assets/javascripts/analytics/instance_statistics/components/app.vue deleted file mode 100644 index 3bf41eaa008..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/components/app.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/app/assets/javascripts/analytics/instance_statistics/components/charts_config.js b/app/assets/javascripts/analytics/instance_statistics/components/charts_config.js deleted file mode 100644 index 6fba3c56cfe..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/components/charts_config.js +++ /dev/null @@ -1,87 +0,0 @@ -import { s__, __, sprintf } from '~/locale'; -import query from '../graphql/queries/instance_count.query.graphql'; - -const noDataMessage = s__('InstanceStatistics|No data available.'); - -export default [ - { - loadChartError: sprintf( - s__( - 'InstanceStatistics|Could not load the pipelines chart. Please refresh the page to try again.', - ), - ), - noDataMessage, - chartTitle: s__('InstanceStatistics|Pipelines'), - yAxisTitle: s__('InstanceStatistics|Items'), - xAxisTitle: s__('InstanceStatistics|Month'), - queries: [ - { - query, - title: s__('InstanceStatistics|Pipelines total'), - identifier: 'PIPELINES', - loadError: sprintf( - s__('InstanceStatistics|There was an error fetching the total pipelines'), - ), - }, - { - query, - title: s__('InstanceStatistics|Pipelines succeeded'), - identifier: 'PIPELINES_SUCCEEDED', - loadError: sprintf( - s__('InstanceStatistics|There was an error fetching the successful pipelines'), - ), - }, - { - query, - title: s__('InstanceStatistics|Pipelines failed'), - identifier: 'PIPELINES_FAILED', - loadError: sprintf( - s__('InstanceStatistics|There was an error fetching the failed pipelines'), - ), - }, - { - query, - title: s__('InstanceStatistics|Pipelines canceled'), - identifier: 'PIPELINES_CANCELED', - loadError: sprintf( - s__('InstanceStatistics|There was an error fetching the cancelled pipelines'), - ), - }, - { - query, - title: s__('InstanceStatistics|Pipelines skipped'), - identifier: 'PIPELINES_SKIPPED', - loadError: sprintf( - s__('InstanceStatistics|There was an error fetching the skipped pipelines'), - ), - }, - ], - }, - { - loadChartError: sprintf( - s__( - 'InstanceStatistics|Could not load the issues and merge requests chart. Please refresh the page to try again.', - ), - ), - noDataMessage, - chartTitle: s__('InstanceStatistics|Issues & Merge Requests'), - yAxisTitle: s__('InstanceStatistics|Items'), - xAxisTitle: s__('InstanceStatistics|Month'), - queries: [ - { - query, - title: __('Issues'), - identifier: 'ISSUES', - loadError: sprintf(s__('InstanceStatistics|There was an error fetching the issues')), - }, - { - query, - title: __('Merge requests'), - identifier: 'MERGE_REQUESTS', - loadError: sprintf( - s__('InstanceStatistics|There was an error fetching the merge requests'), - ), - }, - ], - }, -]; diff --git a/app/assets/javascripts/analytics/instance_statistics/components/instance_counts.vue b/app/assets/javascripts/analytics/instance_statistics/components/instance_counts.vue deleted file mode 100644 index f3779ed62e9..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/components/instance_counts.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - diff --git a/app/assets/javascripts/analytics/instance_statistics/components/instance_statistics_count_chart.vue b/app/assets/javascripts/analytics/instance_statistics/components/instance_statistics_count_chart.vue deleted file mode 100644 index e2defe0572d..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/components/instance_statistics_count_chart.vue +++ /dev/null @@ -1,206 +0,0 @@ - - diff --git a/app/assets/javascripts/analytics/instance_statistics/components/projects_and_groups_chart.vue b/app/assets/javascripts/analytics/instance_statistics/components/projects_and_groups_chart.vue deleted file mode 100644 index 3ffec90fb68..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/components/projects_and_groups_chart.vue +++ /dev/null @@ -1,224 +0,0 @@ - - diff --git a/app/assets/javascripts/analytics/instance_statistics/components/users_chart.vue b/app/assets/javascripts/analytics/instance_statistics/components/users_chart.vue deleted file mode 100644 index 73940f028a1..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/components/users_chart.vue +++ /dev/null @@ -1,143 +0,0 @@ - - diff --git a/app/assets/javascripts/analytics/instance_statistics/constants.js b/app/assets/javascripts/analytics/instance_statistics/constants.js deleted file mode 100644 index 846c0ef408b..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/constants.js +++ /dev/null @@ -1,5 +0,0 @@ -import { getDateInPast } from '~/lib/utils/datetime_utility'; - -export const TOTAL_DAYS_TO_SHOW = 365; -export const TODAY = new Date(); -export const START_DATE = getDateInPast(TODAY, TOTAL_DAYS_TO_SHOW); diff --git a/app/assets/javascripts/analytics/instance_statistics/graphql/fragments/count.fragment.graphql b/app/assets/javascripts/analytics/instance_statistics/graphql/fragments/count.fragment.graphql deleted file mode 100644 index 40cef95c2e7..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/graphql/fragments/count.fragment.graphql +++ /dev/null @@ -1,4 +0,0 @@ -fragment Count on InstanceStatisticsMeasurement { - count - recordedAt -} diff --git a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/groups.query.graphql b/app/assets/javascripts/analytics/instance_statistics/graphql/queries/groups.query.graphql deleted file mode 100644 index ec56d91ffaa..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/groups.query.graphql +++ /dev/null @@ -1,13 +0,0 @@ -#import "~/graphql_shared/fragments/pageInfo.fragment.graphql" -#import "../fragments/count.fragment.graphql" - -query getGroupsCount($first: Int, $after: String) { - groups: instanceStatisticsMeasurements(identifier: GROUPS, first: $first, after: $after) { - nodes { - ...Count - } - pageInfo { - ...PageInfo - } - } -} diff --git a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_count.query.graphql b/app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_count.query.graphql deleted file mode 100644 index dd22a16cd51..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_count.query.graphql +++ /dev/null @@ -1,13 +0,0 @@ -#import "~/graphql_shared/fragments/pageInfo.fragment.graphql" -#import "../fragments/count.fragment.graphql" - -query getCount($identifier: MeasurementIdentifier!, $first: Int, $after: String) { - instanceStatisticsMeasurements(identifier: $identifier, first: $first, after: $after) { - nodes { - ...Count - } - pageInfo { - ...PageInfo - } - } -} diff --git a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_statistics_count.query.graphql b/app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_statistics_count.query.graphql deleted file mode 100644 index f14c2658674..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/instance_statistics_count.query.graphql +++ /dev/null @@ -1,34 +0,0 @@ -#import "../fragments/count.fragment.graphql" - -query getInstanceCounts { - projects: instanceStatisticsMeasurements(identifier: PROJECTS, first: 1) { - nodes { - ...Count - } - } - groups: instanceStatisticsMeasurements(identifier: GROUPS, first: 1) { - nodes { - ...Count - } - } - users: instanceStatisticsMeasurements(identifier: USERS, first: 1) { - nodes { - ...Count - } - } - issues: instanceStatisticsMeasurements(identifier: ISSUES, first: 1) { - nodes { - ...Count - } - } - mergeRequests: instanceStatisticsMeasurements(identifier: MERGE_REQUESTS, first: 1) { - nodes { - ...Count - } - } - pipelines: instanceStatisticsMeasurements(identifier: PIPELINES, first: 1) { - nodes { - ...Count - } - } -} diff --git a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/projects.query.graphql b/app/assets/javascripts/analytics/instance_statistics/graphql/queries/projects.query.graphql deleted file mode 100644 index 0845b703435..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/projects.query.graphql +++ /dev/null @@ -1,13 +0,0 @@ -#import "~/graphql_shared/fragments/pageInfo.fragment.graphql" -#import "../fragments/count.fragment.graphql" - -query getProjectsCount($first: Int, $after: String) { - projects: instanceStatisticsMeasurements(identifier: PROJECTS, first: $first, after: $after) { - nodes { - ...Count - } - pageInfo { - ...PageInfo - } - } -} diff --git a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/users.query.graphql b/app/assets/javascripts/analytics/instance_statistics/graphql/queries/users.query.graphql deleted file mode 100644 index 6235e36eb89..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/graphql/queries/users.query.graphql +++ /dev/null @@ -1,13 +0,0 @@ -#import "~/graphql_shared/fragments/pageInfo.fragment.graphql" -#import "../fragments/count.fragment.graphql" - -query getUsersCount($first: Int, $after: String) { - users: instanceStatisticsMeasurements(identifier: USERS, first: $first, after: $after) { - nodes { - ...Count - } - pageInfo { - ...PageInfo - } - } -} diff --git a/app/assets/javascripts/analytics/instance_statistics/index.js b/app/assets/javascripts/analytics/instance_statistics/index.js deleted file mode 100644 index 0d7dcf6ace8..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/index.js +++ /dev/null @@ -1,24 +0,0 @@ -import Vue from 'vue'; -import VueApollo from 'vue-apollo'; -import createDefaultClient from '~/lib/graphql'; -import InstanceStatisticsApp from './components/app.vue'; - -Vue.use(VueApollo); - -const apolloProvider = new VueApollo({ - defaultClient: createDefaultClient(), -}); - -export default () => { - const el = document.getElementById('js-instance-statistics-app'); - - if (!el) return false; - - return new Vue({ - el, - apolloProvider, - render(h) { - return h(InstanceStatisticsApp); - }, - }); -}; diff --git a/app/assets/javascripts/analytics/instance_statistics/utils.js b/app/assets/javascripts/analytics/instance_statistics/utils.js deleted file mode 100644 index 396962ffad6..00000000000 --- a/app/assets/javascripts/analytics/instance_statistics/utils.js +++ /dev/null @@ -1,68 +0,0 @@ -import { masks } from 'dateformat'; -import { get } from 'lodash'; -import { formatDate } from '~/lib/utils/datetime_utility'; - -const { isoDate } = masks; - -/** - * Takes an array of items and returns one item per month with the average of the `count`s from that month - * @param {Array} items - * @param {Number} items[index].count value to be averaged - * @param {String} items[index].recordedAt item dateTime time stamp to be collected into a month - * @param {Object} options - * @param {Object} options.shouldRound an option to specify whether the retuned averages should be rounded - * @return {Array} items collected into [month, average], - * where month is a dateTime string representing the first of the given month - * and average is the average of the count - */ -export function getAverageByMonth(items = [], options = {}) { - const { shouldRound = false } = options; - const itemsMap = items.reduce((memo, item) => { - const { count, recordedAt } = item; - const date = new Date(recordedAt); - const month = formatDate(new Date(date.getFullYear(), date.getMonth(), 1), isoDate); - if (memo[month]) { - const { sum, recordCount } = memo[month]; - return { ...memo, [month]: { sum: sum + count, recordCount: recordCount + 1 } }; - } - - return { ...memo, [month]: { sum: count, recordCount: 1 } }; - }, {}); - - return Object.keys(itemsMap).map((month) => { - const { sum, recordCount } = itemsMap[month]; - const avg = sum / recordCount; - if (shouldRound) { - return [month, Math.round(avg)]; - } - - return [month, avg]; - }); -} - -/** - * Takes an array of instance counts and returns the last item in the list - * @param {Array} arr array of instance counts in the form { count: Number, recordedAt: date String } - * @return {String} the 'recordedAt' value of the earliest item - */ -export const getEarliestDate = (arr = []) => { - const len = arr.length; - return get(arr, `[${len - 1}].recordedAt`, null); -}; - -/** - * Takes an array of queries and produces an object with the query identifier as key - * and a supplied defaultValue as its value - * @param {Array} queries array of chart query configs, - * see ./analytics/instance_statistics/components/charts_config.js - * @param {any} defaultValue value to set each identifier to - * @return {Object} key value pair of the form { queryIdentifier: defaultValue } - */ -export const generateDataKeys = (queries, defaultValue) => - queries.reduce( - (acc, { identifier }) => ({ - ...acc, - [identifier]: defaultValue, - }), - {}, - ); diff --git a/app/assets/javascripts/analytics/usage_trends/components/app.vue b/app/assets/javascripts/analytics/usage_trends/components/app.vue new file mode 100644 index 00000000000..4c5ddd7f458 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/components/app.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/assets/javascripts/analytics/usage_trends/components/charts_config.js b/app/assets/javascripts/analytics/usage_trends/components/charts_config.js new file mode 100644 index 00000000000..014f823cdc4 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/components/charts_config.js @@ -0,0 +1,106 @@ +import { s__, __ } from '~/locale'; +import query from '../graphql/queries/usage_count.query.graphql'; + +const noDataMessage = s__('UsageTrends|No data available.'); + +export default [ + { + loadChartError: s__( + 'UsageTrends|Could not load the projects and groups chart. Please refresh the page to try again.', + ), + noDataMessage, + chartTitle: s__('UsageTrends|Total projects & groups'), + yAxisTitle: s__('UsageTrends|Total projects & groups'), + xAxisTitle: s__('UsageTrends|Month'), + queries: [ + { + query, + title: s__('UsageTrends|Total projects'), + identifier: 'PROJECTS', + loadError: s__('UsageTrends|There was an error fetching the projects. Please try again.'), + }, + { + query, + title: s__('UsageTrends|Total groups'), + identifier: 'GROUPS', + loadError: s__('UsageTrends|There was an error fetching the groups. Please try again.'), + }, + ], + }, + { + loadChartError: s__( + 'UsageTrends|Could not load the pipelines chart. Please refresh the page to try again.', + ), + noDataMessage, + chartTitle: s__('UsageTrends|Pipelines'), + yAxisTitle: s__('UsageTrends|Items'), + xAxisTitle: s__('UsageTrends|Month'), + queries: [ + { + query, + title: s__('UsageTrends|Pipelines total'), + identifier: 'PIPELINES', + loadError: s__( + 'UsageTrends|There was an error fetching the total pipelines. Please try again.', + ), + }, + { + query, + title: s__('UsageTrends|Pipelines succeeded'), + identifier: 'PIPELINES_SUCCEEDED', + loadError: s__( + 'UsageTrends|There was an error fetching the successful pipelines. Please try again.', + ), + }, + { + query, + title: s__('UsageTrends|Pipelines failed'), + identifier: 'PIPELINES_FAILED', + loadError: s__( + 'UsageTrends|There was an error fetching the failed pipelines. Please try again.', + ), + }, + { + query, + title: s__('UsageTrends|Pipelines canceled'), + identifier: 'PIPELINES_CANCELED', + loadError: s__( + 'UsageTrends|There was an error fetching the cancelled pipelines. Please try again.', + ), + }, + { + query, + title: s__('UsageTrends|Pipelines skipped'), + identifier: 'PIPELINES_SKIPPED', + loadError: s__( + 'UsageTrends|There was an error fetching the skipped pipelines. Please try again.', + ), + }, + ], + }, + { + loadChartError: s__( + 'UsageTrends|Could not load the issues and merge requests chart. Please refresh the page to try again.', + ), + noDataMessage, + chartTitle: s__('UsageTrends|Issues & Merge Requests'), + yAxisTitle: s__('UsageTrends|Items'), + xAxisTitle: s__('UsageTrends|Month'), + queries: [ + { + query, + title: __('Issues'), + identifier: 'ISSUES', + loadError: s__('UsageTrends|There was an error fetching the issues. Please try again.'), + }, + { + query, + title: __('Merge requests'), + identifier: 'MERGE_REQUESTS', + loadError: s__( + 'UsageTrends|There was an error fetching the merge requests. Please try again.', + ), + }, + ], + }, +]; diff --git a/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue b/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue new file mode 100644 index 00000000000..0630cca93ae --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue @@ -0,0 +1,63 @@ + + + diff --git a/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue b/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue new file mode 100644 index 00000000000..8d7761694d1 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue @@ -0,0 +1,206 @@ + + diff --git a/app/assets/javascripts/analytics/usage_trends/components/users_chart.vue b/app/assets/javascripts/analytics/usage_trends/components/users_chart.vue new file mode 100644 index 00000000000..09dfcddcb73 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/components/users_chart.vue @@ -0,0 +1,143 @@ + + diff --git a/app/assets/javascripts/analytics/usage_trends/constants.js b/app/assets/javascripts/analytics/usage_trends/constants.js new file mode 100644 index 00000000000..846c0ef408b --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/constants.js @@ -0,0 +1,5 @@ +import { getDateInPast } from '~/lib/utils/datetime_utility'; + +export const TOTAL_DAYS_TO_SHOW = 365; +export const TODAY = new Date(); +export const START_DATE = getDateInPast(TODAY, TOTAL_DAYS_TO_SHOW); diff --git a/app/assets/javascripts/analytics/usage_trends/graphql/fragments/count.fragment.graphql b/app/assets/javascripts/analytics/usage_trends/graphql/fragments/count.fragment.graphql new file mode 100644 index 00000000000..2bde5973600 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/graphql/fragments/count.fragment.graphql @@ -0,0 +1,4 @@ +fragment Count on UsageTrendsMeasurement { + count + recordedAt +} diff --git a/app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_count.query.graphql b/app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_count.query.graphql new file mode 100644 index 00000000000..2a5546efb68 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_count.query.graphql @@ -0,0 +1,13 @@ +#import "~/graphql_shared/fragments/pageInfo.fragment.graphql" +#import "../fragments/count.fragment.graphql" + +query getCount($identifier: MeasurementIdentifier!, $first: Int, $after: String) { + usageTrendsMeasurements(identifier: $identifier, first: $first, after: $after) { + nodes { + ...Count + } + pageInfo { + ...PageInfo + } + } +} diff --git a/app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_trends_count.query.graphql b/app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_trends_count.query.graphql new file mode 100644 index 00000000000..8cadcfae380 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/graphql/queries/usage_trends_count.query.graphql @@ -0,0 +1,34 @@ +#import "../fragments/count.fragment.graphql" + +query getInstanceCounts { + projects: usageTrendsMeasurements(identifier: PROJECTS, first: 1) { + nodes { + ...Count + } + } + groups: usageTrendsMeasurements(identifier: GROUPS, first: 1) { + nodes { + ...Count + } + } + users: usageTrendsMeasurements(identifier: USERS, first: 1) { + nodes { + ...Count + } + } + issues: usageTrendsMeasurements(identifier: ISSUES, first: 1) { + nodes { + ...Count + } + } + mergeRequests: usageTrendsMeasurements(identifier: MERGE_REQUESTS, first: 1) { + nodes { + ...Count + } + } + pipelines: usageTrendsMeasurements(identifier: PIPELINES, first: 1) { + nodes { + ...Count + } + } +} diff --git a/app/assets/javascripts/analytics/usage_trends/graphql/queries/users.query.graphql b/app/assets/javascripts/analytics/usage_trends/graphql/queries/users.query.graphql new file mode 100644 index 00000000000..7c02ac49a42 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/graphql/queries/users.query.graphql @@ -0,0 +1,13 @@ +#import "~/graphql_shared/fragments/pageInfo.fragment.graphql" +#import "../fragments/count.fragment.graphql" + +query getUsersCount($first: Int, $after: String) { + users: usageTrendsMeasurements(identifier: USERS, first: $first, after: $after) { + nodes { + ...Count + } + pageInfo { + ...PageInfo + } + } +} diff --git a/app/assets/javascripts/analytics/usage_trends/index.js b/app/assets/javascripts/analytics/usage_trends/index.js new file mode 100644 index 00000000000..d1880b09f15 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/index.js @@ -0,0 +1,24 @@ +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; +import UsageTrendsApp from './components/app.vue'; + +Vue.use(VueApollo); + +const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient(), +}); + +export default () => { + const el = document.getElementById('js-usage-trends-app'); + + if (!el) return false; + + return new Vue({ + el, + apolloProvider, + render(h) { + return h(UsageTrendsApp); + }, + }); +}; diff --git a/app/assets/javascripts/analytics/usage_trends/utils.js b/app/assets/javascripts/analytics/usage_trends/utils.js new file mode 100644 index 00000000000..91907877ed6 --- /dev/null +++ b/app/assets/javascripts/analytics/usage_trends/utils.js @@ -0,0 +1,68 @@ +import { masks } from 'dateformat'; +import { get } from 'lodash'; +import { formatDate } from '~/lib/utils/datetime_utility'; + +const { isoDate } = masks; + +/** + * Takes an array of items and returns one item per month with the average of the `count`s from that month + * @param {Array} items + * @param {Number} items[index].count value to be averaged + * @param {String} items[index].recordedAt item dateTime time stamp to be collected into a month + * @param {Object} options + * @param {Object} options.shouldRound an option to specify whether the retuned averages should be rounded + * @return {Array} items collected into [month, average], + * where month is a dateTime string representing the first of the given month + * and average is the average of the count + */ +export function getAverageByMonth(items = [], options = {}) { + const { shouldRound = false } = options; + const itemsMap = items.reduce((memo, item) => { + const { count, recordedAt } = item; + const date = new Date(recordedAt); + const month = formatDate(new Date(date.getFullYear(), date.getMonth(), 1), isoDate); + if (memo[month]) { + const { sum, recordCount } = memo[month]; + return { ...memo, [month]: { sum: sum + count, recordCount: recordCount + 1 } }; + } + + return { ...memo, [month]: { sum: count, recordCount: 1 } }; + }, {}); + + return Object.keys(itemsMap).map((month) => { + const { sum, recordCount } = itemsMap[month]; + const avg = sum / recordCount; + if (shouldRound) { + return [month, Math.round(avg)]; + } + + return [month, avg]; + }); +} + +/** + * Takes an array of usage counts and returns the last item in the list + * @param {Array} arr array of usage counts in the form { count: Number, recordedAt: date String } + * @return {String} the 'recordedAt' value of the earliest item + */ +export const getEarliestDate = (arr = []) => { + const len = arr.length; + return get(arr, `[${len - 1}].recordedAt`, null); +}; + +/** + * Takes an array of queries and produces an object with the query identifier as key + * and a supplied defaultValue as its value + * @param {Array} queries array of chart query configs, + * see ./analytics/usage_trends/components/charts_config.js + * @param {any} defaultValue value to set each identifier to + * @return {Object} key value pair of the form { queryIdentifier: defaultValue } + */ +export const generateDataKeys = (queries, defaultValue) => + queries.reduce( + (acc, { identifier }) => ({ + ...acc, + [identifier]: defaultValue, + }), + {}, + ); diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index c7e6b98a934..2b589b71163 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -24,12 +24,14 @@ const Api = { projectPackagesPath: '/api/:version/projects/:id/packages', projectPackagePath: '/api/:version/projects/:id/packages/:package_id', groupProjectsPath: '/api/:version/groups/:id/projects.json', + groupSharePath: '/api/:version/groups/:id/share', projectsPath: '/api/:version/projects.json', projectPath: '/api/:version/projects/:id', forkedProjectsPath: '/api/:version/projects/:id/forks', projectLabelsPath: '/:namespace_path/:project_path/-/labels', projectFileSchemaPath: '/:namespace_path/:project_path/-/schema/:ref/:filename', projectUsersPath: '/api/:version/projects/:id/users', + projectGroupsPath: '/api/:version/projects/:id/groups.json', projectInvitationsPath: '/api/:version/projects/:id/invitations', projectMembersPath: '/api/:version/projects/:id/members', projectMergeRequestsPath: '/api/:version/projects/:id/merge_requests', @@ -39,6 +41,7 @@ const Api = { projectRunnersPath: '/api/:version/projects/:id/runners', projectProtectedBranchesPath: '/api/:version/projects/:id/protected_branches', projectSearchPath: '/api/:version/projects/:id/search', + projectSharePath: '/api/:version/projects/:id/share', projectMilestonesPath: '/api/:version/projects/:id/milestones', projectIssuePath: '/api/:version/projects/:id/issues/:issue_iid', mergeRequestsPath: '/api/:version/merge_requests', @@ -239,6 +242,20 @@ const Api = { .then(({ data }) => data); }, + projectGroups(id, options) { + const url = Api.buildUrl(this.projectGroupsPath).replace(':id', encodeURIComponent(id)); + + return axios + .get(url, { + params: { + ...options, + }, + }) + .then(({ data }) => { + return data; + }); + }, + addProjectMembersByUserId(id, data) { const url = Api.buildUrl(this.projectMembersPath).replace(':id', encodeURIComponent(id)); @@ -365,6 +382,16 @@ const Api = { }); }, + projectShareWithGroup(id, options = {}) { + const url = Api.buildUrl(Api.projectSharePath).replace(':id', encodeURIComponent(id)); + + return axios.post(url, { + expires_at: options.expires_at, + group_access: options.group_access, + group_id: options.group_id, + }); + }, + projectMilestones(id, params = {}) { const url = Api.buildUrl(Api.projectMilestonesPath).replace(':id', encodeURIComponent(id)); @@ -426,6 +453,16 @@ const Api = { }); }, + groupShareWithGroup(id, options = {}) { + const url = Api.buildUrl(Api.groupSharePath).replace(':id', encodeURIComponent(id)); + + return axios.post(url, { + expires_at: options.expires_at, + group_access: options.group_access, + group_id: options.group_id, + }); + }, + commit(id, sha, params = {}) { const url = Api.buildUrl(this.commitPath) .replace(':id', encodeURIComponent(id)) @@ -446,7 +483,7 @@ const Api = { applySuggestion(id, message = '') { const url = Api.buildUrl(Api.applySuggestionPath).replace(':id', encodeURIComponent(id)); - const params = gon.features?.suggestionsCustomCommit ? { commit_message: message } : false; + const params = { commit_message: message }; return axios.put(url, params); }, diff --git a/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue b/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue index 0e589d98668..55642aa64db 100644 --- a/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue +++ b/app/assets/javascripts/authentication/two_factor_auth/components/recovery_codes.vue @@ -162,7 +162,7 @@ export default { :href="profileAccountPath" :disabled="proceedButtonDisabled" :title="$options.i18n.proceedButton" - variant="success" + variant="confirm" data-qa-selector="proceed_button" data-track-event="click_button" :data-track-label="`${$options.trackingLabelPrefix}proceed_button`" diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index 6fb90551ed7..dbdc7e43d2d 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -5,12 +5,14 @@ import $ from 'jquery'; import Cookies from 'js-cookie'; import { uniq } from 'lodash'; import * as Emoji from '~/emoji'; +import { scrollToElement } from '~/lib/utils/common_utils'; import { dispose, fixTitle } from '~/tooltips'; import { deprecatedCreateFlash as flash } from './flash'; import axios from './lib/utils/axios_utils'; import { isInVueNoteablePage } from './lib/utils/dom_utils'; import { __ } from './locale'; +window.axios = axios; const animationEndEventString = 'animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd'; const transitionEndEventString = 'transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd'; @@ -495,12 +497,7 @@ export class AwardsHandler { } scrollToAwards() { - const options = { - scrollTop: $('.awards').offset().top - 110, - }; - - // eslint-disable-next-line no-jquery/no-animate - return $('body, html').animate(options, 200); + scrollToElement('.awards', { offset: -110 }); } addEmojiToFrequentlyUsedList(emoji) { diff --git a/app/assets/javascripts/badges/components/badge.vue b/app/assets/javascripts/badges/components/badge.vue index c3512773457..9e5d70075f3 100644 --- a/app/assets/javascripts/badges/components/badge.vue +++ b/app/assets/javascripts/badges/components/badge.vue @@ -96,7 +96,7 @@ export default { v-gl-tooltip.hover :title="s__('Badges|Reload badge image')" category="tertiary" - variant="success" + variant="confirm" type="button" icon="retry" size="small" diff --git a/app/assets/javascripts/badges/components/badge_form.vue b/app/assets/javascripts/badges/components/badge_form.vue index 20541ad8ccc..b65a8b4fa9c 100644 --- a/app/assets/javascripts/badges/components/badge_form.vue +++ b/app/assets/javascripts/badges/components/badge_form.vue @@ -225,7 +225,7 @@ export default { @@ -233,7 +233,7 @@ export default {
- + {{ s__('Badges|Add badge') }}
diff --git a/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js b/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js index 36fef06eeff..88be64d0a1a 100644 --- a/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js +++ b/app/assets/javascripts/batch_comments/stores/modules/batch_comments/actions.js @@ -1,3 +1,4 @@ +import { isEmpty } from 'lodash'; import { deprecatedCreateFlash as flash } from '~/flash'; import { scrollToElement } from '~/lib/utils/common_utils'; import { __ } from '~/locale'; @@ -88,18 +89,23 @@ export const updateDiscussionsAfterPublish = async ({ dispatch, getters, rootGet export const updateDraft = ( { commit, getters }, { note, noteText, resolveDiscussion, position, callback }, -) => - service - .update(getters.getNotesData.draftsPath, { - draftId: note.id, - note: noteText, - resolveDiscussion, - position: JSON.stringify(position), - }) +) => { + const params = { + draftId: note.id, + note: noteText, + resolveDiscussion, + }; + // Stringifying an empty object yields `{}` which breaks graphql queries + // https://gitlab.com/gitlab-org/gitlab/-/issues/298827 + if (!isEmpty(position)) params.position = JSON.stringify(position); + + return service + .update(getters.getNotesData.draftsPath, params) .then((res) => res.data) .then((data) => commit(types.RECEIVE_DRAFT_UPDATE_SUCCESS, data)) .then(callback) .catch(() => flash(__('An error occurred while updating the comment'))); +}; export const scrollToDraft = ({ dispatch, rootGetters }, draft) => { const discussion = draft.discussion_id && rootGetters.getDiscussion(draft.discussion_id); diff --git a/app/assets/javascripts/behaviors/copy_to_clipboard.js b/app/assets/javascripts/behaviors/copy_to_clipboard.js index a31bcc2cb41..de248340738 100644 --- a/app/assets/javascripts/behaviors/copy_to_clipboard.js +++ b/app/assets/javascripts/behaviors/copy_to_clipboard.js @@ -1,31 +1,27 @@ import Clipboard from 'clipboard'; import $ from 'jquery'; import { sprintf, __ } from '~/locale'; -import { fixTitle, show } from '~/tooltips'; +import { fixTitle, add, show, once } from '~/tooltips'; function showTooltip(target, title) { - const { originalTitle } = target.dataset; - const hideTooltip = () => { - target.removeEventListener('mouseout', hideTooltip); - setTimeout(() => { + const { title: originalTitle } = target.dataset; + + once('hidden', (tooltip) => { + if (tooltip.target === target) { target.setAttribute('title', originalTitle); fixTitle(target); - }, 100); - }; + } + }); target.setAttribute('title', title); - fixTitle(target); show(target); - - target.addEventListener('mouseout', hideTooltip); + setTimeout(() => target.blur(), 1000); } function genericSuccess(e) { // Clear the selection and blur the trigger so it loses its border e.clearSelection(); - $(e.trigger).blur(); - showTooltip(e.trigger, __('Copied')); } @@ -88,24 +84,8 @@ export default function initCopyToClipboard() { * @param {HTMLElement} btnElement */ export function clickCopyToClipboardButton(btnElement) { - const $btnElement = $(btnElement); - // Ensure the button has already been tooltip'd. - // If the use hasn't yet interacted (i.e. hovered or clicked) - // with the button, Bootstrap hasn't yet initialized - // the tooltip, and its `data-original-title` will be `undefined`. - // This value is used in the functions above. - $btnElement.tooltip(); - btnElement.dispatchEvent(new MouseEvent('mouseover')); + add([btnElement], { show: true }); btnElement.click(); - - // Manually trigger the necessary events to hide the - // button's tooltip and allow the button to perform its - // tooltip cleanup (updating the title from "Copied" back - // to its original title, "Copy branch name"). - setTimeout(() => { - btnElement.dispatchEvent(new MouseEvent('mouseout')); - $btnElement.tooltip('hide'); - }, 2000); } diff --git a/app/assets/javascripts/behaviors/toggler_behavior.js b/app/assets/javascripts/behaviors/toggler_behavior.js index 4b63143c4ba..30424fee46a 100644 --- a/app/assets/javascripts/behaviors/toggler_behavior.js +++ b/app/assets/javascripts/behaviors/toggler_behavior.js @@ -30,7 +30,7 @@ $(() => { } $('body').on('click', '.js-toggle-button', function toggleButton(e) { - e.currentTarget.classList.toggle(e.currentTarget.dataset.toggleOpenClass || 'open'); + e.currentTarget.classList.toggle(e.currentTarget.dataset.toggleOpenClass || 'selected'); toggleContainer($(this).closest('.js-toggle-container')); const targetTag = e.currentTarget.tagName.toLowerCase(); diff --git a/app/assets/javascripts/blob/blob_file_dropzone.js b/app/assets/javascripts/blob/blob_file_dropzone.js index e72c5c90986..445602a8765 100644 --- a/app/assets/javascripts/blob/blob_file_dropzone.js +++ b/app/assets/javascripts/blob/blob_file_dropzone.js @@ -3,6 +3,7 @@ import Dropzone from 'dropzone'; import $ from 'jquery'; import { sprintf, __ } from '~/locale'; +import { trackUploadFileFormSubmitted } from '~/projects/upload_file_experiment'; import { HIDDEN_CLASS } from '../lib/utils/constants'; import csrf from '../lib/utils/csrf'; import { visitUrl } from '../lib/utils/url_utility'; @@ -83,6 +84,9 @@ export default class BlobFileDropzone { submitButton.on('click', (e) => { e.preventDefault(); e.stopPropagation(); + + trackUploadFileFormSubmitted(); + if (dropzone[0].dropzone.getQueuedFiles().length === 0) { // eslint-disable-next-line no-alert alert(__('Please select a file')); diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js index b4cd0d5d875..4741152afce 100644 --- a/app/assets/javascripts/blob/viewer/index.js +++ b/app/assets/javascripts/blob/viewer/index.js @@ -62,6 +62,7 @@ export default class BlobViewer { this.switcher = document.querySelector('.js-blob-viewer-switcher'); this.switcherBtns = document.querySelectorAll('.js-blob-viewer-switch-btn'); this.copySourceBtn = document.querySelector('.js-copy-blob-source-btn'); + this.copySourceBtnTooltip = document.querySelector('.js-copy-blob-source-btn-tooltip'); this.simpleViewer = this.$fileHolder[0].querySelector('.blob-viewer[data-type="simple"]'); this.richViewer = this.$fileHolder[0].querySelector('.blob-viewer[data-type="rich"]'); @@ -109,23 +110,23 @@ export default class BlobViewer { toggleCopyButtonState() { if (!this.copySourceBtn) return; if (this.simpleViewer.getAttribute('data-loaded')) { - this.copySourceBtn.setAttribute('title', __('Copy file contents')); + this.copySourceBtnTooltip.setAttribute('title', __('Copy file contents')); this.copySourceBtn.classList.remove('disabled'); } else if (this.activeViewer === this.simpleViewer) { - this.copySourceBtn.setAttribute( + this.copySourceBtnTooltip.setAttribute( 'title', __('Wait for the file to load to copy its contents'), ); this.copySourceBtn.classList.add('disabled'); } else { - this.copySourceBtn.setAttribute( + this.copySourceBtnTooltip.setAttribute( 'title', __('Switch to the source to copy the file contents'), ); this.copySourceBtn.classList.add('disabled'); } - fixTitle($(this.copySourceBtn)); + fixTitle($(this.copySourceBtnTooltip)); } switchToViewer(name) { diff --git a/app/assets/javascripts/blob_edit/blob_bundle.js b/app/assets/javascripts/blob_edit/blob_bundle.js index 173c82ef9b0..6d9b56b4bb8 100644 --- a/app/assets/javascripts/blob_edit/blob_bundle.js +++ b/app/assets/javascripts/blob_edit/blob_bundle.js @@ -4,6 +4,7 @@ import $ from 'jquery'; import initPopover from '~/blob/suggest_gitlab_ci_yml'; import { deprecatedCreateFlash as createFlash } from '~/flash'; import { disableButtonIfEmptyField, setCookie } from '~/lib/utils/common_utils'; +import { initUploadFileTrigger } from '~/projects/upload_file_experiment'; import Tracking from '~/tracking'; import BlobFileDropzone from '../blob/blob_file_dropzone'; import NewCommitForm from '../new_commit_form'; @@ -47,6 +48,7 @@ export const initUploadForm = () => { new NewCommitForm(uploadBlobForm); disableButtonIfEmptyField(uploadBlobForm.find('.js-commit-message'), '.btn-upload-file'); + initUploadFileTrigger(); } }; diff --git a/app/assets/javascripts/boards/boards_util.js b/app/assets/javascripts/boards/boards_util.js index 13ad820477f..2cd25f58770 100644 --- a/app/assets/javascripts/boards/boards_util.js +++ b/app/assets/javascripts/boards/boards_util.js @@ -36,11 +36,11 @@ export function formatIssue(issue) { } export function formatListIssues(listIssues) { - const issues = {}; - let listIssuesCount; + const boardItems = {}; + let listItemsCount; const listData = listIssues.nodes.reduce((map, list) => { - listIssuesCount = list.issues.count; + listItemsCount = list.issues.count; let sortedIssues = list.issues.edges.map((issueNode) => ({ ...issueNode.node, })); @@ -58,14 +58,14 @@ export function formatListIssues(listIssues) { assignees: i.assignees?.nodes || [], }; - issues[id] = listIssue; + boardItems[id] = listIssue; return id; }), }; }, {}); - return { listData, issues, listIssuesCount }; + return { listData, boardItems, listItemsCount }; } export function formatListsPageInfo(lists) { @@ -113,31 +113,31 @@ export function formatIssueInput(issueInput, boardConfig) { }; } -export function moveIssueListHelper(issue, fromList, toList) { - const updatedIssue = issue; +export function moveItemListHelper(item, fromList, toList) { + const updatedItem = item; if ( toList.listType === ListType.label && - !updatedIssue.labels.find((label) => label.id === toList.label.id) + !updatedItem.labels.find((label) => label.id === toList.label.id) ) { - updatedIssue.labels.push(toList.label); + updatedItem.labels.push(toList.label); } if (fromList?.label && fromList.listType === ListType.label) { - updatedIssue.labels = updatedIssue.labels.filter((label) => fromList.label.id !== label.id); + updatedItem.labels = updatedItem.labels.filter((label) => fromList.label.id !== label.id); } if ( toList.listType === ListType.assignee && - !updatedIssue.assignees.find((assignee) => assignee.id === toList.assignee.id) + !updatedItem.assignees.find((assignee) => assignee.id === toList.assignee.id) ) { - updatedIssue.assignees.push(toList.assignee); + updatedItem.assignees.push(toList.assignee); } if (fromList?.assignee && fromList.listType === ListType.assignee) { - updatedIssue.assignees = updatedIssue.assignees.filter( + updatedItem.assignees = updatedItem.assignees.filter( (assignee) => assignee.id !== fromList.assignee.id, ); } - return updatedIssue; + return updatedItem; } export function isListDraggable(list) { diff --git a/app/assets/javascripts/boards/components/board_add_new_column.vue b/app/assets/javascripts/boards/components/board_add_new_column.vue new file mode 100644 index 00000000000..3c7c792b787 --- /dev/null +++ b/app/assets/javascripts/boards/components/board_add_new_column.vue @@ -0,0 +1,143 @@ + + + diff --git a/app/assets/javascripts/boards/components/board_add_new_column_form.vue b/app/assets/javascripts/boards/components/board_add_new_column_form.vue new file mode 100644 index 00000000000..d85343a5390 --- /dev/null +++ b/app/assets/javascripts/boards/components/board_add_new_column_form.vue @@ -0,0 +1,131 @@ + + + diff --git a/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue b/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue index 85fca589279..7c08e33be7e 100644 --- a/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue +++ b/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue @@ -13,7 +13,7 @@ export default {