From 9deebb82648de387463f3ec10b33b8dc38e3f456 Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Thu, 18 Nov 2021 22:05:49 +0530 Subject: [PATCH] New upstream version 14.4.2+ds1 --- .eslintrc.yml | 4 +- .gitignore | 5 +- .gitlab-ci.yml | 5 +- .gitlab/CODEOWNERS | 35 +- .gitlab/ci/build-images.gitlab-ci.yml | 3 +- .gitlab/ci/dast.gitlab-ci.yml | 205 - .gitlab/ci/docs.gitlab-ci.yml | 14 - .gitlab/ci/frontend.gitlab-ci.yml | 73 +- .gitlab/ci/global.gitlab-ci.yml | 3 + .gitlab/ci/memory.gitlab-ci.yml | 34 +- .gitlab/ci/reports.gitlab-ci.yml | 35 +- .gitlab/ci/review-apps/dast.gitlab-ci.yml | 191 + .gitlab/ci/review-apps/main.gitlab-ci.yml | 106 + .gitlab/ci/review-apps/qa.gitlab-ci.yml | 128 + .gitlab/ci/review.gitlab-ci.yml | 232 +- .gitlab/ci/rules.gitlab-ci.yml | 403 +- .gitlab/ci/setup.gitlab-ci.yml | 16 + .gitlab/ci/static-analysis.gitlab-ci.yml | 11 + .gitlab/ci/test-metadata.gitlab-ci.yml | 3 +- .../issue_templates/Feature Flag Roll Out.md | 49 +- ...Geo Replicate a new Git repository type.md | 2 +- .../Geo Replicate a new blob type.md | 2 +- .../Navigation - Left Sidebar Proposals.md | 3 +- .../merge_request_templates/Deprecations.md | 82 + .gitpod.yml | 10 +- .rubocop.yml | 1 - .rubocop_manual_todo.yml | 10 - .stylelintrc | 1 + CHANGELOG.md | 515 +- GITALY_SERVER_VERSION | 2 +- GITLAB_ELASTICSEARCH_INDEXER_VERSION | 2 +- GITLAB_KAS_VERSION | 2 +- GITLAB_PAGES_VERSION | 2 +- Gemfile | 24 +- Gemfile.lock | 180 +- README.md | 4 +- VERSION | 2 +- app/assets/images/logos/zentao.svg | 14 + app/assets/javascripts/access_tokens/index.js | 2 +- .../admin/users/components/actions/delete.vue | 4 +- .../actions/delete_with_contributions.vue | 4 +- .../actions/shared/shared_delete_action.vue | 4 +- .../components/modals/delete_user_modal.vue | 18 +- .../admin/users/components/user_actions.vue | 6 +- .../components/projects_dropdown_filter.vue | 91 +- .../javascripts/analytics/shared/constants.js | 1 + .../javascripts/analytics/shared/utils.js | 62 + app/assets/javascripts/api.js | 4 +- .../javascripts/api/bulk_imports_api.js | 7 + .../javascripts/artifacts_settings/index.js | 2 +- .../behaviors/markdown/nodes/emoji.js | 12 + .../behaviors/markdown/nodes/image.js | 2 +- .../javascripts/behaviors/preview_markdown.js | 2 +- .../javascripts/behaviors/requires_input.js | 14 - .../behaviors/shortcuts/keybindings.js | 7 + .../shortcuts/shortcuts_navigation.js | 14 + .../blob/components/blob_content.vue | 6 + .../blob/file_template_mediator.js | 6 +- app/assets/javascripts/boards/boards_util.js | 7 +- .../components/board_add_new_column.vue | 4 +- .../board_add_new_column_trigger.vue | 25 +- .../boards/components/board_card_inner.vue | 4 +- .../components/board_content_sidebar.vue | 64 +- .../boards/components/board_list_header.vue | 4 +- app/assets/javascripts/boards/graphql.js | 22 + .../boards/graphql/issue.fragment.graphql | 4 + .../boards/graphql/lists_issues.query.graphql | 2 + app/assets/javascripts/boards/index.js | 21 +- .../javascripts/boards/stores/actions.js | 17 +- .../boards/stores/mutation_types.js | 1 + .../javascripts/boards/stores/mutations.js | 4 + app/assets/javascripts/boards/stores/state.js | 1 + app/assets/javascripts/ci_lint/index.js | 4 +- .../clusters/agents/components/show.vue | 159 + .../agents/components/token_table.vue | 122 + .../javascripts/clusters/agents/constants.js | 1 + .../cluster_agent_token.fragment.graphql | 11 + .../queries/get_cluster_agent.query.graphql | 34 + .../javascripts/clusters/agents/index.js | 30 + .../clusters_list/clusters_util.js | 8 + .../components/agent_empty_state.vue | 119 + .../clusters_list/components/agent_table.vue | 152 + .../clusters_list/components/agents.vue | 156 + .../components/available_agents_dropdown.vue | 83 + .../components/install_agent_modal.vue | 259 + .../javascripts/clusters_list/constants.js | 85 +- .../mutations/create_agent.mutation.graphql | 8 + .../create_agent_token.mutation.graphql | 9 + .../agent_configurations.query.graphql | 15 + .../graphql/queries/get_agents.query.graphql | 47 + app/assets/javascripts/clusters_list/index.js | 5 + .../javascripts/clusters_list/load_agents.js | 44 + app/assets/javascripts/comment_type_toggle.js | 71 - .../content_editor/components/top_toolbar.vue | 9 + .../components/wrappers/details.vue | 33 + .../components/wrappers/frontmatter.vue | 32 + .../content_editor/content_editor.stories.js | 2 +- .../extensions/code_block_highlight.js | 3 +- .../content_editor/extensions/color_chip.js | 73 + .../content_editor/extensions/details.js | 36 + .../extensions/details_content.js | 25 + .../content_editor/extensions/frontmatter.js | 20 + .../content_editor/extensions/math_inline.js | 35 + .../extensions/table_of_contents.js | 51 + .../content_editor/extensions/word_break.js | 29 + .../services/create_content_editor.js | 14 + .../services/markdown_serializer.js | 40 + .../eks_cluster_configuration_form.vue | 12 +- .../components/gke_network_dropdown.vue | 2 +- .../components/gke_subnetwork_dropdown.vue | 2 +- .../create_merge_request_dropdown.js | 4 +- .../cycle_analytics/components/base.vue | 16 +- .../cycle_analytics/components/filter_bar.vue | 1 - .../components/stage_table.vue | 3 + .../javascripts/cycle_analytics/constants.js | 2 +- .../javascripts/cycle_analytics/index.js | 1 + .../cycle_analytics/store/actions.js | 20 +- .../cycle_analytics/store/getters.js | 8 + .../cycle_analytics/store/mutation_types.js | 1 + .../cycle_analytics/store/mutations.js | 21 +- .../cycle_analytics/store/state.js | 11 + .../javascripts/cycle_analytics/utils.js | 30 +- app/assets/javascripts/dependency_proxy.js | 5 - .../components/deploy_freeze_modal.vue | 2 +- app/assets/javascripts/deprecated_notes.js | 71 +- .../design_management/pages/design/index.vue | 2 +- .../design_management/pages/index.vue | 2 +- .../design_management/utils/cache_update.js | 2 +- .../design_management/utils/error_messages.js | 72 +- .../javascripts/diffs/components/app.vue | 15 + .../diffs/components/compare_versions.vue | 1 + .../javascripts/diffs/components/diff_row.vue | 13 +- .../diffs/components/tree_list.vue | 2 +- .../{workers.js => tree_worker_utils.js} | 0 .../javascripts/diffs/workers/tree_worker.js | 2 +- app/assets/javascripts/droplab/drop_lab.js | 160 - .../extensions/source_editor_ci_schema_ext.js | 10 +- app/assets/javascripts/editor/schema/NOTICE | 6 + app/assets/javascripts/editor/schema/ci.json | 1444 ++ .../components/environment_delete.vue | 28 +- .../components/environment_external_url.vue | 15 +- .../components/environment_item.vue | 98 +- .../components/environment_monitoring.vue | 26 +- .../components/environment_pin.vue | 16 +- .../components/environment_rollback.vue | 18 +- .../components/environment_stop.vue | 19 +- .../environment_terminal_button.vue | 26 +- .../components/environments_table.vue | 2 +- .../folder/environments_folder_bundle.js | 2 +- .../components/error_details.vue | 22 +- .../queries/details.query.graphql | 1 + .../components/app.vue | 31 +- .../error_tracking_settings/index.js | 2 + .../javascripts/experimentation/utils.js | 8 +- .../components/edit_feature_flag.vue | 16 +- .../feature_flags/components/form.vue | 2 +- .../strategies/flexible_rollout.vue | 2 +- app/assets/javascripts/feature_flags/edit.js | 2 + .../filtered_search/dropdown_ajax_filter.js | 2 +- .../filtered_search/dropdown_emoji.js | 4 +- .../filtered_search/dropdown_hint.js | 2 +- .../filtered_search/dropdown_non_user.js | 4 +- .../filtered_search/dropdown_operator.js | 2 +- .../droplab/constants.js | 0 .../droplab/drop_down.js | 0 .../droplab/drop_lab_deprecated.js | 170 + .../{ => filtered_search}/droplab/hook.js | 0 .../droplab/hook_button.js | 0 .../droplab/hook_input.js | 0 .../{ => filtered_search}/droplab/keyboard.js | 0 .../droplab/plugins/ajax.js | 0 .../droplab/plugins/ajax_filter.js | 3 +- .../droplab/plugins/filter.js | 0 .../droplab/plugins/input_setter.js | 0 .../{ => filtered_search}/droplab/utils.js | 0 .../filtered_search_dropdown_manager.js | 2 +- .../components/frequent_items_list_item.vue | 7 +- .../fragments/milestone.fragment.graphql | 6 + .../header_search/components/app.vue | 15 +- .../header_search_autocomplete_items.vue | 74 + .../javascripts/header_search/constants.js | 8 + app/assets/javascripts/header_search/index.js | 4 +- .../header_search/store/actions.js | 14 + .../header_search/store/getters.js | 32 + .../javascripts/header_search/store/index.js | 10 +- .../header_search/store/mutation_types.js | 4 + .../header_search/store/mutations.js | 12 + .../javascripts/header_search/store/state.js | 5 +- .../commit_sidebar/success_message.vue | 6 +- .../ide/components/jobs/detail.vue | 14 +- .../ide/components/preview/navigator.vue | 2 +- .../ide/stores/modules/commit/getters.js | 9 +- .../ide/stores/modules/pipelines/actions.js | 1 + app/assets/javascripts/ide/stores/utils.js | 2 +- .../components/pagination_bar.vue | 90 + .../javascripts/integrations/constants.js | 23 + .../edit/components/active_checkbox.vue | 3 +- .../edit/components/dynamic_field.vue | 5 +- .../edit/components/integration_form.vue | 10 +- .../edit/components/jira_issues_fields.vue | 10 +- .../edit/components/jira_trigger_fields.vue | 5 +- .../edit/components/override_dropdown.vue | 2 +- .../integrations/edit/constants.js | 17 - .../integrations/integration_settings_form.js | 46 +- .../components/integration_overrides.vue | 19 +- .../components/invite_members_modal.vue | 13 +- .../utils/response_message_parser.js | 5 +- .../issuable/components/csv_export_modal.vue | 69 +- .../components/csv_import_export_buttons.vue | 9 +- .../issuable/components/csv_import_modal.vue | 68 +- app/assets/javascripts/issuable_form.js | 6 +- .../components/issuable_item.vue | 239 +- .../components/issuable_list_root.vue | 124 +- .../issuable_suggestions/components/app.vue | 2 +- .../issuable_suggestions/components/item.vue | 35 +- .../javascripts/issuable_suggestions/index.js | 7 +- .../issue_show/components/locked_warning.vue | 37 +- .../components/issue_card_time_info.vue | 17 +- .../components/issues_list_app.vue | 49 +- .../components/new_issue_dropdown.vue | 124 + app/assets/javascripts/issues_list/index.js | 6 +- .../queries/search_projects.query.graphql | 12 + .../javascripts/jobs/components/job_app.vue | 30 +- .../jobs/components/job_log_controllers.vue | 4 +- .../components/log/collapsible_section.vue | 10 +- .../javascripts/jobs/components/log/log.vue | 18 +- .../components/table/cells/actions_cell.vue | 20 +- app/assets/javascripts/jobs/store/actions.js | 62 +- app/assets/javascripts/jobs/store/getters.js | 7 +- .../javascripts/jobs/store/mutation_types.js | 14 +- .../javascripts/jobs/store/mutations.js | 56 +- app/assets/javascripts/jobs/store/state.js | 20 +- app/assets/javascripts/jobs/store/utils.js | 18 +- app/assets/javascripts/jobs/utils.js | 9 + ...s_network_errors_during_navigation_link.js | 36 + app/assets/javascripts/lib/graphql.js | 2 + app/assets/javascripts/lib/logger/hello.js | 29 +- .../javascripts/lib/utils/axios_utils.js | 8 +- .../javascripts/lib/utils/color_utils.js | 19 + .../javascripts/lib/utils/common_utils.js | 6 +- app/assets/javascripts/lib/utils/constants.js | 4 + .../lib/utils/datetime/date_format_utility.js | 29 +- .../javascripts/lib/utils/datetime_range.js | 12 +- .../lib/utils/is_navigating_away.js | 23 + app/assets/javascripts/lib/utils/regexp.js | 8 +- .../javascripts/lib/utils/text_utility.js | 15 + .../javascripts/lib/utils/url_utility.js | 29 + .../logs/components/environment_logs.vue | 2 +- app/assets/javascripts/logs/stores/state.js | 2 +- app/assets/javascripts/main.js | 3 +- .../action_buttons/remove_member_button.vue | 4 +- .../action_buttons/user_action_buttons.vue | 11 +- .../members/components/modals/leave_modal.vue | 19 +- .../components/modals/remove_member_modal.vue | 24 +- .../members/components/table/expires_at.vue | 66 - .../components/table/members_table.vue | 87 +- app/assets/javascripts/members/constants.js | 22 +- .../components/inline_conflict_lines.vue | 6 +- .../components/parallel_conflict_lines.vue | 6 +- app/assets/javascripts/merge_request.js | 8 +- app/assets/javascripts/mr_popover/index.js | 7 +- app/assets/javascripts/namespace_select.js | 58 - .../javascripts/notebook/cells/markdown.vue | 9 +- .../components/comment_type_dropdown.vue | 8 +- .../notes/components/discussion_notes.vue | 7 + .../notes/components/note_actions.vue | 6 +- .../notes/components/note_body.vue | 13 +- .../notes/components/note_form.vue | 1 + .../notes/components/note_header.vue | 11 +- .../notes/components/noteable_discussion.vue | 6 + .../notes/components/noteable_note.vue | 15 +- .../notes/components/notes_app.vue | 1 + .../javascripts/notes/stores/actions.js | 4 +- .../javascripts/notes/stores/getters.js | 11 + .../javascripts/notifications/constants.js | 2 +- .../components/additional_metadata.vue | 94 - .../packages/details/components/app.vue | 292 - .../components/composer_installation.vue | 65 - .../details/components/conan_installation.vue | 59 - .../details/components/dependency_row.vue | 35 - .../components/installation_commands.vue | 55 - .../details/components/installation_title.vue | 38 - .../details/components/maven_installation.vue | 153 - .../details/components/npm_installation.vue | 103 - .../details/components/nuget_installation.vue | 58 - .../details/components/package_title.vue | 113 - .../details/components/pypi_installation.vue | 71 - .../javascripts/packages/details/constants.js | 55 - .../javascripts/packages/details/index.js | 32 - .../packages/details/store/getters.js | 140 - .../javascripts/packages/details/utils.js | 10 - .../javascripts/packages/shared/constants.js | 5 +- .../dependency_proxy/app.vue | 105 + .../dependency_proxy/graphql/index.js | 14 + ...get_dependency_proxy_details.query.graphql | 10 + .../dependency_proxy/index.js | 26 + .../details/components/app.vue | 240 + .../components/details_title.vue | 0 .../details/components/file_sha.vue | 0 .../details/components/package_files.vue | 2 +- .../details/components/package_history.vue | 19 +- .../components/terraform_installation.vue | 0 .../details/constants.js | 5 + .../details/store/actions.js | 0 .../details/store/getters.js | 3 + .../details/store/index.js | 0 .../details/store/mutation_types.js | 0 .../details/store/mutations.js | 0 .../details_app_bundle.js | 4 +- .../components/details/metadata/nuget.vue | 15 +- .../components/details/npm_installation.vue | 30 +- .../components/details/package_history.vue | 19 +- .../package_registry/components/list/app.vue | 134 + .../components/list/package_list_row.vue | 151 + .../components/list/package_search.vue | 81 +- .../components/list/packages_list_app.vue | 132 - .../components/list/publish_method.vue | 61 + .../package_registry/constants.js | 12 +- .../fragments/package_data.fragment.graphql | 27 + .../queries/get_packages.query.graphql | 27 + .../package_registry/pages/list.js | 10 +- .../settings/group/bundle.js | 1 + .../components/dependency_proxy_settings.vue | 110 + .../group/components/duplicates_settings.vue | 2 + .../group/components/group_settings_app.vue | 167 +- .../group/components/packages_settings.vue | 139 + .../settings/group/constants.js | 8 +- ...dependency_proxy_settings.mutation.graphql | 8 + .../get_group_packages_settings.query.graphql | 3 + .../group/graphql/utils/cache_update.js | 13 +- .../graphql/utils/optimistic_responses.js | 12 + .../components/registry_settings_app.vue | 2 +- .../settings/project/constants.js | 1 + .../shared/constants.js | 2 + .../metrics_and_profiling/usage_statistics.js | 2 +- .../projects/components/namespace_select.vue | 143 + .../javascripts/pages/admin/projects/index.js | 38 +- .../pages/admin/serverless/domains/index.js | 17 - .../pages/admin/topics/edit/index.js | 8 + .../pages/admin/topics/new/index.js | 8 + .../pages/groups/dependency_proxies/index.js | 14 +- .../pages/groups/group_members/index.js | 2 +- .../pages/groups/packages/index/index.js | 13 +- .../components/bulk_imports_history_app.vue | 176 + .../import/bulk_imports/history/index.js | 15 + .../history/utils/error_messages.js | 3 + .../javascripts/pages/profiles/index.js | 2 + .../profiles/password_prompt/constants.js | 9 + .../pages/profiles/password_prompt/index.js | 58 + .../password_prompt/password_prompt_modal.vue | 82 + .../projects/cluster_agents/show/index.js | 3 + .../pages/projects/clusters/index/index.js | 2 +- .../new/components/new_project_url_select.vue | 98 - .../javascripts/pages/projects/new/index.js | 66 +- .../projects/packages/packages/index/index.js | 11 +- .../shared/components/timezone_dropdown.js | 34 +- .../pages/projects/project_members/index.js | 2 +- .../pages/projects/wikis/diff/index.js | 3 + .../pages/projects/wikis/edit/index.js | 3 + .../pages/projects/wikis/git_access/index.js | 3 + .../javascripts/pages/projects/wikis/index.js | 6 +- .../pages/projects/wikis/show/index.js | 3 + .../pages/sessions/new/oauth_remember_me.js | 2 +- .../pages/shared/mount_runner_instructions.js | 7 +- .../pages/shared/wikis/async_edit.js | 11 + .../javascripts/pages/shared/wikis/edit.js | 88 + .../javascripts/pages/shared/wikis/index.js | 92 - .../javascripts/pages/shared/wikis/wikis.js | 6 + .../components/performance_bar_app.vue | 21 + .../javascripts/persistent_user_callouts.js | 1 + .../components/editor/text_editor.vue | 15 +- .../header/pipeline_editor_mini_graph.vue | 49 + .../components/header/pipeline_status.vue | 31 +- .../ui/pipeline_editor_empty_state.vue | 14 +- .../graphql/queries/client/pipeline.graphql | 19 + .../pipeline_editor/pipeline_editor_home.vue | 7 +- .../pipelines/components/graph/job_item.vue | 12 +- .../pipelines_list/pipeline_multi_actions.vue | 7 +- .../pipelines_list/pipeline_stop_modal.vue | 19 +- .../pipelines_list/pipelines_artifacts.vue | 14 +- .../pipelines_list/tokens/constants.js | 24 +- app/assets/javascripts/profile/profile.js | 1 + .../projects/new/components/app.vue | 0 .../new_project_push_tip_popover.vue | 0 .../new/components/new_project_url_select.vue | 163 + .../javascripts/projects/new/event_hub.js | 3 + app/assets/javascripts/projects/new/index.js | 66 + ...ere_user_can_create_projects.query.graphql | 0 .../javascripts/projects/project_new.js | 58 +- .../projects/settings/access_dropdown.js | 53 +- .../settings/api/access_dropdown_api.js | 45 + .../settings/components/access_dropdown.vue | 409 + .../projects/settings/init_access_dropdown.js | 39 + .../components/reset_key.vue | 36 +- .../components/details_page/tags_list_row.vue | 45 +- .../registry/explorer/constants/common.js | 3 +- .../registry/explorer/constants/details.js | 6 +- .../registry/explorer/constants/list.js | 2 +- .../javascripts/registry/explorer/index.js | 4 + .../registry/explorer/pages/list.vue | 5 +- .../components/add_issuable_form.vue | 18 +- .../related_issues/components/issue_token.vue | 15 +- .../components/related_issuable_input.vue | 27 +- .../components/related_issues_block.vue | 3 +- .../components/related_issues_list.vue | 6 +- .../components/related_merge_requests.vue | 14 +- .../releases/components/release_block.vue | 10 +- app/assets/javascripts/releases/mount_show.js | 7 +- .../components/codequality_issue_body.vue | 9 +- .../grouped_codequality_reports_app.vue | 6 +- .../codequality_report/store/getters.js | 34 +- .../store/utils/codequality_parser.js | 10 +- .../grouped_test_reports_app.vue | 6 +- .../javascripts/repository/commits_service.js | 65 + .../components/blob_content_viewer.vue | 76 +- .../repository/components/blob_edit.vue | 16 +- .../components/blob_viewers/index.js | 9 +- .../components/blob_viewers/video_viewer.vue | 15 + .../repository/components/breadcrumbs.vue | 45 +- .../repository/components/fork_suggestion.vue | 45 + .../components/new_directory_modal.vue | 183 + .../repository/components/preview/index.vue | 11 +- .../repository/components/table/index.vue | 45 +- .../repository/components/table/row.vue | 58 +- .../repository/components/tree_content.vue | 22 +- .../components/upload_blob_modal.vue | 1 + .../javascripts/repository/constants.js | 7 + app/assets/javascripts/repository/index.js | 1 + .../queries/blob_info.query.graphql | 5 + app/assets/javascripts/repository/router.js | 21 +- app/assets/javascripts/rest_api.js | 1 + app/assets/javascripts/right_sidebar.js | 2 +- .../admin_runners/admin_runners_app.vue | 29 +- .../components/cells/runner_actions_cell.vue | 20 +- .../components/cells/runner_name_cell.vue | 44 - .../components/cells/runner_summary_cell.vue | 35 + .../components/cells/runner_type_cell.vue | 25 +- .../runner/components/runner_list.vue | 14 +- .../runner/components/runner_name.vue | 18 + .../components/runner_state_locked_badge.vue | 25 + .../components/runner_state_paused_badge.vue | 25 + .../runner/components/runner_type_badge.vue | 19 +- .../runner/components/runner_type_help.vue | 60 - app/assets/javascripts/runner/constants.js | 8 + .../graphql/get_group_runners.query.graphql | 7 +- .../runner/graphql/get_runners.query.graphql | 1 + .../group_runners/group_runners_app.vue | 33 +- .../components/search_settings.vue | 58 +- .../javascripts/search_settings/constants.js | 3 + .../components/feature_card.vue | 1 + .../assignees/uncollapsed_assignee_list.vue | 8 +- .../components/labels/sidebar_labels.vue | 33 +- .../components/participants/participants.vue | 4 +- .../reviewers/reviewer_avatar_link.vue | 2 +- .../reviewers/uncollapsed_reviewer_list.vue | 5 +- .../time_tracking/comparison_pane.vue | 12 +- .../time_tracking/spent_only_pane.vue | 31 +- .../sidebar/components/todo_toggle/todo.vue | 2 +- app/assets/javascripts/sidebar/constants.js | 15 + .../javascripts/sidebar/mount_sidebar.js | 2 + .../components/snippet_description_view.vue | 7 +- .../snippets/components/snippet_header.vue | 70 +- app/assets/javascripts/snippets/index.js | 2 + app/assets/javascripts/token_access/index.js | 2 +- app/assets/javascripts/tracking/constants.js | 5 +- .../tracking/get_standard_context.js | 4 +- app/assets/javascripts/tracking/tracking.js | 13 +- app/assets/javascripts/tracking/utils.js | 8 +- app/assets/javascripts/user_popovers.js | 1 + .../approvals/approvals_summary.vue | 10 +- .../components/extensions/actions.vue | 70 + .../components/extensions/base.vue | 137 +- .../components/extensions/container.js | 53 +- .../components/extensions/index.js | 6 +- .../components/extensions/status_icon.vue | 61 + .../components/mr_widget_header.vue | 14 +- .../mr_widget_how_to_merge_modal.vue | 22 +- .../mr_widget_pipeline_container.vue | 5 +- .../components/states/commits_header.vue | 43 +- .../components/states/ready_to_merge.vue | 37 +- .../components/states/work_in_progress.vue | 6 +- .../vue_merge_request_widget/constants.js | 97 + .../extensions/issues.js | 29 +- .../mixins/ready_to_merge.js | 2 +- .../mr_widget_options.vue | 32 +- .../stores/mr_widget_store.js | 52 +- .../stores/state_maps.js | 10 +- .../components/blob_viewers/mixins.js | 5 + .../components/blob_viewers/simple_viewer.vue | 15 +- .../components/color_picker/color_picker.vue | 4 +- .../viewers/markdown_viewer.vue | 2 +- .../components/dismissible_feedback_alert.vue | 23 +- .../dropdown_keyboard_navigation.vue | 81 + .../queries/epic.fragment.graphql | 15 + .../queries/search_epics.query.graphql | 16 + .../filtered_search_bar/tokens/base_token.vue | 29 +- .../filtered_search_bar/tokens/epic_token.vue | 138 +- .../components/issue/issue_assignees.vue | 5 +- .../issue/related_issuable_item.vue | 13 +- .../components/markdown/apply_suggestion.vue | 18 +- .../vue_shared/components/markdown/field.vue | 2 +- .../components/markdown/suggestion_diff.vue | 4 +- .../markdown/suggestion_diff_header.vue | 87 +- .../components/markdown/suggestions.vue | 12 +- .../components/notes/placeholder_note.vue | 13 +- .../components/oncall_schedules_list.vue | 74 - .../project_list_item.stories.js | 34 + .../project_selector/project_list_item.vue | 5 +- .../components/sidebar/copyable_field.vue | 2 +- .../labels_select_vue/store/mutations.js | 9 +- .../sidebar/labels_select_widget/constants.js | 2 + .../dropdown_contents.vue | 114 +- .../dropdown_contents_create_view.vue | 54 +- .../dropdown_contents_labels_view.vue | 137 +- .../graphql/epic_labels.query.graphql | 15 + .../graphql/group_labels.query.graphql | 12 + .../labels_select_root.vue | 97 +- .../todo_toggle/todo_button.stories.js | 2 +- .../upload_dropzone/upload_dropzone.vue | 2 +- .../user_deletion_obstacles/constants.js | 5 + .../user_deletion_obstacles_list.stories.js | 37 + .../user_deletion_obstacles_list.vue | 91 + .../user_deletion_obstacles/utils.js | 19 + .../components/user_popover/user_popover.vue | 22 +- .../vue_shared/components/web_ide_link.vue | 10 +- .../vue_shared/directives/validation.js | 17 +- .../components/manage_via_mr.vue | 1 + .../security_reports/security_reports_app.vue | 6 +- .../store/modules/sast/actions.js | 3 +- .../store/modules/secret_detection/actions.js | 3 +- .../stylesheets/_page_specific_files.scss | 2 - app/assets/stylesheets/application_dark.scss | 72 +- .../stylesheets/bootstrap_migration.scss | 2 +- .../components/batch_comments/review_bar.scss | 53 - .../components/content_editor.scss | 53 +- .../components/design_management/design.scss | 5 - .../design_version_dropdown.scss | 3 - .../components/project_list_item.scss | 24 - app/assets/stylesheets/framework.scss | 1 - app/assets/stylesheets/framework/banner.scss | 40 - app/assets/stylesheets/framework/blocks.scss | 66 +- app/assets/stylesheets/framework/buttons.scss | 23 - app/assets/stylesheets/framework/common.scss | 16 - .../framework/contextual_sidebar.scss | 2 +- app/assets/stylesheets/framework/diffs.scss | 23 +- .../stylesheets/framework/dropdowns.scss | 38 +- app/assets/stylesheets/framework/forms.scss | 8 - app/assets/stylesheets/framework/job_log.scss | 8 +- .../stylesheets/framework/markdown_area.scss | 4 + .../stylesheets/framework/media_object.scss | 4 - app/assets/stylesheets/framework/mixins.scss | 10 +- app/assets/stylesheets/framework/modal.scss | 37 - app/assets/stylesheets/framework/panels.scss | 4 - .../secondary_navigation_elements.scss | 2 +- app/assets/stylesheets/framework/selects.scss | 12 - app/assets/stylesheets/framework/sidebar.scss | 15 - .../stylesheets/framework/snippets.scss | 5 - .../stylesheets/framework/sortable.scss | 55 - app/assets/stylesheets/framework/tables.scss | 1 + .../stylesheets/framework/typography.scss | 20 +- .../stylesheets/framework/variables.scss | 3 +- app/assets/stylesheets/framework/zen.scss | 9 - .../stylesheets/page_bundles/_ide_mixins.scss | 2 +- .../page_bundles/_ide_theme_overrides.scss | 9 +- .../stylesheets/page_bundles/boards.scss | 2 +- .../stylesheets/page_bundles/build.scss | 6 +- .../page_bundles/merge_requests.scss | 9 + .../stylesheets/page_bundles/pipeline.scss | 14 +- .../stylesheets/page_bundles/signup.scss | 8 - app/assets/stylesheets/page_bundles/wiki.scss | 2 +- app/assets/stylesheets/pages/ci_projects.scss | 54 - app/assets/stylesheets/pages/clusters.scss | 151 - app/assets/stylesheets/pages/commits.scss | 5 - .../stylesheets/pages/environment_logs.scss | 4 +- app/assets/stylesheets/pages/issuable.scss | 151 +- app/assets/stylesheets/pages/issues.scss | 103 +- .../pages/issues/issue_count_badge.scss | 10 - app/assets/stylesheets/pages/login.scss | 11 +- .../stylesheets/pages/merge_requests.scss | 49 +- app/assets/stylesheets/pages/note_form.scss | 6 - app/assets/stylesheets/pages/notes.scss | 44 +- .../stylesheets/pages/notifications.scss | 5 - app/assets/stylesheets/pages/pages.scss | 12 - app/assets/stylesheets/pages/profile.scss | 48 +- .../pages/profiles/preferences.scss | 16 - app/assets/stylesheets/pages/projects.scss | 16 - app/assets/stylesheets/pages/prometheus.scss | 232 - app/assets/stylesheets/pages/settings.scss | 31 - app/assets/stylesheets/pages/tree.scss | 5 - .../stylesheets/startup/startup-dark.scss | 172 +- .../stylesheets/startup/startup-general.scss | 71 +- .../stylesheets/startup/startup-signin.scss | 44 +- app/assets/stylesheets/themes/_dark.scss | 53 +- .../themes/dark_mode_overrides.scss | 116 + .../stylesheets/themes/theme_helper.scss | 4 +- app/controllers/admin/dashboard_controller.rb | 9 +- .../admin/instance_review_controller.rb | 2 +- .../admin/serverless/domains_controller.rb | 78 - .../admin/topics/avatars_controller.rb | 14 + app/controllers/admin/topics_controller.rb | 57 + app/controllers/application_controller.rb | 30 +- app/controllers/concerns/group_tree.rb | 9 +- app/controllers/concerns/issuable_actions.rb | 6 +- app/controllers/concerns/notes_actions.rb | 2 +- app/controllers/concerns/one_trust_csp.rb | 19 + .../registry/connection_errors_handler.rb | 38 + .../dashboard/projects_controller.rb | 2 +- app/controllers/graphql_controller.rb | 8 + app/controllers/groups/boards_controller.rb | 1 + .../application_controller.rb | 32 +- ...endency_proxy_for_containers_controller.rb | 46 +- .../groups/group_members_controller.rb | 22 +- app/controllers/groups/packages_controller.rb | 4 + .../registry/repositories_controller.rb | 1 + app/controllers/groups/runners_controller.rb | 14 +- .../groups/settings/ci_cd_controller.rb | 5 + app/controllers/health_controller.rb | 2 + app/controllers/help_controller.rb | 1 - .../import/bulk_imports_controller.rb | 24 +- app/controllers/import/url_controller.rb | 20 + .../jira_connect/app_descriptor_controller.rb | 1 + .../jira_connect/application_controller.rb | 4 + .../jira_connect/events_controller.rb | 31 +- app/controllers/metrics_controller.rb | 1 + .../profiles/passwords_controller.rb | 25 +- .../profiles/two_factor_auths_controller.rb | 2 - app/controllers/profiles_controller.rb | 3 +- .../alerting/notifications_controller.rb | 12 + app/controllers/projects/badges_controller.rb | 5 +- app/controllers/projects/blob_controller.rb | 1 + app/controllers/projects/boards_controller.rb | 1 + .../projects/branches_controller.rb | 5 + ...y_build_group_report_results_controller.rb | 2 +- .../projects/ci/pipeline_editor_controller.rb | 3 +- .../projects/cluster_agents_controller.rb | 19 + .../projects/google_cloud_controller.rb | 16 + app/controllers/projects/issues_controller.rb | 2 +- app/controllers/projects/jobs_controller.rb | 5 +- .../projects/merge_requests_controller.rb | 20 +- .../projects/packages/packages_controller.rb | 4 + .../projects/project_members_controller.rb | 22 +- .../registry/repositories_controller.rb | 3 +- .../security/configuration_controller.rb | 2 +- .../serverless/functions_controller.rb | 2 +- .../projects/settings/ci_cd_controller.rb | 5 + app/controllers/projects/tags_controller.rb | 12 +- app/controllers/projects/tree_controller.rb | 2 + .../projects/usage_quotas_controller.rb | 1 + app/controllers/projects_controller.rb | 15 +- app/controllers/registrations_controller.rb | 6 + .../repositories/git_http_controller.rb | 7 +- app/controllers/search_controller.rb | 6 + app/controllers/sessions_controller.rb | 1 + app/controllers/uploads_controller.rb | 5 +- .../new_project_sast_enabled_experiment.rb | 15 + .../ci/pipelines_for_merge_request_finder.rb | 17 +- app/finders/clusters/agents_finder.rb | 28 + .../concerns/packages/finder_helper.rb | 6 + app/finders/error_tracking/errors_finder.rb | 7 +- app/finders/issuable_finder.rb | 7 +- app/finders/issuables/label_filter.rb | 42 +- app/finders/issues_finder.rb | 13 + app/finders/members_finder.rb | 15 +- app/finders/packages/group_packages_finder.rb | 4 +- .../members/effective_access_level_finder.rb | 2 +- app/finders/projects/topics_finder.rb | 29 + app/finders/projects_finder.rb | 4 +- app/finders/tags_finder.rb | 5 +- app/graphql/mutations/ci/runner/delete.rb | 2 +- .../mutations/clusters/agent_tokens/create.rb | 69 + .../mutations/clusters/agent_tokens/delete.rb | 35 + .../mutations/clusters/agents/create.rb | 38 + .../mutations/clusters/agents/delete.rb | 39 + .../customer_relations/contacts/create.rb | 69 + .../customer_relations/contacts/update.rb | 61 + .../organizations/create.rb | 2 +- .../organizations/update.rb | 2 +- .../dependency_proxy/group_settings/update.rb | 49 + app/graphql/mutations/issues/create.rb | 5 +- .../resolvers/board_list_issues_resolver.rb | 5 +- app/graphql/resolvers/board_list_resolver.rb | 35 + .../clusters/agent_tokens_resolver.rb | 25 + .../resolvers/clusters/agents_resolver.rb | 35 + .../concerns/issue_resolver_arguments.rb | 9 +- .../resolvers/concerns/search_arguments.rb | 18 + app/graphql/resolvers/issues_resolver.rb | 3 +- .../kas/agent_configurations_resolver.rb | 32 + .../kas/agent_connections_resolver.rb | 41 + .../resolvers/project_pipeline_resolver.rb | 17 +- .../resolvers/project_pipelines_resolver.rb | 2 + app/graphql/types/base_field.rb | 4 +- app/graphql/types/board_list_type.rb | 15 +- app/graphql/types/ci/runner_status_enum.rb | 15 +- app/graphql/types/ci/runner_type.rb | 15 + app/graphql/types/ci/runner_web_url_edge.rb | 31 + .../types/clusters/agent_token_type.rb | 52 + app/graphql/types/clusters/agent_type.rb | 67 + app/graphql/types/concerns/find_closest.rb | 14 +- ...ainer_expiration_policy_older_than_enum.rb | 1 + .../container_repository_details_type.rb | 6 + .../types/container_repository_type.rb | 6 + .../types/customer_relations/contact_type.rb | 2 +- .../customer_relations/organization_type.rb | 2 +- .../sentry_detailed_error_type.rb | 3 + app/graphql/types/group_type.rb | 4 + app/graphql/types/issue_type.rb | 3 + .../issues/negated_issue_filter_input_type.rb | 4 + .../types/kas/agent_configuration_type.rb | 17 + .../types/kas/agent_connection_type.rb | 32 + app/graphql/types/kas/agent_metadata_type.rb | 33 + .../interacts_with_merge_request.rb | 2 +- .../types/milestone_wildcard_id_enum.rb | 2 +- app/graphql/types/mutation_type.rb | 7 + .../types/packages/nuget/metadatum_type.rb | 6 +- app/graphql/types/packages/package_type.rb | 7 + .../types/permission_types/ci/runner.rb | 13 + app/graphql/types/project_type.rb | 20 + app/graphql/types/query_type.rb | 4 + app/helpers/application_settings_helper.rb | 15 +- app/helpers/avatars_helper.rb | 4 + app/helpers/ci/jobs_helper.rb | 2 +- app/helpers/ci/runners_helper.rb | 2 +- app/helpers/commits_helper.rb | 9 + app/helpers/feature_flags_helper.rb | 11 +- app/helpers/groups_helper.rb | 4 +- app/helpers/hooks_helper.rb | 9 + app/helpers/integrations_helper.rb | 9 - app/helpers/issuables_helper.rb | 2 +- app/helpers/issues_helper.rb | 5 +- app/helpers/one_trust_helper.rb | 10 + app/helpers/packages_helper.rb | 2 + app/helpers/projects/cluster_agents_helper.rb | 10 + app/helpers/projects_helper.rb | 7 +- .../routing/pseudonymization_helper.rb | 7 +- app/helpers/search_helper.rb | 4 +- app/helpers/startupjs_helper.rb | 7 + app/helpers/tab_helper.rb | 77 +- app/helpers/time_zone_helper.rb | 2 + app/helpers/timeboxes_helper.rb | 13 - app/helpers/user_callouts_helper.rb | 6 + app/helpers/workhorse_helper.rb | 9 + .../cycle_analytics/issue_stage_event.rb | 5 + .../merge_request_stage_event.rb | 5 + app/models/application_setting.rb | 10 +- .../application_setting_implementation.rb | 7 + app/models/audit_event.rb | 2 +- app/models/award_emoji.rb | 2 - app/models/bulk_import.rb | 11 +- app/models/bulk_imports/entity.rb | 14 +- app/models/bulk_imports/export.rb | 2 +- app/models/bulk_imports/export_status.rb | 2 +- .../bulk_imports/file_transfer/base_config.rb | 32 +- .../file_transfer/group_config.rb | 6 +- .../file_transfer/project_config.rb | 15 +- app/models/bulk_imports/tracker.rb | 2 + app/models/ci/bridge.rb | 2 +- app/models/ci/build.rb | 72 +- app/models/ci/build_metadata.rb | 4 +- app/models/ci/build_need.rb | 2 - app/models/ci/build_runner_session.rb | 2 - app/models/ci/build_trace_chunk.rb | 2 - app/models/ci/build_trace_metadata.rb | 11 +- app/models/ci/job_token/project_scope_link.rb | 2 +- app/models/ci/job_token/scope.rb | 11 +- app/models/ci/pipeline.rb | 31 +- app/models/ci/processable.rb | 3 +- app/models/ci/resource_group.rb | 32 + app/models/ci/runner.rb | 26 +- app/models/ci/runner_namespace.rb | 1 - app/models/ci/runner_project.rb | 1 - app/models/ci/stage.rb | 2 - .../clusters/agents/group_authorization.rb | 4 +- .../clusters/agents/implicit_authorization.rb | 5 +- .../clusters/agents/project_authorization.rb | 4 + app/models/clusters/applications/runner.rb | 2 +- .../clusters/integrations/elastic_stack.rb | 2 + .../clusters/integrations/prometheus.rb | 2 + app/models/commit.rb | 2 +- app/models/commit_status.rb | 3 + .../analytics/cycle_analytics/stage.rb | 3 +- .../cycle_analytics/stage_event_model.rb | 54 + app/models/concerns/avatarable.rb | 3 +- app/models/concerns/bulk_insert_safe.rb | 12 +- app/models/concerns/checksummable.rb | 6 +- app/models/concerns/ci/has_status.rb | 1 + app/models/concerns/ci/metadatable.rb | 1 + app/models/concerns/enums/ci/commit_status.rb | 1 + app/models/concerns/has_repository.rb | 4 +- .../concerns/integrations/has_data_fields.rb | 1 - .../concerns/issue_available_features.rb | 3 +- .../concerns/packages/debian/distribution.rb | 10 - app/models/concerns/restricted_signup.rb | 50 +- app/models/concerns/routable.rb | 3 +- app/models/concerns/ttl_expirable.rb | 20 + .../concerns/vulnerability_finding_helpers.rb | 9 + app/models/container_expiration_policy.rb | 1 + app/models/custom_emoji.rb | 2 +- app/models/customer_relations/contact.rb | 3 +- app/models/customer_relations/organization.rb | 2 +- app/models/dependency_proxy/blob.rb | 5 +- .../image_ttl_group_policy.rb | 2 + app/models/dependency_proxy/manifest.rb | 5 +- app/models/deployment.rb | 62 +- app/models/environment.rb | 15 +- app/models/environment_status.rb | 10 +- app/models/error_tracking/error.rb | 15 +- app/models/error_tracking/error_event.rb | 4 + .../project_error_tracking_setting.rb | 25 + app/models/group.rb | 20 +- app/models/instance_configuration.rb | 12 +- app/models/integrations/open_project.rb | 20 - .../integrations/open_project_tracker_data.rb | 18 - app/models/integrations/unify_circuit.rb | 11 +- app/models/issue.rb | 44 +- app/models/legacy_diff_note.rb | 6 +- app/models/lfs_object.rb | 2 +- .../loose_foreign_keys/deleted_record.rb | 44 - app/models/member.rb | 25 +- app/models/members/group_member.rb | 8 +- app/models/members/project_member.rb | 14 +- app/models/merge_request.rb | 32 +- app/models/merge_request_diff.rb | 2 +- app/models/metrics/dashboard/annotation.rb | 6 +- app/models/namespace.rb | 94 +- .../namespace/root_storage_statistics.rb | 2 +- app/models/namespaces/user_namespace.rb | 2 +- app/models/note.rb | 4 +- app/models/operations/feature_flag.rb | 37 +- app/models/operations/feature_flag_scope.rb | 66 - app/models/packages/composer/cache_file.rb | 4 +- app/models/packages/helm/file_metadatum.rb | 2 +- app/models/pages_domain.rb | 13 +- .../preloaders/merge_requests_preloader.rb | 19 - app/models/product_analytics_event.rb | 2 - app/models/project.rb | 83 +- app/models/project_setting.rb | 4 - app/models/project_statistics.rb | 3 +- app/models/projects/project_topic.rb | 2 +- app/models/projects/topic.rb | 20 + app/models/protected_branch.rb | 9 +- app/models/release.rb | 1 + app/models/repository.rb | 10 +- app/models/upload.rb | 12 +- app/models/user.rb | 35 +- app/models/user_callout.rb | 3 +- app/models/user_detail.rb | 7 +- app/models/user_highest_role.rb | 8 +- app/models/user_preference.rb | 1 - app/models/users/credit_card_validation.rb | 13 + app/policies/ci/resource_group_policy.rb | 7 + app/policies/clusters/agent_policy.rb | 9 + app/policies/clusters/agent_token_policy.rb | 9 + app/policies/group_policy.rb | 5 +- app/policies/list_policy.rb | 5 + app/policies/namespace_policy.rb | 29 +- .../namespaces/project_namespace_policy.rb | 9 + .../namespaces/user_namespace_policy.rb | 28 + app/policies/project_policy.rb | 3 + app/presenters/README.md | 95 +- .../alert_management/alert_presenter.rb | 6 +- app/presenters/award_emoji_presenter.rb | 2 +- app/presenters/blob_presenter.rb | 2 +- app/presenters/blobs/unfold_presenter.rb | 2 + app/presenters/board_presenter.rb | 2 +- app/presenters/ci/bridge_presenter.rb | 3 + app/presenters/ci/build_metadata_presenter.rb | 3 +- app/presenters/ci/build_presenter.rb | 2 + app/presenters/ci/group_variable_presenter.rb | 2 +- app/presenters/ci/legacy_stage_presenter.rb | 2 +- app/presenters/ci/pipeline_presenter.rb | 7 +- app/presenters/ci/processable_presenter.rb | 1 + app/presenters/ci/runner_presenter.rb | 5 +- app/presenters/ci/stage_presenter.rb | 2 +- app/presenters/ci/trigger_presenter.rb | 3 +- app/presenters/ci/variable_presenter.rb | 2 +- app/presenters/clusterable_presenter.rb | 2 +- app/presenters/clusters/cluster_presenter.rb | 41 +- .../clusters/integration_presenter.rb | 2 +- app/presenters/commit_presenter.rb | 2 +- app/presenters/commit_status_presenter.rb | 23 +- .../dev_ops_report/metric_presenter.rb | 2 + app/presenters/environment_presenter.rb | 2 +- app/presenters/event_presenter.rb | 3 +- app/presenters/gitlab/blame_presenter.rb | 2 +- app/presenters/group_clusterable_presenter.rb | 5 +- app/presenters/group_member_presenter.rb | 2 + .../instance_clusterable_presenter.rb | 5 +- app/presenters/invitation_presenter.rb | 2 +- app/presenters/issue_presenter.rb | 3 +- app/presenters/label_presenter.rb | 4 +- app/presenters/member_presenter.rb | 2 +- app/presenters/members_presenter.rb | 2 +- app/presenters/merge_request_presenter.rb | 6 +- app/presenters/milestone_presenter.rb | 2 +- app/presenters/pages_domain_presenter.rb | 4 +- .../project_clusterable_presenter.rb | 5 +- app/presenters/project_hook_presenter.rb | 2 +- app/presenters/project_member_presenter.rb | 2 + app/presenters/project_presenter.rb | 5 +- .../import_export/project_export_presenter.rb | 10 +- .../settings/deploy_keys_presenter.rb | 2 +- app/presenters/prometheus_alert_presenter.rb | 2 +- app/presenters/release_presenter.rb | 6 +- app/presenters/releases/evidence_presenter.rb | 2 +- app/presenters/search_service_presenter.rb | 3 +- app/presenters/sentry_error_presenter.rb | 2 +- app/presenters/service_hook_presenter.rb | 2 +- app/presenters/snippet_blob_presenter.rb | 2 + app/presenters/snippet_presenter.rb | 5 +- app/presenters/terraform/modules_presenter.rb | 2 +- app/presenters/todo_presenter.rb | 2 +- app/presenters/tree_entry_presenter.rb | 2 +- app/presenters/user_presenter.rb | 2 +- app/presenters/web_hook_log_presenter.rb | 2 +- app/serializers/feature_flag_entity.rb | 4 +- app/serializers/feature_flag_scope_entity.rb | 12 - app/serializers/member_entity.rb | 6 + .../merge_request_metrics_helper.rb | 28 + ...merge_request_poll_cached_widget_entity.rb | 25 +- .../merge_request_widget_entity.rb | 5 +- app/services/base_project_service.rb | 10 + app/services/boards/issues/list_service.rb | 2 +- app/services/bulk_import_service.rb | 70 - app/services/bulk_imports/create_service.rb | 83 + .../bulk_imports/file_export_service.rb | 42 + .../get_importable_data_service.rb | 45 + .../bulk_imports/relation_export_service.rb | 57 +- .../bulk_imports/tree_export_service.rb | 43 + .../bulk_imports/uploads_export_service.rb | 49 + app/services/ci/archive_trace_service.rb | 11 +- app/services/ci/destroy_pipeline_service.rb | 3 + app/services/ci/pipelines/add_job_service.rb | 10 +- app/services/ci/pipelines/hook_service.rb | 34 + app/services/ci/process_pipeline_service.rb | 37 - app/services/ci/queue/build_queue_service.rb | 2 +- app/services/ci/register_job_service.rb | 67 +- ...gn_resource_from_resource_group_service.rb | 2 +- app/services/ci/retry_build_service.rb | 9 +- app/services/ci/retry_pipeline_service.rb | 9 +- .../ci/stuck_builds/drop_pending_service.rb | 42 + .../ci/stuck_builds/drop_running_service.rb | 31 + .../ci/stuck_builds/drop_scheduled_service.rb | 23 + app/services/ci/stuck_builds/drop_service.rb | 62 - app/services/ci/update_build_state_service.rb | 2 + .../ci/update_pending_build_service.rb | 2 +- .../clusters/agent_tokens/create_service.rb | 31 + .../clusters/agents/create_service.rb | 29 + .../clusters/agents/delete_service.rb | 23 + .../agents/refresh_authorization_service.rb | 2 +- app/services/concerns/rate_limited_service.rb | 93 + .../cleanup_service.rb | 6 +- .../contacts/base_service.rb | 17 + .../contacts/create_service.rb | 41 + .../contacts/update_service.rb | 24 + .../organizations/base_service.rb | 2 +- .../organizations/create_service.rb | 4 +- .../dependency_proxy/auth_token_service.rb | 12 +- .../find_or_create_blob_service.rb | 4 +- .../find_or_create_manifest_service.rb | 10 +- .../group_settings/update_service.rb | 37 + .../older_deployments_drop_service.rb | 12 +- .../error_tracking/list_issues_service.rb | 9 +- app/services/feature_flags/base_service.rb | 8 + app/services/feature_flags/create_service.rb | 2 - app/services/feature_flags/destroy_service.rb | 2 - app/services/feature_flags/hook_service.rb | 28 + app/services/feature_flags/update_service.rb | 24 +- app/services/groups/transfer_service.rb | 14 + .../validate_remote_git_endpoint_service.rb | 76 + .../issuable/import_csv/base_service.rb | 9 +- app/services/issues/clone_service.rb | 22 +- app/services/issues/close_service.rb | 19 +- app/services/issues/create_service.rb | 4 + app/services/issues/move_service.rb | 22 +- .../relative_position_rebalancing_service.rb | 6 +- app/services/issues/reopen_service.rb | 15 +- .../mergeability/check_base_service.rb | 36 + .../mergeability/check_ci_status_service.rb | 22 + .../mergeability/run_checks_service.rb | 54 + app/services/merge_requests/update_service.rb | 2 +- .../dashboard/annotations/create_service.rb | 6 +- .../dashboard/annotations/delete_service.rb | 4 +- .../create_service.rb | 4 +- .../composer/create_package_service.rb | 4 - app/services/projects/after_rename_service.rb | 8 +- .../cache_tags_created_at_service.rb | 70 + .../cleanup_tags_service.rb | 176 +- app/services/projects/create_service.rb | 6 + app/services/projects/destroy_service.rb | 24 + .../projects/group_links/update_service.rb | 20 +- app/services/projects/import_service.rb | 23 +- .../projects/overwrite_project_service.rb | 4 +- app/services/projects/participants_service.rb | 13 +- app/services/projects/transfer_service.rb | 43 +- app/services/projects/update_pages_service.rb | 10 +- app/services/projects/update_service.rb | 33 +- app/services/search/global_service.rb | 2 +- .../ci_configuration/base_create_service.rb | 6 +- .../ci_configuration/sast_create_service.rb | 17 +- app/services/service_ping/submit_service.rb | 2 +- .../terraform/remote_state_handler.rb | 4 +- .../user_project_access_changed_service.rb | 2 +- app/services/users/update_service.rb | 22 +- .../upsert_credit_card_validation_service.rb | 17 + .../dependency_proxy/file_uploader.rb | 1 + .../application_settings/_abuse.html.haml | 2 - .../_account_and_limit.html.haml | 18 +- .../application_settings/_ci_cd.html.haml | 7 + .../_files_limits.html.haml | 34 - .../application_settings/_help_page.html.haml | 13 +- .../application_settings/_mailgun.html.haml | 2 +- .../_network_rate_limits.html.haml | 33 + .../_package_registry_limits.html.haml | 32 - .../_performance.html.haml | 17 +- .../application_settings/_snowplow.html.haml | 2 +- .../application_settings/_spam.html.haml | 49 +- .../application_settings/_terminal.html.haml | 2 +- .../application_settings/_usage.html.haml | 22 +- .../appearances/preview_sign_in.html.haml | 7 +- .../application_settings/general.html.haml | 3 +- .../metrics_and_profiling.html.haml | 2 +- .../application_settings/network.html.haml | 19 +- .../application_settings/reporting.html.haml | 7 +- .../_security_newsletter_callout.html.haml | 14 + app/views/admin/dashboard/index.html.haml | 1 + app/views/admin/hook_logs/_index.html.haml | 40 +- app/views/admin/projects/index.html.haml | 35 +- app/views/admin/projects/show.html.haml | 11 +- app/views/admin/runners/show.html.haml | 2 +- .../admin/serverless/domains/_form.html.haml | 99 - .../admin/serverless/domains/index.html.haml | 25 - app/views/admin/sessions/_new_base.html.haml | 2 +- app/views/admin/topics/_form.html.haml | 40 + app/views/admin/topics/_topic.html.haml | 17 + app/views/admin/topics/edit.html.haml | 4 + app/views/admin/topics/index.html.haml | 19 + app/views/admin/topics/new.html.haml | 4 + .../admin/users/_access_levels.html.haml | 24 +- app/views/admin/users/_form.html.haml | 6 +- app/views/admin/users/_head.html.haml | 17 +- app/views/admin/users/show.html.haml | 3 +- .../authentication/_authenticate.html.haml | 3 + app/views/authentication/_register.html.haml | 4 + .../clusters/_advanced_settings_tab.html.haml | 5 +- .../clusters/clusters/_details_tab.html.haml | 5 +- .../clusters/clusters/_health_tab.html.haml | 5 +- .../clusters/_integrations_tab.html.haml | 8 +- .../clusters/clusters/_namespace.html.haml | 3 +- .../clusters/clusters/aws/_new.html.haml | 4 +- app/views/clusters/clusters/show.html.haml | 17 +- app/views/dashboard/_activity_head.html.haml | 14 +- app/views/dashboard/_groups_head.html.haml | 10 +- .../devise/confirmations/almost_there.haml | 11 +- ...nfirmation_instructions_secondary.text.erb | 2 +- app/views/devise/passwords/edit.html.haml | 4 +- app/views/devise/registrations/new.html.haml | 1 + app/views/devise/sessions/_new_base.html.haml | 8 +- .../devise/sessions/_new_crowd.html.haml | 2 +- app/views/devise/sessions/_new_ldap.html.haml | 2 +- app/views/devise/sessions/new.html.haml | 1 + .../devise/shared/_omniauth_box.html.haml | 10 +- app/views/devise/shared/_signup_box.html.haml | 1 + .../_signup_omniauth_provider_list.haml | 8 +- .../shared/_signup_omniauth_providers.haml | 2 +- .../_signup_omniauth_providers_top.haml | 2 +- .../groups/_group_admin_settings.html.haml | 2 +- app/views/groups/_home_panel.html.haml | 12 +- ...roup_from_another_instance_panel.html.haml | 13 +- .../groups/dependency_proxies/_url.html.haml | 12 - .../groups/dependency_proxies/show.html.haml | 31 +- app/views/groups/edit.html.haml | 7 +- app/views/groups/issues.html.haml | 2 +- .../registry/repositories/index.html.haml | 3 +- app/views/groups/runners/_runner.html.haml | 2 +- app/views/groups/settings/_general.html.haml | 3 +- app/views/groups/settings/_lfs.html.haml | 4 +- .../groups/settings/_permissions.html.haml | 6 +- .../settings/_two_factor_auth.html.haml | 10 +- .../packages_and_registries/show.html.haml | 5 +- .../_gitlab_pages.html.haml | 2 +- .../_rate_limits.html.haml | 1 + app/views/import/_githubish_status.html.haml | 2 +- .../import/bitbucket_server/new.html.haml | 2 +- .../import/bulk_imports/history.html.haml | 6 + app/views/import/fogbugz/new.html.haml | 2 +- .../import/fogbugz/new_user_map.html.haml | 2 +- app/views/import/gitea/new.html.haml | 2 +- app/views/import/github/new.html.haml | 2 +- .../import/gitlab_projects/new.html.haml | 2 +- app/views/import/manifest/new.html.haml | 2 +- app/views/import/phabricator/new.html.haml | 2 +- app/views/layouts/_one_trust.html.haml | 16 + app/views/layouts/_page.html.haml | 1 + app/views/layouts/_startup_js.html.haml | 22 +- app/views/layouts/header/_default.html.haml | 3 +- app/views/layouts/nav/_breadcrumbs.html.haml | 3 +- .../layouts/nav/sidebar/_admin.html.haml | 13 +- .../layouts/nav/sidebar/_profile.html.haml | 2 +- app/views/profiles/_email_settings.html.haml | 3 + app/views/profiles/passwords/edit.html.haml | 10 +- app/views/profiles/passwords/new.html.haml | 10 +- app/views/profiles/show.html.haml | 8 +- .../profiles/two_factor_auths/show.html.haml | 2 +- app/views/projects/_files.html.haml | 3 +- app/views/projects/_home_panel.html.haml | 9 +- .../projects/_import_project_pane.html.haml | 2 +- .../projects/_new_project_fields.html.haml | 46 +- app/views/projects/blob/show.html.haml | 1 + app/views/projects/branches/index.html.haml | 24 +- app/views/projects/branches/new.html.haml | 1 + .../ci/pipeline_editor/show.html.haml | 2 + .../projects/cluster_agents/show.html.haml | 4 + app/views/projects/commits/_commit.html.haml | 10 +- .../deployments/_deployment.html.haml | 2 +- .../projects/feature_flags/edit.html.haml | 8 +- .../projects/google_cloud/index.html.haml | 83 + app/views/projects/hook_logs/_index.html.haml | 42 +- app/views/projects/hook_logs/show.html.haml | 4 +- app/views/projects/issues/_nav_btns.html.haml | 5 +- .../issues/_related_branches.html.haml | 4 +- .../projects/issues/_related_issues.html.haml | 1 - .../issues/_related_issues_block.html.haml | 5 - .../merge_requests/_mr_title.html.haml | 10 +- .../merge_requests/_nav_btns.html.haml | 6 +- .../projects/merge_requests/_widget.html.haml | 2 +- .../merge_requests/conflicts/show.html.haml | 2 +- .../projects/merge_requests/show.html.haml | 2 + .../projects/mirrors/_mirror_repos.html.haml | 4 +- .../mirrors/_mirror_repos_push.html.haml | 2 +- .../projects/pipelines/_with_tabs.html.haml | 6 +- .../projects/product_analytics/test.html.haml | 1 + .../registry/repositories/index.html.haml | 3 +- .../operations/_error_tracking.html.haml | 1 + app/views/projects/snippets/show.html.haml | 2 +- app/views/projects/tags/index.html.haml | 3 + app/views/projects/tags/new.html.haml | 1 + app/views/projects/tree/show.html.haml | 1 + .../projects/usage_quotas/index.html.haml | 2 +- app/views/search/results/_issuable.html.haml | 7 +- app/views/shared/_import_form.html.haml | 11 +- app/views/shared/_milestones_filter.html.haml | 28 +- app/views/shared/_web_ide_path.html.haml | 4 + .../shared/builds/_build_output.html.haml | 2 +- app/views/shared/builds/_tabs.html.haml | 41 +- .../shared/deploy_tokens/_form.html.haml | 1 - .../shared/empty_states/_topics.html.haml | 7 + .../errors/_gitaly_unavailable.html.haml | 8 + .../_recent_deliveries_table.html.haml | 34 + .../shared/hook_logs/_status_label.html.haml | 2 +- app/views/shared/integrations/_tabs.html.haml | 23 +- app/views/shared/issuable/_nav.html.haml | 24 +- .../shared/issuable/_search_bar.html.haml | 2 +- app/views/shared/issuable/_sidebar.html.haml | 11 +- .../shared/issuable/nav_links/_all.html.haml | 5 +- .../shared/issue_type/_emoji_block.html.haml | 2 +- .../shared/milestones/_sidebar.html.haml | 6 +- .../shared/notes/_comment_button.html.haml | 29 +- app/views/shared/notes/_hints.html.haml | 56 +- .../shared/notes/_notes_with_form.html.haml | 1 + .../shared/topics/_search_form.html.haml | 7 + app/views/shared/web_hooks/_hook.html.haml | 6 +- app/views/shared/wikis/edit.html.haml | 2 +- app/views/snippets/show.html.haml | 2 +- app/views/users/show.html.haml | 10 +- app/workers/all_queues.yml | 100 +- .../project_recalculate_per_user_worker.rb | 25 + .../project_recalculate_worker.rb | 4 +- .../user_refresh_from_replica_worker.rb | 2 - .../user_refresh_over_user_range_worker.rb | 5 +- app/workers/bulk_import_worker.rb | 2 +- .../bulk_imports/export_request_worker.rb | 5 +- app/workers/bulk_imports/pipeline_worker.rb | 32 +- app/workers/ci/build_finished_worker.rb | 10 +- .../ci/create_downstream_pipeline_worker.rb | 19 + app/workers/ci/delete_unit_tests_worker.rb | 2 +- .../expire_artifacts_worker.rb | 2 +- .../ci/stuck_builds/drop_running_worker.rb | 34 + .../ci/stuck_builds/drop_scheduled_worker.rb | 34 + .../cleanup_container_repository_worker.rb | 4 +- .../dependency_proxy/cleanup_worker.rb | 63 + .../gitlab/github_import/object_importer.rb | 11 +- app/workers/concerns/worker_attributes.rb | 8 +- .../cleanup_container_repository_worker.rb | 17 +- .../container_expiration_policy_worker.rb | 2 - app/workers/create_note_diff_file_worker.rb | 6 +- .../drop_detached_partitions_worker.rb | 2 +- .../dependency_proxy/cleanup_blob_worker.rb | 40 + .../cleanup_manifest_worker.rb | 40 + .../image_ttl_group_policy_worker.rb | 70 + app/workers/expire_build_artifacts_worker.rb | 2 +- .../expire_build_instance_artifacts_worker.rb | 2 +- app/workers/expire_job_cache_worker.rb | 8 +- .../stage/finish_import_worker.rb | 28 +- .../stage/import_base_data_worker.rb | 16 + .../stage/import_pull_requests_worker.rb | 16 + .../stage/import_repository_worker.rb | 11 + app/workers/issue_placement_worker.rb | 2 +- .../in_product_marketing_emails_worker.rb | 2 +- .../onboarding_issue_created_worker.rb | 2 +- .../onboarding_pipeline_created_worker.rb | 2 +- .../namespaces/onboarding_progress_worker.rb | 2 +- .../onboarding_user_added_worker.rb | 2 +- .../packages/composer/cache_cleanup_worker.rb | 14 +- .../packages/composer/cache_update_worker.rb | 12 +- .../debian/generate_distribution_worker.rb | 2 +- app/workers/pages_remove_worker.rb | 16 - app/workers/pipeline_hooks_worker.rb | 7 +- app/workers/pipeline_process_worker.rb | 2 +- app/workers/run_pipeline_schedule_worker.rb | 11 +- app/workers/stuck_ci_jobs_worker.rb | 21 +- bin/background_jobs | 10 +- config/README.md | 159 +- config/application.rb | 13 +- config/feature_categories.yml | 6 +- ..._actor_based_user_to_snowplow_tracking.yml | 8 + .../advanced_search_multi_project_select.yml | 2 +- ...s_environments_in_self_and_descendants.yml | 8 + .../ci_archived_build_trace_checksum.yml | 8 + .../ci_create_external_pr_pipeline_async.yml | 2 +- .../ci_idempotent_pipeline_process_worker.yml | 8 - .../development/ci_include_rules.yml | 8 - .../ci_minutes_track_live_consumption.yml | 8 - .../ci_new_query_for_running_stuck_jobs.yml | 8 + ...i_optimize_project_records_destruction.yml | 8 + .../ci_pipeline_add_job_with_lock.yml | 8 - ...e_update_retried_from_process_pipeline.yml | 8 - .../development/ci_runner_limits.yml | 8 - .../development/ci_scoped_job_token.yml | 2 +- ...r_registry_expiration_policies_caching.yml | 8 + .../create_vulnerabilities_via_api.yml | 2 +- ..._in_pipelines_for_merge_request_finder.yml | 8 + .../dependency_proxy_workhorse.yml | 8 + .../ensure_verified_primary_email_for_2fa.yml | 8 - ...nt_last_visible_pipeline_disable_joins.yml | 8 - .../finding_ci_pipeline_disable_joins.yml | 8 + .../development/gitaly_tags_finder.yml | 8 - .../gitaly_user_merge_branch_access_error.yml | 8 + .../help_page_documentation_redirect.yml | 8 - .../improved_mergeability_checks.yml | 8 + .../incubation_5mp_google_cloud.yml | 8 + .../infinitely_collapsible_sections.yml | 2 +- .../jira_connect_asymmetric_jwt.yml | 8 + .../development/lazy_load_commits.yml | 8 + ...ar_application_setting_ancestor_scopes.yml | 8 + .../linear_ee_group_ancestor_scopes.yml | 8 + .../linear_group_ancestor_scopes.yml | 8 + ..._group_plans_preloaded_ancestor_scopes.yml | 8 + .../linear_group_tree_ancestor_scopes.yml | 8 + .../linear_members_finder_ancestor_scopes.yml | 8 + ...r_participants_service_ancestor_scopes.yml | 8 + .../merge_request_discussion_cache.yml | 8 - .../development/mergeability_caching.yml | 8 + .../development/mr_changes_fluid_layout.yml | 8 + .../new_customersdot_staging_url.yml | 8 + .../development/new_dir_modal.yml | 8 + .../operational_vulnerabilities.yml | 8 + .../development/package_list_apollo.yml | 8 + .../pages_smart_check_outdated_sha.yml | 8 - .../paginated_tree_graphql_query.yml | 2 +- .../development/pipeline_editor_drawer.yml | 8 - .../pipeline_editor_empty_state_action.yml | 8 - .../pipeline_editor_mini_graph.yml | 8 + .../rate_limited_service_issues_create.yml | 8 + ...plate_jobs_browser_performance_testing.yml | 8 - ...o_latest_template_security_api_fuzzing.yml | 8 - ...irect_to_latest_template_security_dast.yml | 8 - .../redirect_to_latest_template_terraform.yml | 8 - ...st_template_verify_browser_performance.yml | 8 - .../refactor_mr_widgets_extensions.yml | 8 + .../refactor_mr_widgets_extensions_user.yml | 8 + .../development/refactor_text_viewer.yml | 8 + .../reference_cache_memoization.yml | 8 + .../remove_composer_v1_cache_code.yml | 8 - .../development/request_apdex_counters.yml | 8 + .../search_blobs_language_aggregation.yml | 8 + ...y_orchestration_policies_configuration.yml | 8 - .../security_report_ingestion_framework.yml | 8 + .../development/serverless_domain.yml | 8 - .../development/show_author_on_note.yml | 8 - ...sers_by_project_authorizations_user_id.yml | 8 - ...roject_share_update_auth_recalculation.yml | 8 - ...or_project_transfer_auth_recalculation.yml | 8 - ...ppress_apollo_errors_during_navigation.yml | 8 + .../surface_environment_creation_failure.yml | 8 + ..._environment_creation_failure_override.yml | 8 + .../development/tags_finder_gitaly.yml | 8 + .../track_epic_boards_activity.yml | 8 - .../development/track_importer_activity.yml | 8 + ...te_deployment_after_transaction_commit.yml | 8 + ...esting_group_code_coverage_visit_total.yml | 8 - ...ting_metrics_report_artifact_uploaders.yml | 8 - ...ge_data_i_testing_summary_widget_total.yml | 8 - .../usage_data_i_testing_test_case_parsed.yml | 8 - .../use_upsert_query_for_mr_metrics.yml | 2 +- .../validate_namespace_parent_type.yml | 2 +- .../development/variable_inside_variable.yml | 2 +- .../development/vulnerability_flags.yml | 8 - .../vulnerability_location_image_filter.yml | 8 + .../development/workhorse_use_sidechannel.yml | 8 + .../experiment/jobs_to_be_done.yml | 8 - .../experiment/new_project_sast_enabled.yml | 8 + .../ops/ecomm_instrumentation.yml | 8 + .../ops/show_terraform_banner.yml | 8 + config/gitlab.yml.example | 6 + .../00_active_record_disable_joins.rb | 11 + config/initializers/0_acts_as_taggable.rb | 4 +- config/initializers/1_settings.rb | 7 +- config/initializers/7_prometheus_metrics.rb | 2 +- config/initializers/7_redis.rb | 8 + config/initializers/action_cable.rb | 2 +- config/initializers/backtrace_silencers.rb | 2 +- config/initializers/batch_loader.rb | 10 + config/initializers/carrierwave_patch.rb | 10 +- config/initializers/database_config.rb | 10 - .../initializers/gettext_rails_i18n_patch.rb | 22 - config/initializers/grape_validators.rb | 1 + config/initializers/load_balancing.rb | 43 +- config/initializers/mailer_retries.rb | 40 +- config/initializers/postgres_partitioning.rb | 3 +- config/initializers/postgresql_cte.rb | 2 +- config/initializers/sidekiq.rb | 12 +- config/initializers/zz_metrics.rb | 130 +- .../002_sidekiq.rb | 4 - .../grape_entity_patch.rb | 27 - config/locales/en.yml | 3 + config/mail_room.yml | 1 + .../20210216175055_merge_requests.yml | 2 +- .../20210216175101_merge_requests_users.yml | 2 +- ...05_clusters_applications_cert_managers.yml | 3 +- ...10216175407_clusters_applications_helm.yml | 3 +- ...16175409_clusters_applications_ingress.yml | 3 +- ...16175411_clusters_applications_knative.yml | 3 +- ...80958_clusters_applications_prometheus.yml | 3 +- ...216181951_clusters_applications_runner.yml | 3 +- ...0210715094458_releases_with_milestones.yml | 23 + .../20210916080405_promoted_issues.yml | 2 +- ...01533_clusters_integrations_prometheus.yml | 21 + ..._templates_implicit_jobs_build_monthly.yml | 25 + ...es_implicit_jobs_deploy_latest_monthly.yml | 25 + ...templates_implicit_jobs_deploy_monthly.yml | 25 + ...18_github_import_project_start_monthly.yml | 26 + ..._github_import_project_success_monthly.yml | 25 + ..._github_import_project_failure_monthly.yml | 25 + ...groups_gitlab_slack_application_active.yml | 23 + ...ojects_gitlab_slack_application_active.yml | 23 + ...tances_gitlab_slack_application_active.yml | 23 + ...plates_gitlab_slack_application_active.yml | 23 + ...riting_gitlab_slack_application_active.yml | 23 + ...riting_gitlab_slack_application_active.yml | 23 + ...i_templates_implicit_jobs_build_weekly.yml | 25 + ...tes_implicit_jobs_deploy_latest_weekly.yml | 25 + ..._templates_implicit_jobs_deploy_weekly.yml | 25 + ...411_github_import_project_start_weekly.yml | 26 + ...5_github_import_project_success_weekly.yml | 26 + ...7_github_import_project_failure_weekly.yml | 25 + ...10216175255_clusters_applications_helm.yml | 3 +- ...16175257_clusters_applications_ingress.yml | 3 +- ...59_clusters_applications_cert_managers.yml | 3 +- ...75301_clusters_applications_crossplane.yml | 3 +- ...75303_clusters_applications_prometheus.yml | 3 +- ...216175305_clusters_applications_runner.yml | 3 +- ...16175307_clusters_applications_knative.yml | 3 +- ...09_clusters_applications_elastic_stack.yml | 3 +- ...16175310_clusters_applications_jupyter.yml | 3 +- ...216175312_clusters_applications_cilium.yml | 3 +- ...29_clusters_applications_cert_managers.yml | 3 +- ...10216175331_clusters_applications_helm.yml | 3 +- ...16175333_clusters_applications_ingress.yml | 3 +- ...16175335_clusters_applications_knative.yml | 3 +- .../20210216175627_templates_asana_active.yml | 3 +- ...210216175638_templates_assembla_active.yml | 3 +- ...20210216175649_templates_bamboo_active.yml | 3 +- ...210216175701_templates_bugzilla_active.yml | 3 +- ...10216175712_templates_buildkite_active.yml | 3 +- ...210216175723_templates_campfire_active.yml | 3 +- ...0216175734_templates_confluence_active.yml | 3 +- ..._templates_custom_issue_tracker_active.yml | 3 +- ...0210216175756_templates_discord_active.yml | 3 +- ...210216175807_templates_drone_ci_active.yml | 3 +- ...175818_templates_emails_on_push_active.yml | 3 +- ...6175829_templates_external_wiki_active.yml | 3 +- ...210216175840_templates_flowdock_active.yml | 3 +- ...6175902_templates_hangouts_chat_active.yml | 3 +- .../20210216175924_templates_irker_active.yml | 3 +- ...0210216175935_templates_jenkins_active.yml | 3 +- .../20210216175946_templates_jira_active.yml | 3 +- ...0216175957_templates_mattermost_active.yml | 3 +- ...lates_mattermost_slash_commands_active.yml | 3 +- ...80019_templates_microsoft_teams_active.yml | 3 +- ...10216180030_templates_packagist_active.yml | 3 +- ...80041_templates_pipelines_email_active.yml | 3 +- ...180052_templates_pivotaltracker_active.yml | 3 +- ...210216180104_templates_pushover_active.yml | 3 +- ...0210216180115_templates_redmine_active.yml | 3 +- .../20210216180126_templates_slack_active.yml | 3 +- ..._templates_slack_slash_commands_active.yml | 3 +- ...210216180148_templates_teamcity_active.yml | 3 +- ...6180159_templates_unify_circuit_active.yml | 3 +- ...216180210_templates_webex_teams_active.yml | 3 +- ...210216180221_templates_youtrack_active.yml | 3 +- ...0216180934_templates_prometheus_active.yml | 3 +- ...80947_clusters_applications_prometheus.yml | 3 +- ...216181949_clusters_applications_runner.yml | 3 +- .../counts_all/20210216182112_sast_jobs.yml | 21 - .../20210216182114_secret_detection_jobs.yml | 21 - ...0210216182551_templates_datadog_active.yml | 3 +- .../20210216182618_templates_ewm_active.yml | 3 +- ...nts_i_package_container_delete_package.yml | 3 +- ...vents_i_package_container_pull_package.yml | 3 +- ...vents_i_package_container_push_package.yml | 3 +- ...e_events_i_package_debian_push_package.yml | 3 +- ...0210715094459_releases_with_milestones.yml | 23 + ...icy_enabled_with_older_than_set_to_60d.yml | 22 + ...00930_clusters_integrations_prometheus.yml | 21 + ...31_clusters_integrations_elastic_stack.yml | 21 + ...02342_clusters_integrations_prometheus.yml | 21 + .../20210204124829_active_user_count.yml | 1 + config/redis.cache.yml.example | 38 - config/redis.queues.yml.example | 38 - config/redis.shared_state.yml.example | 38 - config/redis.trace_chunks.yml.example | 38 - config/routes.rb | 2 - config/routes/admin.rb | 15 +- config/routes/group.rb | 2 + config/routes/import.rb | 5 + config/routes/project.rb | 4 + config/routes/uploads.rb | 4 +- config/sidekiq_queues.yml | 8 +- config/webpack.config.js | 8 + danger/database/Dangerfile | 4 +- danger/pajamas/Dangerfile | 4 +- danger/plugins/specs.rb | 10 + danger/product_intelligence/Dangerfile | 10 +- danger/roulette/Dangerfile | 3 + danger/specs/Dangerfile | 19 +- .../14-0-nfs-fot-git-repository-storage.yml | 22 + .../14-2-deprecation-task-runner.yml | 16 + .../14-3-deprecation-release-cli.yml | 13 + .../14-3-repository-push-audit-events.yml | 2 +- .../distribution_deprecations_14-3.yml | 8 - .../templates/_deprecation_template.md.erb | 10 + data/deprecations/templates/example.yml | 4 +- data/whats_new/2021102000001_14_04.yml | 60 + db/init_structure.sql | 11226 ++++++++++++++++ db/migrate/20181228175414_init_schema.rb | 2551 +--- ...0190103140724_make_legacy_false_default.rb | 9 - ...82041_cleanup_legacy_artifact_migration.rb | 34 - .../20190107151020_add_services_type_index.rb | 20 - ...ial_index_from_ci_builds_artifacts_file.rb | 18 - ...153125_add_merge_request_external_diffs.rb | 25 - .../20190114172110_add_domain_to_cluster.rb | 9 - ...ror_notification_sent_to_remote_mirrors.rb | 11 - ...columns_project_error_tracking_settings.rb | 18 - ...1_add_sorting_fields_to_user_preference.rb | 23 - ...91630_add_local_cached_markdown_version.rb | 11 - .../20190206193120_add_index_to_tags.rb | 18 - ...0190211131150_add_state_id_to_issuables.rb | 17 - ...rge_pipelines_enabled_to_ci_cd_settings.rb | 11 - ...190218134158_add_masked_to_ci_variables.rb | 21 - ...134209_add_masked_to_ci_group_variables.rb | 21 - ...20190219201635_add_asset_proxy_settings.rb | 20 - ...ooter_enabled_flag_to_appearances_table.rb | 17 - ...20150130_add_extra_shas_to_ci_pipelines.rb | 12 - ...d_indexes_for_merge_request_diffs_query.rb | 42 - ..._add_auto_dev_ops_enabled_to_namespaces.rb | 9 - ...0190225160301_add_runner_tokens_indexes.rb | 24 - ...add_multi_line_attributes_to_suggestion.rb | 19 - ...xternal_hostname_to_ingress_and_knative.rb | 12 - ...tected_repository_languages_to_projects.rb | 12 - ...12113229_add_remove_at_to_pages_domains.rb | 10 - ...34_add_remove_at_index_to_pages_domains.rb | 19 - ...39_create_merge_request_assignees_table.rb | 22 - ...ification_email_to_application_settings.rb | 17 - ...30_add_auto_ssl_enabled_to_pages_domain.rb | 17 - .../20190325080727_truncate_user_fullname.rb | 23 - ...25105715_add_fields_to_user_preferences.rb | 24 - .../20190325165127_add_managed_to_cluster.rb | 17 - ...326164045_import_common_metrics_knative.rb | 15 - ...fication_email_to_notification_settings.rb | 13 - ...ervice_accepted_to_application_settings.rb | 21 - ...190402150158_backport_enterprise_schema.rb | 2195 --- .../20190403161806_update_designs_index.rb | 21 - ...20190408163745_prometheus_knative05_fix.rb | 18 - .../20190409224933_add_name_to_geo_nodes.rb | 26 - ...90410173409_add_name_index_to_geo_nodes.rb | 21 - ...20190412155659_add_merge_request_blocks.rb | 25 - ...2183653_remove_url_index_from_geo_nodes.rb | 21 - ...2_add_comment_to_vulnerability_feedback.rb | 17 - ...30217_add_variable_type_to_ci_variables.rb | 17 - ...add_packages_size_to_project_statistics.rb | 11 - ...0415172035_update_insights_foreign_keys.rb | 25 - ...d_merge_train_enabled_to_ci_cd_settings.rb | 21 - ...add_variable_type_to_ci_group_variables.rb | 17 - ..._variable_type_to_ci_pipeline_variables.rb | 21 - ..._type_to_ci_pipeline_schedule_variables.rb | 17 - ...ey_from_vulnerability_feedback_to_users.rb | 19 - ...82545_create_merge_request_trains_table.rb | 18 - ...1952_add_bridged_pipeline_id_to_bridges.rb | 15 - ...057_add_bridged_pipeline_id_foreign_key.rb | 23 - ...2082247_create_project_metrics_settings.rb | 14 - ...40_add_index_to_projects_mirror_user_id.rb | 17 - ...80107_add_deployment_events_to_services.rb | 21 - ...9082448_create_pages_domain_acme_orders.rb | 32 - ...0190430131225_create_issue_tracker_data.rb | 25 - ...20190430142025_create_jira_tracker_data.rb | 28 - ...35337_add_temporary_indexes_to_state_id.rb | 34 - ...nable_create_incident_issues_by_default.rb | 19 - .../20190514105711_create_ip_restriction.rb | 20 - ...plication_settings_elasticsearch_shards.rb | 10 - ...0190516011213_add_build_queued_at_index.rb | 19 - ...ypt_private_key_to_application_settings.rb | 18 - ...ges_size_defaults_in_project_statistics.rb | 24 - ...o_approval_merge_request_approval_rules.rb | 21 - ...rt_type_to_approval_merge_request_rules.rb | 13 - ..._limit_milestone_date_years_to_4_digits.rb | 38 - ...62810_generate_lets_encrypt_private_key.rb | 18 - ...27_add_ssl_valid_period_to_pages_domain.rb | 16 - ...d_template_name_to_application_settings.rb | 17 - ...90527194830_add_wiki_size_to_statistics.rb | 9 - ...le_type_on_approval_merge_request_rules.rb | 55 - ...tection_enabled_to_application_settings.rb | 23 - ...add_default_git_depth_to_ci_cd_settings.rb | 11 - ...o_merge_requests_state_and_merge_status.rb | 21 - ...reate_namespace_root_storage_statistics.rb | 22 - ..._repository_type_to_lfs_objects_project.rb | 11 - ...d_index_to_count_pending_mirror_updates.rb | 17 - ...20190604091310_add_ldap_membership_lock.rb | 20 - ...3_fix_pool_repository_source_project_id.rb | 19 - ...tion_protection_to_application_settings.rb | 22 - ..._create_namespace_aggregation_schedules.rb | 14 - ...i_minutes_notification_at_to_namespaces.rb | 12 - ...object_id_index_to_lfs_objects_projects.rb | 17 - ...ns_feature_flags_clients_token_not_null.rb | 11 - ...ted_to_operations_feature_flags_clients.rb | 13 - ...s_feature_flags_clients_token_encrypted.rb | 18 - .../20190606202100_add_name_to_badges.rb | 11 - ...90607085356_add_source_to_pages_domains.rb | 21 - ...45325_add_pages_domains_ssl_renew_index.rb | 25 - ...190856_add_index_to_users_public_emails.rb | 23 - ...205656_add_wiki_columns_to_index_status.rb | 12 - ...42825_add_index_to_members_invite_email.rb | 21 - ..._limit_to_hours_to_application_settings.rb | 23 - ...ntainer_repository_updated_events_table.rb | 17 - ...190611100202_add_index_to_geo_event_log.rb | 17 - ...1_add_target_project_id_to_merge_trains.rb | 18 - ...1_add_geo_container_repository_counters.rb | 16 - ...2111404_add_geo_container_sync_capacity.rb | 13 - ...030606_enable_hashed_storage_by_default.rb | 15 - ...613044655_add_username_to_deploy_tokens.rb | 9 - .../20190613073003_create_project_aliases.rb | 16 - .../20190617123615_add_grafana_to_settings.rb | 18 - ...27_change_null_private_profile_to_false.rb | 33 - ..._usage_notification_level_to_namespaces.rb | 9 - ...0621151636_add_merge_request_rebase_jid.rb | 9 - ...623212503_add_cluster_id_to_deployments.rb | 9 - ...90624123615_add_grafana_url_to_settings.rb | 20 - ...90625115224_add_description_to_services.rb | 14 - ..._add_group_creation_level_to_namespaces.rb | 18 - ..._add_cluster_id_index_fk_to_deployments.rb | 21 - ...90627100221_add_mr_productivity_metrics.rb | 14 - ...d_foreign_keys_for_container_repository.rb | 25 - ...egies_to_operations_feature_flag_scopes.rb | 19 - ...85000_add_released_at_to_releases_table.rb | 11 - ...to_released_at_column_on_releases_table.rb | 18 - ...0703043358_add_commit_id_to_draft_notes.rb | 11 - ...90703130053_remove_gitaly_feature_flags.rb | 48 - .../20190703171157_add_sourcing_epic_dates.rb | 10 - ...90703171555_add_sourcing_epic_dates_fks.rb | 25 - ...add_rule_type_to_approval_project_rules.rb | 17 - ...0709220014_import_common_metrics_y_axis.rb | 13 - ...3_add_index_to_issues_relative_position.rb | 20 - ...dex_to_approval_project_rules_rule_type.rb | 17 - .../20190711124721_create_job_variables.rb | 27 - ...053_change_deploy_tokens_token_not_null.rb | 11 - ...08_add_token_encrypted_to_deploy_tokens.rb | 13 - ...nt_id_to_clusters_kubernetes_namespaces.rb | 12 - ...kubernetes_namespaces_on_environment_id.rb | 18 - ...espace_per_environment_flag_to_clusters.rb | 20 - ...20190715042813_add_issue_id_to_versions.rb | 15 - ...715043954_set_issue_id_for_all_versions.rb | 19 - ...e_to_design_management_designs_versions.rb | 26 - ...b_request_limit_to_application_settings.rb | 9 - ...819_add_object_storage_flag_to_geo_node.rb | 21 - ...90715215532_add_project_emails_disabled.rb | 9 - ...0190715215549_add_group_emails_disabled.rb | 9 - ...nalytics_cycle_analytics_project_stages.rb | 36 - ...tection_enabled_to_application_settings.rb | 12 - ..._index_to_deploy_tokens_token_encrypted.rb | 17 - ...104947_add_static_object_token_to_users.rb | 22 - ...storage_columns_to_application_settings.rb | 16 - ...2144316_create_milestone_releases_table.rb | 20 - ...create_allowed_email_domains_for_groups.rb | 22 - ...d_column_for_self_monitoring_project_id.rb | 16 - ...tbound_local_requests_whitelist_default.rb | 30 - ...d_index_to_index_on_static_object_token.rb | 21 - ..._hooks_and_services_application_setting.rb | 17 - ...om_system_hooks_to_application_settings.rb | 18 - ..._analytics_cycle_analytics_group_stages.rb | 36 - ...56_add_index_on_environments_with_state.rb | 17 - ...de_owner_approval_to_protected_branches.rb | 31 - db/migrate/20190731084415_add_build_need.rb | 20 - ...190801060809_delete_kubernetes_services.rb | 18 - ...441_add_throttle_protected_path_columns.rb | 27 - ..._settings_snowplow_collector_uri_column.rb | 17 - ...sues_project_id_relative_position_index.rb | 24 - ...602_add_timestamps_columns_to_geo_nodes.rb | 10 - ...3_remove_rendundant_index_from_releases.rb | 24 - ...e_epic_issues_default_relative_position.rb | 25 - ...20190807023052_design_issue_id_nullable.rb | 11 - ...jects_sorting_field_to_user_preferences.rb | 15 - ...05640_import_common_metrics_line_charts.rb | 13 - ...s_on_project_id_and_id_and_system_false.rb | 30 - ...949_remove_index_notes_on_noteable_type.rb | 29 - ...16151221_add_active_jobs_limit_to_plans.rb | 17 - ...add_cluster_status_index_to_deployments.rb | 17 - ...90820163320_add_first_last_name_to_user.rb | 18 - ...0821040941_create_cluster_providers_aws.rb | 37 - ...22175441_rename_epics_state_to_state_id.rb | 17 - ...0822181528_create_list_user_preferences.rb | 16 - ...sters_namespace_per_environment_default.rb | 12 - ...0628_remove_redundant_deployments_index.rb | 18 - ...190826100605_add_group_column_to_events.rb | 19 - ...h_configuration_to_application_settings.rb | 23 - ...acts_on_project_id_for_security_reports.rb | 22 - ..._to_prometheus_metrics_y_label_and_unit.rb | 10 - ...20190828170945_create_package_metadatum.rb | 14 - .../20190828172831_create_package_tag.rb | 16 - ...829131130_create_external_pull_requests.rb | 27 - ...xternal_pull_request_id_to_ci_pipelines.rb | 15 - ...x_to_ci_pipelines_external_pull_request.rb | 17 - ...y_to_ci_pipelines_external_pull_request.rb | 17 - ...190830140240_add_duplicated_to_to_issue.rb | 27 - ...90901174200_add_max_issue_count_to_list.rb | 16 - ...place_indexes_for_counting_active_users.rb | 23 - ...2152329_add_index_for_ci_builds_metrics.rb | 19 - ...create_analytics_repository_files_table.rb | 23 - ...e_analytics_repository_file_edits_table.rb | 29 - ...03_add_index_on_users_unconfirmed_email.rb | 17 - ...ssues_prometheus_alert_event_join_table.rb | 22 - ...dex_timestamp_columns_for_issue_metrics.rb | 29 - ...add_cloud_run_to_clusters_providers_gcp.rb | 17 - ...00_add_interruptible_to_builds_metadata.rb | 9 - ...add_concurrent_index_to_builds_metadata.rb | 19 - ...190906104555_create_alerts_service_data.rb | 17 - ...whitespace_in_diffs_to_user_preferences.rb | 20 - ...909045845_create_project_pages_metadata.rb | 14 - ...ts_index_on_group_id_with_partial_index.rb | 19 - ...ude_nulls_from_index_on_namespaces_type.rb | 20 - ...ics_language_trend_repository_languages.rb | 34 - ...526_create_packages_conan_file_metadata.rb | 20 - ...56_add_any_approver_rule_unique_indexes.rb | 30 - ...90911115056_add_projects_max_pages_size.rb | 9 - ...911115109_add_namespaces_max_pages_size.rb | 9 - ...1115207_add_projects_max_artifacts_size.rb | 9 - ...15222_add_namespaces_max_artifacts_size.rb | 9 - ...1145_add_index_to_members_on_expires_at.rb | 17 - .../20190912223232_add_role_to_users.rb | 12 - ...174707_add_spdx_id_to_software_licenses.rb | 15 - ...d_index_to_software_licenses_on_spdx_id.rb | 17 - ...ify_concurrent_index_to_builds_metadata.rb | 23 - ...imestamps_to_design_management_versions.rb | 16 - ...90918102042_create_grafana_integrations.rb | 17 - ...d_merge_request_metrics_merged_at_index.rb | 17 - ...918104731_add_cleanup_status_to_cluster.rb | 21 - ...35_add_cleanup_status_reason_to_cluster.rb | 12 - ...pages_deploy_partial_index_on_ci_builds.rb | 23 - db/migrate/20190919091300_create_evidences.rb | 14 - ...olumns_for_merge_requests_creation_date.rb | 29 - ..._to_clusters_providers_gcp_on_cloud_run.rb | 17 - ...es_on_name_trigram_to_packages_packages.rb | 18 - ..._token_lifetime_to_application_settings.rb | 9 - ..._add_not_null_constraints_to_timestamps.rb | 24 - ...merge_request_context_commits_and_diffs.rb | 45 - ...d_pull_mirror_branch_prefix_to_projects.rb | 13 - ...925055714_default_request_access_groups.rb | 15 - ...5055902_default_request_access_projects.rb | 15 - ...r_indexes_to_design_management_versions.rb | 19 - .../20190926225633_create_x509_signatures.rb | 43 - ...90927055500_create_description_versions.rb | 29 - ...em_note_metadata_description_version_id.rb | 19 - ...0927074328_add_index_on_snippet_content.rb | 18 - .../20190929180751_create_vulnerabilities.rb | 41 - ...ulnerability_occurrences_to_occurrences.rb | 14 - ...ign_keys_and_indexes_to_vulnerabilities.rb | 76 - ...throttle_columns_to_application_setting.rb | 30 - ...7_add_management_project_id_to_clusters.rb | 9 - ...dd_new_release_to_notification_settings.rb | 9 - .../20190930153535_create_zoom_meetings.rb | 24 - ...agement_project_id_index_fk_to_clusters.rb | 19 - db/migrate/20191001170300_create_ci_ref.rb | 21 - ...ate_clusters_applications_elastic_stack.rb | 24 - ...5155_add_self_managed_prometheus_alerts.rb | 22 - ...ent_hooks_limit_to_application_settings.rb | 17 - db/migrate/20191003064615_create_aws_roles.rb | 23 - ...191003130045_create_issue_user_mentions.rb | 19 - ...0045_create_merge_request_user_mentions.rb | 19 - ...61031_add_mark_for_deletion_to_projects.rb | 13 - ...d_mark_for_deletion_indexes_to_projects.rb | 19 - ...d_pendo_enabled_to_application_settings.rb | 17 - ...0_add_pendo_url_to_application_settings.rb | 13 - ...0191003200045_create_epic_user_mentions.rb | 19 - ...91003250045_create_commit_user_mentions.rb | 18 - ...1003300045_create_snippet_user_mentions.rb | 19 - ...91003350045_create_design_user_mentions.rb | 19 - ...8_add_productivity_analytics_start_date.rb | 11 - ..._fill_productivity_analytics_start_date.rb | 31 - ...reate_analytics_repository_file_commits.rb | 19 - ...151428_add_auto_stop_in_to_environments.rb | 9 - ...ctivities_limit_to_application_settings.rb | 17 - ...31_add_ref_count_to_push_event_payloads.rb | 11 - ...008180203_add_issuable_state_id_indexes.rb | 75 - ...191008200204_add_state_id_default_value.rb | 24 - ...0244_add_geo_design_repository_counters.rb | 16 - ...exposed_artifacts_to_ci_builds_metadata.rb | 13 - ...i_builds_metadata_has_exposed_artifacts.rb | 17 - ..._clone_url_root_to_application_settings.rb | 15 - ...lu_registry_url_to_application_settings.rb | 11 - ...djourned_period_to_application_settings.rb | 11 - ...add_squash_commit_sha_to_merge_requests.rb | 9 - ...esign_management_version_user_to_author.rb | 17 - ...hor_index_to_design_management_versions.rb | 17 - ...nippets_project_id_and_visibility_level.rb | 17 - ...ion_delivered_to_personal_access_tokens.rb | 17 - ...931_remove_index_on_snippets_project_id.rb | 20 - ...72826_replace_ci_trigger_requests_index.rb | 32 - ...133352_create_ci_subscriptions_projects.rb | 21 - ...or_self_managed_prometheus_alert_issues.rb | 22 - ...reate_users_security_dashboard_projects.rb | 15 - ...e_source_branch_after_merge_to_projects.rb | 17 - ...017134513_add_deployment_merge_requests.rb | 33 - ...create_clusters_applications_crossplane.rb | 21 - ...3093207_add_comment_actions_to_services.rb | 21 - ...ests_index_on_target_project_and_branch.rb | 19 - ...191023152913_add_default_and_free_plans.rb | 29 - ...191024134020_add_index_to_zoom_meetings.rb | 17 - ...91025092748_add_secret_token_to_snippet.rb | 12 - ...fault_value_of_throttle_protected_paths.rb | 38 - ...26120008_add_promoted_to_epic_to_issues.rb | 16 - ...12_add_promoted_to_epic_to_issues_index.rb | 22 - ..._default_project_and_snippet_visibility.rb | 15 - ...1028130054_add_max_issue_weight_to_list.rb | 17 - ...d_setup_for_company_to_user_preferences.rb | 9 - ...ame_snowplow_site_id_to_snowplow_app_id.rb | 17 - ...29125305_create_packages_conan_metadata.rb | 18 - ...901_add_enabled_to_grafana_integrations.rb | 23 - .../20191030135044_create_plan_limits.rb | 14 - .../20191030152934_move_limits_from_plans.rb | 17 - .../20191031095636_create_project_settings.rb | 12 - ...2917_replace_index_on_metrics_merged_at.rb | 19 - ...eks_credentials_to_application_settings.rb | 18 - ...license_details_to_application_settings.rb | 11 - ...4558_add_report_type_to_vulnerabilities.rb | 9 - ...1105134413_create_service_desk_settings.rb | 20 - .../20191105155113_add_secret_to_snippet.rb | 27 - ...652_add_index_on_deployments_updated_at.rb | 18 - ...0191106144901_add_state_to_merge_trains.rb | 18 - ...191106150931_add_timelog_spent_at_index.rb | 20 - ...ate_oauth_open_id_requests_foreign_keys.rb | 29 - ..._sourcegraph_admin_and_user_preferences.rb | 17 - ...ndex_to_projects_on_marked_for_deletion.rb | 17 - ...0191108031900_create_package_build_info.rb | 12 - ...9_add_group_id_to_import_export_uploads.rb | 9 - ...1_add_group_fk_to_import_export_uploads.rb | 19 - .../20191111121500_default_ci_config_path.rb | 15 - ...fixed_pipeline_to_notification_settings.rb | 9 - ...30_add_index_on_ci_pipelines_updated_at.rb | 18 - ...12090226_add_artifacts_to_ci_build_need.rb | 20 - ...al_access_tokens_user_id_and_expires_at.rb | 18 - ...hed_markdown_version_to_vulnerabilities.rb | 9 - .../20191112212815_create_web_authn_table.rb | 26 - ...indexes_for_projects_api_default_params.rb | 19 - ...ojects_api_default_params_authenticated.rb | 19 - ...232338_ensure_no_empty_milestone_titles.rb | 18 - ...259_add_mentions_disabled_to_namespaces.rb | 9 - ..._resolved_attributes_to_vulnerabilities.rb | 15 - ...ey_on_resolved_by_id_to_vulnerabilities.rb | 19 - ..._not_null_in_design_management_versions.rb | 15 - ...01123_add_index_to_mod_sec_ci_variables.rb | 17 - ..._index_to_mod_sec_ci_pipeline_variables.rb | 17 - ...091425_create_vulnerability_issue_links.rb | 23 - ...191115114032_add_processed_to_ci_builds.rb | 9 - ...1118053631_add_group_deletion_schedules.rb | 28 - ...702_add_index_on_status_to_merge_trains.rb | 20 - ...ppet_size_limit_to_application_settings.rb | 13 - ...ts_on_project_id_state_environment_type.rb | 21 - ...023952_add_created_at_index_to_snippets.rb | 17 - ...icies_approval_status_to_classification.rb | 17 - ...21_create_container_expiration_policies.rb | 23 - ...ncrypted_fields_to_application_settings.rb | 34 - ...text_attributes_on_application_settings.rb | 87 - ...00015_add_index_to_grafana_integrations.rb | 17 - ...1121111621_create_packages_dependencies.rb | 16 - ...121947_create_packages_dependency_links.rb | 15 - ...package_type_index_to_packages_packages.rb | 22 - .../20191121193110_add_issue_links_type.rb | 17 - ...191122161519_create_sentry_issues_table.rb | 15 - ...password_length_to_application_settings.rb | 11 - ...6_add_dismissable_to_broadcast_messages.rb | 9 - ...index_to_include_action_on_label_events.rb | 21 - ...125114345_add_admin_mode_protected_path.rb | 54 - ...53_add_target_path_to_broadcast_message.rb | 11 - .../20191125140458_create_import_failures.rb | 19 - ...1126134210_rename_packages_package_tags.rb | 9 - ...030005_create_serverless_domain_cluster.rb | 19 - ...19_create_gitlab_subscription_histories.rb | 28 - ...trial_starts_on_to_gitlab_subscriptions.rb | 10 - ..._confidential_to_doorkeeper_application.rb | 26 - ...ldcard_and_domain_type_to_pages_domains.rb | 20 - .../20191128145231_add_ci_resource_groups.rb | 22 - ...8145232_add_fk_to_ci_resources_build_id.rb | 17 - ...add_fk_to_ci_resource_groups_project_id.rb | 17 - ...add_broadcast_type_to_broadcast_message.rb | 19 - ...4630_add_resource_group_id_to_ci_builds.rb | 27 - ...29144631_add_index_to_resource_group_id.rb | 20 - ...ment_auto_stop_in_to_ci_builds_metadata.rb | 15 - ...e_group_deletion_schedules_foreign_keys.rb | 29 - ...ndex_and_add_index_to_id_on_deployments.rb | 29 - ...add_label_project_group_partial_indexes.rb | 25 - ...h_to_geo_hashed_storage_migrated_events.rb | 14 - .../20191205060723_add_index_to_keys.rb | 17 - ...ross_projects_dependencies_to_ci_builds.rb | 19 - ...ndex_to_projects_deploy_keys_deploy_key.rb | 17 - ..._support_multiple_milestones_for_issues.rb | 14 - ..._multiple_milestones_for_merge_requests.rb | 14 - ...e_to_design_management_designs_versions.rb | 11 - ...ges_domains_on_wildcard_and_domain_type.rb | 19 - ...2926_update_index_for_pool_repositories.rb | 24 - ...r_whitespace_in_code_to_user_preference.rb | 17 - ...208071111_add_fingerprint_sha256_to_key.rb | 13 - ...112_add_fingerprint_sha256_index_to_key.rb | 17 - ...d_suggestion_commit_message_to_projects.rb | 13 - ..._add_deleted_at_to_description_versions.rb | 9 - ...1210211253_create_resource_weight_event.rb | 18 - ...mit_user_mentions_commit_id_column_type.rb | 38 - ...0191213104838_add_service_desk_username.rb | 11 - .../20191213120427_fix_max_pages_size.rb | 20 - ...191213143656_create_ci_pipelines_config.rb | 14 - ...ackfill_operations_feature_flags_active.rb | 20 - ...es_to_deployments_on_project_id_and_ref.rb | 20 - ...dd_epic_date_sourcing_milestone_indexes.rb | 29 - ..._date_sourcing_milestone_id_foreign_key.rb | 23 - ..._date_sourcing_milestone_id_foreign_key.rb | 23 - .../20191216094119_add_id_to_plan_limits.rb | 13 - ...183531_add_project_hooks_to_plan_limits.rb | 9 - ...183532_insert_project_hooks_plan_limits.rb | 25 - ...dd_saml_provider_prohibited_outer_forks.rb | 17 - ...security_enabled_to_ingress_application.rb | 16 - ...abled_for_users_to_application_settings.rb | 20 - ..._access_control_to_application_settings.rb | 12 - ...4915_add_repository_storage_to_snippets.rb | 26 - ...8125015_add_storage_version_to_snippets.rb | 23 - ...90253_add_tab_width_to_user_preferences.rb | 9 - ...124940_add_scheduling_type_to_ci_builds.rb | 11 - ...dex_to_elasticsearch_indexed_namespaces.rb | 17 - ...sonal_access_tokens_user_id_foreign_key.rb | 20 - ...4_drop_index_ci_pipelines_on_project_id.rb | 20 - ...ate_existing_dast_builds_with_variables.rb | 1 + ...external_audit_event_destinations_table.rb | 15 + ..._data_to_vulnerability_finding_evidence.rb | 7 + ...worker_capacity_to_application_settings.rb | 11 + ...xy_ttl_worker_capacity_check_constraint.rb | 15 + ...report_type_into_approval_project_rules.rb | 11 + ...d_runner_features_to_ci_builds_metadata.rb | 9 + ...y_proxy_manifests_uniqueness_constraint.rb | 18 + ...810_add_throttle_deprecated_api_columns.rb | 13 + ...status_index_to_dependency_proxy_tables.rb | 18 + ...clusters_integration_prometheus_enabled.rb | 15 + ...sters_integration_elastic_stack_enabled.rb | 15 + ...423_add_avatar_and_description_to_topic.rb | 15 + ...547_add_process_mode_to_resource_groups.rb | 15 + ...ry_index_for_project_topics_on_taggings.rb | 20 + ...e_pipeline_fk_from_packages_build_infos.rb | 15 + ..._from_packages_package_file_build_infos.rb | 15 + ...d_registration_objective_to_user_detail.rb | 7 + ..._limit_to_topics_description_and_avatar.rb | 15 + ...ipeline_enabled_to_application_settings.rb | 7 + ..._index_labels_using_varchar_pattern_ops.rb | 39 + ..._type_index_into_approval_project_rules.rb | 15 + ...spaces_index_on_name_parent_id_and_type.rb | 15 + ..._namespaces_index_on_name_and_parent_id.rb | 15 + ...reate_issue_customer_relations_contacts.rb | 14 + ...ustomer_relations_contacts_foreign_keys.rb | 20 + ...ta_data_to_user_credit_card_validations.rb | 13 + ...er_name_on_user_credit_card_validations.rb | 23 + ...ta_data_on_user_credit_card_validations.rb | 19 + ...e_default_for_integrated_error_tracking.rb | 11 + ...155022_improve_index_for_error_tracking.rb | 33 + ...tus_id_index_to_dependency_proxy_tables.rb | 18 + ...0210929025600_add_phone_to_user_details.rb | 15 + ...34_add_text_limit_to_user_details_phone.rb | 13 + ..._add_unique_index_phone_on_user_details.rb | 15 + ...0210929032555_create_verification_codes.rb | 36 + ...tions_management_project_id_foreign_key.rb | 18 + ..._releases_author_id_id_created_at_index.rb | 14 + ...08_fix_deprecated_api_throttle_defaults.rb | 8 + ...1222_add_source_version_to_bulk_imports.rb | 7 + ...062942_create_coverage_fuzzing_corpuses.rb | 18 + ...0211004075629_add_topics_name_gin_index.rb | 15 + ..._event_destination_limit_to_plan_limits.rb | 7 + ..._add_foreign_key_to_corpuses_on_project.rb | 15 + ...616_add_foreign_key_to_corpuses_on_user.rb | 15 + ..._add_foreign_key_to_corpuses_on_package.rb | 15 + ...28_drop_time_range_partitioned_loose_fk.rb | 27 + ...58_add_range_partitioned_loose_fk_table.rb | 29 + ...00112_recreate_loose_fk_insert_function.rb | 40 + ...4_add_topics_total_projects_count_cache.rb | 11 + ...211006103122_change_helm_channel_length.rb | 14 + ...0_add_topics_total_projects_count_index.rb | 15 + ...d_status_column_to_security_scans_table.rb | 7 + ...duration_to_ci_namespace_monthly_usages.rb | 9 + ...s_duration_to_ci_project_monthly_usages.rb | 9 + ...xt_limit_to_bulk_imports_source_version.rb | 13 + ...elete_inconsistent_internal_id_records2.rb | 43 - ...rate_delete_container_repository_worker.rb | 15 - ..._migrate_storage_migrator_sidekiq_queue.rb | 18 - .../20190131122559_fix_null_type_labels.rb | 23 - ...e_auto_dev_ops_domain_to_cluster_domain.rb | 29 - ...112022_schedule_sync_issuables_state_id.rb | 58 - ...1_migrate_project_migrate_sidekiq_queue.rb | 15 - ...ean_up_noteable_id_for_notes_on_commits.rb | 33 - ..._populate_merge_request_assignees_table.rb | 23 - ...0190325111602_rename_v2_root_namespaces.rb | 27 - ..._approvals_user_id_and_merge_request_id.rb | 39 - ...137_remove_alternate_url_from_geo_nodes.rb | 21 - ...pulate_project_statistics_packages_size.rb | 46 - .../20190424134256_drop_projects_ci_id.rb | 33 - ...edule_sync_issuables_state_id_where_nil.rb | 63 - ...0190511144331_remove_users_support_type.rb | 27 - ...7153211_migrate_k8s_service_integration.rb | 104 - ...le_type_on_approval_merge_request_rules.rb | 34 - ...2143720_drop_project_auto_devops_domain.rb | 11 - ...alid_time_for_pages_domain_certificates.rb | 34 - ...527194900_schedule_calculate_wiki_sizes.rb | 32 - ...190528180441_enqueue_reset_merge_status.rb | 25 - ...te_legacy_managed_clusters_to_unmanaged.rb | 48 - ...50_encrypt_feature_flags_clients_tokens.rb | 27 - ...s_and_audit_events_created_at_author_id.rb | 25 - ...ged_clusters_with_no_token_to_unmanaged.rb | 48 - ...20190618171120_update_geo_nodes_primary.rb | 20 - ...843_remove_import_columns_from_projects.rb | 14 - ...8_enqueue_reset_merge_status_second_run.rb | 25 - ...remove_sentry_from_application_settings.rb | 40 - ...chedule_fixing_names_of_user_namespaces.rb | 48 - ...ulate_remaining_merge_request_assignees.rb | 20 - ...0703185326_fix_wrong_pages_access_level.rb | 28 - ...0711201818_encrypt_deploy_tokens_tokens.rb | 27 - ...15043944_remove_sha_index_from_versions.rb | 17 - ...d_unique_issue_id_sha_index_to_versions.rb | 17 - ...ect_features_pages_access_level_default.rb | 12 - ...migrate_discussion_id_on_promoted_epics.rb | 62 - ...dentities_lower_extern_uid_and_provider.rb | 19 - ...8_set_not_null_on_users_private_profile.rb | 26 - ...and_services_application_setting_rename.rb | 17 - ..._settings_snowplow_collector_uri_rename.rb | 17 - ...index_on_id_and_type_and_public_to_keys.rb | 23 - ..._self_monitoring_project_alerting_token.rb | 19 - ...812070645_migrate_private_profile_nulls.rb | 31 - ...e_prometheus_query_for_invocation_count.rb | 13 - ...822185441_cleanup_epics_state_id_rename.rb | 17 - ...status_to_protected_branches_in_batches.rb | 46 - ...15_remove_support_bot_column_from_users.rb | 19 - ...mn_from_intermediate_release_milestones.rb | 9 - ...ule_project_any_approval_rule_migration.rb | 49 - ...rge_request_any_approval_rule_migration.rb | 49 - ...date_cs_vulnerability_confidence_column.rb | 32 - ...n_application_id_on_oauth_access_tokens.rb | 17 - .../20190911251732_sync_issuables_state_id.rb | 81 - ...fill_software_licenses_spdx_identifiers.rb | 57 - ...chedule_productivity_analytics_backfill.rb | 15 - ...90924152703_migrate_issue_trackers_data.rb | 31 - ...3_schedule_epic_issues_after_epics_move.rb | 35 - ...31332_schedule_pages_metadata_migration.rb | 30 - ...g_any_approver_rules_for_merge_requests.rb | 44 - ...maining_any_approver_rules_for_projects.rb | 44 - ...3850_fix_any_approver_rule_for_projects.rb | 51 - ...anagement_version_user_to_author_rename.rb | 17 - ...quire_code_owner_approval_from_projects.rb | 27 - ...edule_fix_gitlab_com_pages_access_level.rb | 17 - ...7180026_drop_ci_build_trace_sections_id.rb | 19 - ...2_remove_empty_github_service_templates.rb | 28 - ...5_nullify_feature_flag_plaintext_tokens.rb | 39 - ...cation_settings_snowplow_site_id_rename.rb | 17 - ..._remove_pendo_from_application_settings.rb | 19 - ..._backfill_version_author_and_created_at.rb | 67 - ...20191031112603_remove_limits_from_plans.rb | 17 - .../20191104142124_nullify_users_role.rb | 26 - ...625_set_report_type_for_vulnerabilities.rb | 34 - ...1105140942_add_indices_to_abuse_reports.rb | 17 - ..._unique_constraint_to_software_licenses.rb | 69 - ...23159_complete_pages_metadata_migration.rb | 13 - ..._vulnerabilities_title_html_to_nullable.rb | 9 - ...4_set_resolved_state_on_vulnerabilities.rb | 31 - ...14204343_remove_milestone_id_from_epics.rb | 13 - ...91115115043_migrate_epic_mentions_to_db.rb | 36 - ...15522_migrate_epic_notes_mentions_to_db.rb | 45 - ...ps_feature_flags_scopes_target_user_ids.rb | 53 - ..._license_policies_classification_rename.rb | 17 - ...56_drop_packages_package_metadata_table.rb | 16 - ...ntext_columns_from_application_settings.rb | 28 - ...deploy_access_levels_for_removed_groups.rb | 32 - ...ect_ci_cd_settings_merge_trains_enabled.rb | 19 - ..._operations_feature_flags_clients_token.rb | 23 - .../20191204114127_delete_legacy_triggers.rb | 17 - ...05084057_update_minimum_password_length.rb | 24 - ...209215316_knative_0_9_prometheus_update.rb | 13 - ..._mentions_commit_id_column_type_cleanup.rb | 25 - ...add_index_on_project_id_to_ci_pipelines.rb | 18 - ...orary_columns_and_triggers_for_taggings.rb | 18 + ...igint_conversion_for_ci_builds_metadata.rb | 17 + ...ype_for_existing_approval_project_rules.rb | 39 + ...cleanup_bigint_conversion_for_ci_builds.rb | 16 + ...culate_vulnerabilities_occurrences_uuid.rb | 18 + ...culate_vulnerabilities_occurrences_uuid.rb | 18 + ...reign_key_from_terraform_state_versions.rb | 15 + ...tion_index_to_vulnerability_occurrences.rb | 18 + ..._drop_int4_columns_for_ci_job_artifacts.rb | 10 + ...op_int4_column_for_ci_sources_pipelines.rb | 9 + ...10922082019_drop_int4_column_for_events.rb | 9 + ...ce_group_status_commit_id_for_ci_builds.rb | 22 + ...rop_int4_column_for_push_event_payloads.rb | 9 + ...3133143_remove_redundant_taggings_index.rb | 15 + ...delayed_project_removal_from_namespaces.rb | 19 + ...update_issues_relative_position_indexes.rb | 24 + ...00_add_temporary_index_to_issue_metrics.rb | 17 + ...le_fix_first_mentioned_in_commit_at_job.rb | 27 + ...51202_remove_bio_html_from_user_details.rb | 10 + ...ereschedule_delete_orphaned_deployments.rb | 23 + ...i_builds_on_name_and_id_parser_features.rb | 29 + ...ulate_topics_total_projects_count_cache.rb | 23 + ...for_ci_job_artifacts_expire_at_unlocked.rb | 16 + ...174114_add_namespace_index_on_type_sync.rb | 20 + ...e_analytics_snapshots_segment_id_column.rb | 17 + ...opulate_status_column_of_security_scans.rb | 24 + ...phaned_deployments_background_migration.rb | 15 + ...d_status_from_pending_alert_escalations.rb | 29 + db/schema_migrations/20190102152410 | 1 - db/schema_migrations/20190103140724 | 1 - db/schema_migrations/20190104182041 | 1 - db/schema_migrations/20190107151020 | 1 - db/schema_migrations/20190108192941 | 1 - db/schema_migrations/20190109153125 | 1 - db/schema_migrations/20190114172110 | 1 - db/schema_migrations/20190115054215 | 1 - db/schema_migrations/20190115054216 | 1 - db/schema_migrations/20190115092821 | 1 - db/schema_migrations/20190116234221 | 1 - db/schema_migrations/20190124200344 | 1 - db/schema_migrations/20190130091630 | 1 - db/schema_migrations/20190131122559 | 1 - db/schema_migrations/20190204115450 | 1 - db/schema_migrations/20190206193120 | 1 - db/schema_migrations/20190211131150 | 1 - db/schema_migrations/20190214112022 | 1 - db/schema_migrations/20190215154930 | 1 - db/schema_migrations/20190218134158 | 1 - db/schema_migrations/20190218134209 | 1 - db/schema_migrations/20190219201635 | 1 - db/schema_migrations/20190220142344 | 1 - db/schema_migrations/20190220150130 | 1 - db/schema_migrations/20190222051615 | 1 - db/schema_migrations/20190225152525 | 1 - db/schema_migrations/20190225160301 | 1 - db/schema_migrations/20190228192410 | 1 - db/schema_migrations/20190301081611 | 1 - db/schema_migrations/20190301182457 | 1 - db/schema_migrations/20190312071108 | 1 - db/schema_migrations/20190312113229 | 1 - db/schema_migrations/20190312113634 | 1 - db/schema_migrations/20190313092516 | 1 - db/schema_migrations/20190315191339 | 1 - db/schema_migrations/20190320174702 | 1 - db/schema_migrations/20190322132835 | 1 - db/schema_migrations/20190322164830 | 1 - db/schema_migrations/20190325080727 | 1 - db/schema_migrations/20190325105715 | 1 - db/schema_migrations/20190325111602 | 1 - db/schema_migrations/20190325165127 | 1 - db/schema_migrations/20190326164045 | 1 - db/schema_migrations/20190327163904 | 1 - db/schema_migrations/20190329085614 | 1 - db/schema_migrations/20190402150158 | 1 - db/schema_migrations/20190403161806 | 1 - db/schema_migrations/20190404143330 | 1 - db/schema_migrations/20190404231137 | 1 - db/schema_migrations/20190408163745 | 1 - db/schema_migrations/20190409224933 | 1 - db/schema_migrations/20190410173409 | 1 - db/schema_migrations/20190412155659 | 1 - db/schema_migrations/20190412183653 | 1 - db/schema_migrations/20190414185432 | 1 - db/schema_migrations/20190415030217 | 1 - db/schema_migrations/20190415095825 | 1 - db/schema_migrations/20190415172035 | 1 - db/schema_migrations/20190416185130 | 1 - db/schema_migrations/20190416213556 | 1 - db/schema_migrations/20190416213615 | 1 - db/schema_migrations/20190416213631 | 1 - db/schema_migrations/20190418132125 | 1 - db/schema_migrations/20190418132750 | 1 - db/schema_migrations/20190418182545 | 1 - db/schema_migrations/20190419121952 | 1 - db/schema_migrations/20190419123057 | 1 - db/schema_migrations/20190422082247 | 1 - db/schema_migrations/20190423124640 | 1 - db/schema_migrations/20190424134256 | 1 - db/schema_migrations/20190426180107 | 1 - db/schema_migrations/20190429082448 | 1 - db/schema_migrations/20190430131225 | 1 - db/schema_migrations/20190430142025 | 1 - db/schema_migrations/20190506135337 | 1 - db/schema_migrations/20190506135400 | 1 - db/schema_migrations/20190511144331 | 1 - db/schema_migrations/20190513174947 | 1 - db/schema_migrations/20190514105711 | 1 - db/schema_migrations/20190515125613 | 1 - db/schema_migrations/20190516011213 | 1 - db/schema_migrations/20190516151857 | 1 - db/schema_migrations/20190516155724 | 1 - db/schema_migrations/20190517153211 | 1 - db/schema_migrations/20190520200123 | 1 - db/schema_migrations/20190520201748 | 1 - db/schema_migrations/20190521174505 | 1 - db/schema_migrations/20190522143720 | 1 - db/schema_migrations/20190523112344 | 1 - db/schema_migrations/20190524062810 | 1 - db/schema_migrations/20190524071727 | 1 - db/schema_migrations/20190524073827 | 1 - db/schema_migrations/20190527011309 | 1 - db/schema_migrations/20190527194830 | 1 - db/schema_migrations/20190527194900 | 1 - db/schema_migrations/20190528173628 | 1 - db/schema_migrations/20190528180441 | 1 - db/schema_migrations/20190529142545 | 1 - db/schema_migrations/20190530042141 | 1 - db/schema_migrations/20190530154715 | 1 - db/schema_migrations/20190531153110 | 1 - db/schema_migrations/20190602014139 | 1 - db/schema_migrations/20190603124955 | 1 - db/schema_migrations/20190604091310 | 1 - db/schema_migrations/20190604184643 | 1 - db/schema_migrations/20190605104727 | 1 - db/schema_migrations/20190605184422 | 1 - db/schema_migrations/20190606014128 | 1 - db/schema_migrations/20190606034427 | 1 - db/schema_migrations/20190606054649 | 1 - db/schema_migrations/20190606054742 | 1 - db/schema_migrations/20190606054832 | 1 - db/schema_migrations/20190606163724 | 1 - db/schema_migrations/20190606175050 | 1 - db/schema_migrations/20190606202100 | 1 - db/schema_migrations/20190607085356 | 1 - db/schema_migrations/20190607145325 | 1 - db/schema_migrations/20190607190856 | 1 - db/schema_migrations/20190607205656 | 1 - db/schema_migrations/20190610142825 | 1 - db/schema_migrations/20190611090827 | 1 - db/schema_migrations/20190611100201 | 1 - db/schema_migrations/20190611100202 | 1 - db/schema_migrations/20190611161641 | 1 - db/schema_migrations/20190611161642 | 1 - db/schema_migrations/20190612111201 | 1 - db/schema_migrations/20190612111404 | 1 - db/schema_migrations/20190613030606 | 1 - db/schema_migrations/20190613044655 | 1 - db/schema_migrations/20190613073003 | 1 - db/schema_migrations/20190613231640 | 1 - db/schema_migrations/20190617123615 | 1 - db/schema_migrations/20190618171120 | 1 - db/schema_migrations/20190619175843 | 1 - db/schema_migrations/20190620105427 | 1 - db/schema_migrations/20190620112608 | 1 - db/schema_migrations/20190621022810 | 1 - db/schema_migrations/20190621151636 | 1 - db/schema_migrations/20190623212503 | 1 - db/schema_migrations/20190624123615 | 1 - db/schema_migrations/20190625115224 | 1 - db/schema_migrations/20190625184066 | 1 - db/schema_migrations/20190626175626 | 1 - db/schema_migrations/20190627051902 | 1 - db/schema_migrations/20190627100221 | 1 - db/schema_migrations/20190627122264 | 1 - db/schema_migrations/20190628145246 | 1 - db/schema_migrations/20190628185000 | 1 - db/schema_migrations/20190628185004 | 1 - db/schema_migrations/20190628191740 | 1 - db/schema_migrations/20190702173936 | 1 - db/schema_migrations/20190703043358 | 1 - db/schema_migrations/20190703130053 | 1 - db/schema_migrations/20190703171157 | 1 - db/schema_migrations/20190703171555 | 1 - db/schema_migrations/20190703185326 | 1 - db/schema_migrations/20190709204413 | 1 - db/schema_migrations/20190709220014 | 1 - db/schema_migrations/20190709220143 | 1 - db/schema_migrations/20190710151229 | 1 - db/schema_migrations/20190711124721 | 1 - db/schema_migrations/20190711200053 | 1 - db/schema_migrations/20190711200508 | 1 - db/schema_migrations/20190711201818 | 1 - db/schema_migrations/20190712040400 | 1 - db/schema_migrations/20190712040412 | 1 - db/schema_migrations/20190712064021 | 1 - db/schema_migrations/20190715042813 | 1 - db/schema_migrations/20190715043944 | 1 - db/schema_migrations/20190715043954 | 1 - db/schema_migrations/20190715044501 | 1 - db/schema_migrations/20190715114644 | 1 - db/schema_migrations/20190715140740 | 1 - db/schema_migrations/20190715142138 | 1 - db/schema_migrations/20190715173819 | 1 - db/schema_migrations/20190715193142 | 1 - db/schema_migrations/20190715215532 | 1 - db/schema_migrations/20190715215549 | 1 - db/schema_migrations/20190716144222 | 1 - db/schema_migrations/20190719122333 | 1 - db/schema_migrations/20190719174505 | 1 - db/schema_migrations/20190722104947 | 1 - db/schema_migrations/20190722132830 | 1 - db/schema_migrations/20190722144316 | 1 - db/schema_migrations/20190723105753 | 1 - db/schema_migrations/20190723153247 | 1 - db/schema_migrations/20190724112147 | 1 - db/schema_migrations/20190725012225 | 1 - db/schema_migrations/20190725080128 | 1 - db/schema_migrations/20190725183432 | 1 - db/schema_migrations/20190726101050 | 1 - db/schema_migrations/20190726101133 | 1 - db/schema_migrations/20190729062536 | 1 - db/schema_migrations/20190729090456 | 1 - db/schema_migrations/20190729180447 | 1 - db/schema_migrations/20190731084415 | 1 - db/schema_migrations/20190801060809 | 1 - db/schema_migrations/20190801114109 | 1 - db/schema_migrations/20190801142441 | 1 - db/schema_migrations/20190801193427 | 1 - db/schema_migrations/20190802012622 | 1 - db/schema_migrations/20190802091750 | 1 - db/schema_migrations/20190802195602 | 1 - db/schema_migrations/20190802235445 | 1 - db/schema_migrations/20190805140353 | 1 - db/schema_migrations/20190806071559 | 1 - db/schema_migrations/20190807023052 | 1 - db/schema_migrations/20190808152507 | 1 - db/schema_migrations/20190809072552 | 1 - db/schema_migrations/20190812070645 | 1 - db/schema_migrations/20190814205640 | 1 - db/schema_migrations/20190815093936 | 1 - db/schema_migrations/20190815093949 | 1 - db/schema_migrations/20190816151221 | 1 - db/schema_migrations/20190819131155 | 1 - db/schema_migrations/20190819231552 | 1 - db/schema_migrations/20190820163320 | 1 - db/schema_migrations/20190821040941 | 1 - db/schema_migrations/20190822175441 | 1 - db/schema_migrations/20190822181528 | 1 - db/schema_migrations/20190822185441 | 1 - db/schema_migrations/20190823055948 | 1 - db/schema_migrations/20190826090628 | 1 - db/schema_migrations/20190826100605 | 1 - db/schema_migrations/20190827102026 | 1 - db/schema_migrations/20190827222124 | 1 - db/schema_migrations/20190828083843 | 1 - db/schema_migrations/20190828110802 | 1 - db/schema_migrations/20190828170945 | 1 - db/schema_migrations/20190828172831 | 1 - db/schema_migrations/20190829131130 | 1 - db/schema_migrations/20190830075508 | 1 - db/schema_migrations/20190830080123 | 1 - db/schema_migrations/20190830080626 | 1 - db/schema_migrations/20190830140240 | 1 - db/schema_migrations/20190901174200 | 1 - db/schema_migrations/20190902131045 | 1 - db/schema_migrations/20190902152329 | 1 - db/schema_migrations/20190902160015 | 1 - db/schema_migrations/20190903150358 | 1 - db/schema_migrations/20190903150435 | 1 - db/schema_migrations/20190904173203 | 1 - db/schema_migrations/20190904205212 | 1 - db/schema_migrations/20190905022045 | 1 - db/schema_migrations/20190905074652 | 1 - db/schema_migrations/20190905091812 | 1 - db/schema_migrations/20190905091831 | 1 - db/schema_migrations/20190905140605 | 1 - db/schema_migrations/20190905223800 | 1 - db/schema_migrations/20190905223900 | 1 - db/schema_migrations/20190906104555 | 1 - db/schema_migrations/20190907184714 | 1 - db/schema_migrations/20190909045845 | 1 - db/schema_migrations/20190909141517 | 1 - db/schema_migrations/20190910000130 | 1 - db/schema_migrations/20190910103144 | 1 - db/schema_migrations/20190910114843 | 1 - db/schema_migrations/20190910125852 | 1 - db/schema_migrations/20190910211526 | 1 - db/schema_migrations/20190910212256 | 1 - db/schema_migrations/20190911115056 | 1 - db/schema_migrations/20190911115109 | 1 - db/schema_migrations/20190911115207 | 1 - db/schema_migrations/20190911115222 | 1 - db/schema_migrations/20190911251732 | 1 - db/schema_migrations/20190912061145 | 1 - db/schema_migrations/20190912223232 | 1 - db/schema_migrations/20190913174707 | 1 - db/schema_migrations/20190913175827 | 1 - db/schema_migrations/20190914223900 | 1 - db/schema_migrations/20190917173107 | 1 - db/schema_migrations/20190918025618 | 1 - db/schema_migrations/20190918102042 | 1 - db/schema_migrations/20190918104212 | 1 - db/schema_migrations/20190918104222 | 1 - db/schema_migrations/20190918104731 | 1 - db/schema_migrations/20190918121135 | 1 - db/schema_migrations/20190919040324 | 1 - db/schema_migrations/20190919091300 | 1 - db/schema_migrations/20190919104119 | 1 - db/schema_migrations/20190919162036 | 1 - db/schema_migrations/20190919183411 | 1 - db/schema_migrations/20190920122420 | 1 - db/schema_migrations/20190920194925 | 1 - db/schema_migrations/20190920224341 | 1 - db/schema_migrations/20190924124627 | 1 - db/schema_migrations/20190924152703 | 1 - db/schema_migrations/20190925055714 | 1 - db/schema_migrations/20190925055902 | 1 - db/schema_migrations/20190926041216 | 1 - db/schema_migrations/20190926180443 | 1 - db/schema_migrations/20190926225633 | 1 - db/schema_migrations/20190927055500 | 1 - db/schema_migrations/20190927055540 | 1 - db/schema_migrations/20190927074328 | 1 - db/schema_migrations/20190929180751 | 1 - db/schema_migrations/20190929180813 | 1 - db/schema_migrations/20190929180827 | 1 - db/schema_migrations/20190930025655 | 1 - db/schema_migrations/20190930063627 | 1 - db/schema_migrations/20190930082942 | 1 - db/schema_migrations/20190930153535 | 1 - db/schema_migrations/20191001040549 | 1 - db/schema_migrations/20191001170300 | 1 - db/schema_migrations/20191002031332 | 1 - db/schema_migrations/20191002123516 | 1 - db/schema_migrations/20191003015155 | 1 - db/schema_migrations/20191003060227 | 1 - db/schema_migrations/20191003064615 | 1 - db/schema_migrations/20191003130045 | 1 - db/schema_migrations/20191003150045 | 1 - db/schema_migrations/20191003161031 | 1 - db/schema_migrations/20191003161032 | 1 - db/schema_migrations/20191003195218 | 1 - db/schema_migrations/20191003195620 | 1 - db/schema_migrations/20191003200045 | 1 - db/schema_migrations/20191003250045 | 1 - db/schema_migrations/20191003300045 | 1 - db/schema_migrations/20191003350045 | 1 - db/schema_migrations/20191004080818 | 1 - db/schema_migrations/20191004081520 | 1 - db/schema_migrations/20191004133612 | 1 - db/schema_migrations/20191004151428 | 1 - db/schema_migrations/20191007163701 | 1 - db/schema_migrations/20191007163736 | 1 - db/schema_migrations/20191008013056 | 1 - db/schema_migrations/20191008142331 | 1 - db/schema_migrations/20191008143850 | 1 - db/schema_migrations/20191008180203 | 1 - db/schema_migrations/20191008200204 | 1 - db/schema_migrations/20191009100244 | 1 - db/schema_migrations/20191009110124 | 1 - db/schema_migrations/20191009110757 | 1 - db/schema_migrations/20191009222222 | 1 - db/schema_migrations/20191010174846 | 1 - db/schema_migrations/20191011084019 | 1 - db/schema_migrations/20191013100213 | 1 - db/schema_migrations/20191014025629 | 1 - db/schema_migrations/20191014030134 | 1 - db/schema_migrations/20191014030730 | 1 - db/schema_migrations/20191014084150 | 1 - db/schema_migrations/20191014123159 | 1 - db/schema_migrations/20191014132931 | 1 - db/schema_migrations/20191015154408 | 1 - db/schema_migrations/20191016072826 | 1 - db/schema_migrations/20191016133352 | 1 - db/schema_migrations/20191016220135 | 1 - db/schema_migrations/20191017001326 | 1 - db/schema_migrations/20191017045817 | 1 - db/schema_migrations/20191017094449 | 1 - db/schema_migrations/20191017134513 | 1 - db/schema_migrations/20191017180026 | 1 - db/schema_migrations/20191017191341 | 1 - db/schema_migrations/20191021101942 | 1 - db/schema_migrations/20191022113635 | 1 - db/schema_migrations/20191023093207 | 1 - db/schema_migrations/20191023132005 | 1 - db/schema_migrations/20191023152913 | 1 - db/schema_migrations/20191024134020 | 1 - db/schema_migrations/20191025092748 | 1 - db/schema_migrations/20191026041447 | 1 - db/schema_migrations/20191026120008 | 1 - db/schema_migrations/20191026120112 | 1 - db/schema_migrations/20191026124116 | 1 - db/schema_migrations/20191028130054 | 1 - db/schema_migrations/20191028162543 | 1 - db/schema_migrations/20191028184740 | 1 - db/schema_migrations/20191029095537 | 1 - db/schema_migrations/20191029125305 | 1 - db/schema_migrations/20191029191901 | 1 - db/schema_migrations/20191030135044 | 1 - db/schema_migrations/20191030152934 | 1 - db/schema_migrations/20191030193050 | 1 - db/schema_migrations/20191030223057 | 1 - db/schema_migrations/20191031095636 | 1 - db/schema_migrations/20191031112603 | 1 - db/schema_migrations/20191101092917 | 1 - db/schema_migrations/20191103202505 | 1 - db/schema_migrations/20191104142124 | 1 - db/schema_migrations/20191104205020 | 1 - db/schema_migrations/20191105094558 | 1 - db/schema_migrations/20191105094625 | 1 - db/schema_migrations/20191105134413 | 1 - db/schema_migrations/20191105140942 | 1 - db/schema_migrations/20191105155113 | 1 - db/schema_migrations/20191105193652 | 1 - db/schema_migrations/20191106144901 | 1 - db/schema_migrations/20191106150931 | 1 - db/schema_migrations/20191107064946 | 1 - db/schema_migrations/20191107173446 | 1 - db/schema_migrations/20191107220314 | 1 - db/schema_migrations/20191108031900 | 1 - db/schema_migrations/20191108202723 | 1 - db/schema_migrations/20191111115229 | 1 - db/schema_migrations/20191111115431 | 1 - db/schema_migrations/20191111121500 | 1 - db/schema_migrations/20191111165017 | 1 - db/schema_migrations/20191111175230 | 1 - db/schema_migrations/20191112023159 | 1 - db/schema_migrations/20191112090226 | 1 - db/schema_migrations/20191112105448 | 1 - db/schema_migrations/20191112115247 | 1 - db/schema_migrations/20191112115317 | 1 - db/schema_migrations/20191112212815 | 1 - db/schema_migrations/20191112214305 | 1 - db/schema_migrations/20191112221821 | 1 - db/schema_migrations/20191112232338 | 1 - db/schema_migrations/20191114132259 | 1 - db/schema_migrations/20191114173508 | 1 - db/schema_migrations/20191114173602 | 1 - db/schema_migrations/20191114173624 | 1 - db/schema_migrations/20191114201118 | 1 - db/schema_migrations/20191114204343 | 1 - db/schema_migrations/20191115001123 | 1 - db/schema_migrations/20191115001843 | 1 - db/schema_migrations/20191115091425 | 1 - db/schema_migrations/20191115114032 | 1 - db/schema_migrations/20191115115043 | 1 - db/schema_migrations/20191115115522 | 1 - db/schema_migrations/20191118053631 | 1 - db/schema_migrations/20191118155702 | 1 - db/schema_migrations/20191118173522 | 1 - db/schema_migrations/20191118182722 | 1 - db/schema_migrations/20191118211629 | 1 - db/schema_migrations/20191119023952 | 1 - db/schema_migrations/20191119220425 | 1 - db/schema_migrations/20191119221041 | 1 - db/schema_migrations/20191119231621 | 1 - db/schema_migrations/20191120084627 | 1 - db/schema_migrations/20191120115530 | 1 - db/schema_migrations/20191120200015 | 1 - db/schema_migrations/20191121111621 | 1 - db/schema_migrations/20191121121947 | 1 - db/schema_migrations/20191121122856 | 1 - db/schema_migrations/20191121161018 | 1 - db/schema_migrations/20191121193110 | 1 - db/schema_migrations/20191122135327 | 1 - db/schema_migrations/20191122161519 | 1 - db/schema_migrations/20191123062354 | 1 - db/schema_migrations/20191123081456 | 1 - db/schema_migrations/20191124150431 | 1 - db/schema_migrations/20191125024005 | 1 - db/schema_migrations/20191125114345 | 1 - db/schema_migrations/20191125133353 | 1 - db/schema_migrations/20191125140458 | 1 - db/schema_migrations/20191126134210 | 1 - db/schema_migrations/20191127030005 | 1 - db/schema_migrations/20191127151619 | 1 - db/schema_migrations/20191127151629 | 1 - db/schema_migrations/20191127163053 | 1 - db/schema_migrations/20191127221608 | 1 - db/schema_migrations/20191128145231 | 1 - db/schema_migrations/20191128145232 | 1 - db/schema_migrations/20191128145233 | 1 - db/schema_migrations/20191128162854 | 1 - db/schema_migrations/20191129134844 | 1 - db/schema_migrations/20191129144630 | 1 - db/schema_migrations/20191129144631 | 1 - db/schema_migrations/20191202031812 | 1 - db/schema_migrations/20191202181924 | 1 - db/schema_migrations/20191203121729 | 1 - db/schema_migrations/20191204070713 | 1 - db/schema_migrations/20191204093410 | 1 - db/schema_migrations/20191204114127 | 1 - db/schema_migrations/20191204192726 | 1 - db/schema_migrations/20191205060723 | 1 - db/schema_migrations/20191205084057 | 1 - db/schema_migrations/20191205094702 | 1 - db/schema_migrations/20191205145647 | 1 - db/schema_migrations/20191205212923 | 1 - db/schema_migrations/20191205212924 | 1 - db/schema_migrations/20191206014412 | 1 - db/schema_migrations/20191206022133 | 1 - db/schema_migrations/20191206122926 | 1 - db/schema_migrations/20191207104000 | 1 - db/schema_migrations/20191208071111 | 1 - db/schema_migrations/20191208071112 | 1 - db/schema_migrations/20191208110214 | 1 - db/schema_migrations/20191209143606 | 1 - db/schema_migrations/20191209215316 | 1 - db/schema_migrations/20191210211253 | 1 - db/schema_migrations/20191212140117 | 1 - db/schema_migrations/20191212162434 | 1 - db/schema_migrations/20191213104838 | 1 - db/schema_migrations/20191213120427 | 1 - db/schema_migrations/20191213143656 | 1 - db/schema_migrations/20191213184609 | 1 - db/schema_migrations/20191214175727 | 1 - db/schema_migrations/20191216074800 | 1 - db/schema_migrations/20191216074802 | 1 - db/schema_migrations/20191216074803 | 1 - db/schema_migrations/20191216094119 | 1 - db/schema_migrations/20191216183531 | 1 - db/schema_migrations/20191216183532 | 1 - db/schema_migrations/20191217165641 | 1 - db/schema_migrations/20191217212348 | 1 - db/schema_migrations/20191218084115 | 1 - db/schema_migrations/20191218122457 | 1 - db/schema_migrations/20191218124915 | 1 - db/schema_migrations/20191218125015 | 1 - db/schema_migrations/20191218190253 | 1 - db/schema_migrations/20191218225624 | 1 - db/schema_migrations/20191223124940 | 1 - db/schema_migrations/20191225071320 | 1 - db/schema_migrations/20191227140254 | 1 - db/schema_migrations/20191229140154 | 1 - db/schema_migrations/20210819185500 | 1 + db/schema_migrations/20210906130643 | 1 + db/schema_migrations/20210907013944 | 1 + db/schema_migrations/20210908195506 | 1 + db/schema_migrations/20210910014741 | 1 + db/schema_migrations/20210910015047 | 1 + db/schema_migrations/20210910192921 | 1 + db/schema_migrations/20210910194952 | 1 + db/schema_migrations/20210912034903 | 1 + db/schema_migrations/20210913224558 | 1 + db/schema_migrations/20210914145810 | 1 + db/schema_migrations/20210914172202 | 1 + db/schema_migrations/20210915000453 | 1 + db/schema_migrations/20210915001242 | 1 + db/schema_migrations/20210915022415 | 1 + db/schema_migrations/20210915070423 | 1 + db/schema_migrations/20210916132547 | 1 + db/schema_migrations/20210917134321 | 1 + db/schema_migrations/20210917153645 | 1 + db/schema_migrations/20210917153905 | 1 + db/schema_migrations/20210917224419 | 1 + db/schema_migrations/20210918201050 | 1 + db/schema_migrations/20210918202855 | 1 + db/schema_migrations/20210920104446 | 1 + db/schema_migrations/20210920232025 | 1 + db/schema_migrations/20210921032008 | 1 + db/schema_migrations/20210921062820 | 1 + db/schema_migrations/20210921063924 | 1 + db/schema_migrations/20210921191010 | 1 + db/schema_migrations/20210922021816 | 1 + db/schema_migrations/20210922025631 | 1 + db/schema_migrations/20210922082019 | 1 + db/schema_migrations/20210922084115 | 1 + db/schema_migrations/20210922091402 | 1 + db/schema_migrations/20210922172056 | 1 + db/schema_migrations/20210922172156 | 1 + db/schema_migrations/20210922215740 | 1 + db/schema_migrations/20210922220104 | 1 + db/schema_migrations/20210923042323 | 1 + db/schema_migrations/20210923042324 | 1 + db/schema_migrations/20210923042325 | 1 + db/schema_migrations/20210923133143 | 1 + db/schema_migrations/20210923135909 | 1 + db/schema_migrations/20210923151641 | 1 + db/schema_migrations/20210927153807 | 1 + db/schema_migrations/20210928155022 | 1 + db/schema_migrations/20210928171122 | 1 + db/schema_migrations/20210929025600 | 1 + db/schema_migrations/20210929030834 | 1 + db/schema_migrations/20210929031049 | 1 + db/schema_migrations/20210929032555 | 1 + db/schema_migrations/20210929115340 | 1 + db/schema_migrations/20210929121516 | 1 + db/schema_migrations/20210930081208 | 1 + db/schema_migrations/20211001001222 | 1 + db/schema_migrations/20211004062942 | 1 + db/schema_migrations/20211004075629 | 1 + db/schema_migrations/20211004081911 | 1 + db/schema_migrations/20211004110500 | 1 + db/schema_migrations/20211004110927 | 1 + db/schema_migrations/20211004151202 | 1 + db/schema_migrations/20211005010101 | 1 + db/schema_migrations/20211005063519 | 1 + db/schema_migrations/20211005063616 | 1 + db/schema_migrations/20211005063723 | 1 + db/schema_migrations/20211005083015 | 1 + db/schema_migrations/20211005092428 | 1 + db/schema_migrations/20211005093558 | 1 + db/schema_migrations/20211005100112 | 1 + db/schema_migrations/20211006060254 | 1 + db/schema_migrations/20211006060436 | 1 + db/schema_migrations/20211006103122 | 1 + db/schema_migrations/20211006122010 | 1 + db/schema_migrations/20211006145004 | 1 + db/schema_migrations/20211006174114 | 1 + db/schema_migrations/20211007093340 | 1 + db/schema_migrations/20211007113136 | 1 + db/schema_migrations/20211007155221 | 1 + db/schema_migrations/20211008181451 | 1 + db/schema_migrations/20211008182954 | 1 + db/schema_migrations/20211011152701 | 1 + db/schema_migrations/20211012091822 | 1 + db/schema_migrations/20211012155931 | 1 + db/structure.sql | 393 +- doc/.vale/gitlab/Acronyms.yml | 12 + doc/.vale/gitlab/UnclearAntecedent.yml | 6 +- doc/.vale/vale-json.tmpl | 58 + doc/README.md | 9 - doc/administration/audit_events.md | 2 - doc/administration/auth/README.md | 8 - doc/administration/auth/index.md | 4 +- .../auth/ldap/google_secure_ldap.md | 2 +- doc/administration/auth/ldap/index.md | 123 +- .../auth/ldap/ldap-troubleshooting.md | 28 +- doc/administration/auth/oidc.md | 3 +- doc/administration/auth/smartcard.md | 2 +- doc/administration/clusters/kas.md | 2 +- doc/administration/configure.md | 36 +- doc/administration/environment_variables.md | 1 + .../external_pipeline_validation.md | 3 +- doc/administration/feature_flags.md | 7 +- doc/administration/file_hooks.md | 20 +- .../geo/disaster_recovery/planned_failover.md | 14 +- .../runbooks/planned_failover_multi_node.md | 3 + .../runbooks/planned_failover_single_node.md | 3 + .../geo/replication/datatypes.md | 10 +- .../geo/replication/geo_validation_tests.md | 7 + .../geo/replication/multiple_servers.md | 2 +- .../geo/replication/object_storage.md | 2 +- .../geo/replication/security_review.md | 2 +- .../geo/replication/troubleshooting.md | 19 +- .../replication/version_specific_updates.md | 40 +- doc/administration/get_started.md | 6 +- doc/administration/gitaly/faq.md | 2 +- doc/administration/gitaly/index.md | 159 +- doc/administration/gitaly/praefect.md | 137 +- doc/administration/gitaly/troubleshooting.md | 13 +- doc/administration/index.md | 2 +- doc/administration/instance_limits.md | 37 +- doc/administration/instance_review.md | 2 +- doc/administration/integration/terminal.md | 6 +- .../invalidate_markdown_cache.md | 4 +- doc/administration/job_artifacts.md | 4 +- doc/administration/job_logs.md | 4 +- doc/administration/lfs/index.md | 9 +- doc/administration/logs.md | 10 +- doc/administration/maintenance_mode/index.md | 12 +- .../performance/img/performance_bar_v14_0.png | Bin 13115 -> 0 bytes .../performance/img/performance_bar_v14_4.png | Bin 0 -> 21858 bytes .../monitoring/performance/performance_bar.md | 8 +- .../monitoring/prometheus/gitlab_metrics.md | 11 +- .../monitoring/prometheus/puma_exporter.md | 27 + doc/administration/nfs.md | 46 +- .../operations/fast_ssh_key_lookup.md | 14 +- .../operations/moving_repositories.md | 2 +- .../operations/ssh_certificates.md | 7 +- .../package_information/defaults.md | 76 +- .../package_information/deprecated_os.md | 2 +- .../package_information/deprecation_policy.md | 6 +- .../package_information/index.md | 32 +- .../package_information/licensing.md | 2 +- .../package_information/omnibus_packages.md | 2 +- .../postgresql_versions.md | 2 +- .../package_information/signed_packages.md | 4 +- .../packages/container_registry.md | 18 + .../packages/dependency_proxy.md | 8 +- .../img/gitlab-registry-architecture.png | Bin 31003 -> 9598 bytes doc/administration/packages/index.md | 6 +- doc/administration/pages/index.md | 72 +- .../postgresql/replication_and_failover.md | 96 +- doc/administration/raketasks/check.md | 19 +- doc/administration/raketasks/maintenance.md | 10 +- doc/administration/read_only_gitlab.md | 2 +- .../redis/replication_and_failover.md | 6 + doc/administration/redis/standalone.md | 3 +- .../reference_architectures/10k_users.md | 511 +- .../reference_architectures/1k_users.md | 11 + .../reference_architectures/25k_users.md | 527 +- .../reference_architectures/2k_users.md | 14 +- .../reference_architectures/3k_users.md | 28 +- .../reference_architectures/50k_users.md | 536 +- .../reference_architectures/5k_users.md | 28 +- doc/administration/reply_by_email.md | 2 + .../repository_storage_paths.md | 9 +- doc/administration/sidekiq.md | 13 + doc/administration/smime_signing_email.md | 8 +- doc/administration/timezone.md | 20 +- doc/administration/troubleshooting/debug.md | 2 +- .../gitlab_rails_cheat_sheet.md | 76 +- .../img/database-query-dialog_v14_3.png | Bin 0 -> 72494 bytes ...ing-a-session-cookie-for-request_v14_3.png | Bin 0 -> 113452 bytes ...ste-request-id-into-progress-bar_v14_3.png | Bin 0 -> 6495 bytes ...-request-selector-drop-down-menu_v14_3.png | Bin 0 -> 30026 bytes .../img/view-pg-details_v14_3.png | Bin 0 -> 6656 bytes .../troubleshooting/linux_cheat_sheet.md | 2 +- doc/administration/troubleshooting/ssl.md | 4 +- .../troubleshooting/tracing_correlation_id.md | 66 + doc/administration/user_settings.md | 62 +- doc/api/README.md | 9 - doc/api/access_requests.md | 3 - doc/api/api_resources.md | 3 +- doc/api/applications.md | 4 +- doc/api/commits.md | 13 +- doc/api/container_registry.md | 4 +- doc/api/dependencies.md | 2 +- doc/api/deploy_tokens.md | 2 +- doc/api/dora/metrics.md | 4 +- doc/api/dora4_project_analytics.md | 4 +- doc/api/environments.md | 14 +- doc/api/error_tracking.md | 2 +- doc/api/events.md | 8 - doc/api/experiments.md | 2 +- doc/api/freeze_periods.md | 4 +- doc/api/graphql/reference/index.md | 332 +- doc/api/group_clusters.md | 2 +- doc/api/group_import_export.md | 8 +- doc/api/group_repository_storage_moves.md | 2 +- doc/api/groups.md | 2 +- doc/api/instance_clusters.md | 8 +- doc/api/integrations.md | 1566 +++ doc/api/issues.md | 107 + doc/api/members.md | 9 +- doc/api/merge_request_approvals.md | 43 +- doc/api/oauth2.md | 26 +- doc/api/packages/debian.md | 12 +- doc/api/packages/helm.md | 2 +- doc/api/pages.md | 2 +- doc/api/pages_domains.md | 2 +- doc/api/personal_access_tokens.md | 2 +- doc/api/pipeline_schedules.md | 4 +- doc/api/plan_limits.md | 2 +- doc/api/project_level_variables.md | 83 +- doc/api/project_relations_export.md | 111 + doc/api/project_repository_storage_moves.md | 2 +- doc/api/project_statistics.md | 8 +- doc/api/projects.md | 48 +- doc/api/releases/index.md | 2 + doc/api/remote_mirrors.md | 12 +- doc/api/repositories.md | 14 +- doc/api/repository_files.md | 8 +- doc/api/resource_groups.md | 70 + doc/api/runners.md | 29 +- doc/api/search.md | 4 +- doc/api/services.md | 1472 +- doc/api/settings.md | 3 +- doc/api/snippet_repository_storage_moves.md | 2 +- doc/api/usage_data.md | 2 +- doc/api/users.md | 42 +- doc/api/version.md | 2 - doc/api/vulnerability_findings.md | 103 +- .../index.md | 12 +- .../index.md | 2 +- doc/ci/README.md | 9 - doc/ci/chatops/index.md | 4 +- .../bitbucket_integration.md | 2 +- .../github_integration.md | 2 +- doc/ci/ci_cd_for_external_repos/index.md | 2 +- doc/ci/cloud_deployment/index.md | 3 + doc/ci/docker/using_docker_build.md | 2 +- doc/ci/docker/using_docker_images.md | 19 +- doc/ci/docker/using_kaniko.md | 10 +- doc/ci/environments/deployment_safety.md | 2 +- doc/ci/environments/img/environments_list.png | Bin 17379 -> 0 bytes .../img/environments_list_v14_3.png | Bin 0 -> 14885 bytes ...nments_terminal_button_on_index_v13_10.png | Bin 12536 -> 0 bytes ...onments_terminal_button_on_index_v14_3.png | Bin 0 -> 14134 bytes doc/ci/environments/index.md | 73 +- doc/ci/environments/protected_environments.md | 34 +- doc/ci/examples/README.md | 9 - doc/ci/examples/deployment/README.md | 9 - .../deployment/composer-npm-deploy.md | 2 +- doc/ci/examples/deployment/index.md | 10 +- .../end_to_end_testing_webdriverio/index.md | 6 +- doc/ci/examples/index.md | 2 +- .../laravel_with_gitlab_and_envoy/index.md | 4 +- doc/ci/index.md | 12 +- doc/ci/jobs/ci_job_token.md | 102 +- doc/ci/jobs/index.md | 9 +- doc/ci/lint.md | 2 +- doc/ci/merge_request_pipelines/index.md | 9 - .../pipelines_for_merged_results/index.md | 9 - .../merge_trains/index.md | 9 - doc/ci/metrics_reports.md | 2 +- doc/ci/migration/jenkins.md | 4 +- doc/ci/multi_project_pipelines.md | 9 - doc/ci/parent_child_pipelines.md | 9 - .../img/multi_project_pipeline_graph.png | Bin 10671 -> 0 bytes .../multi_project_pipeline_graph_v14_3.png | Bin 0 -> 30119 bytes .../parent_pipeline_graph_expanded_v12_6.png | Bin 96087 -> 0 bytes .../parent_pipeline_graph_expanded_v14_3.png | Bin 0 -> 40079 bytes doc/ci/pipelines/index.md | 6 +- doc/ci/pipelines/job_artifacts.md | 4 +- doc/ci/pipelines/merge_request_pipelines.md | 2 +- doc/ci/pipelines/merge_trains.md | 6 +- doc/ci/pipelines/multi_project_pipelines.md | 8 +- doc/ci/pipelines/parent_child_pipelines.md | 6 +- doc/ci/pipelines/pipeline_efficiency.md | 2 +- .../pipelines/pipelines_for_merged_results.md | 6 +- doc/ci/pipelines/schedules.md | 2 +- doc/ci/pipelines/settings.md | 27 +- doc/ci/quick_start/index.md | 2 +- doc/ci/resource_groups/index.md | 203 + doc/ci/runners/README.md | 9 - .../runners/build_cloud/linux_build_cloud.md | 6 +- .../runners/build_cloud/macos/environment.md | 2 +- .../runners/build_cloud/macos_build_cloud.md | 2 +- .../build_cloud/windows_build_cloud.md | 4 +- doc/ci/secrets/index.md | 4 +- doc/ci/ssh_keys/index.md | 18 +- doc/ci/triggers/README.md | 9 - doc/ci/troubleshooting.md | 11 +- doc/ci/unit_test_reports.md | 10 +- doc/ci/variables/README.md | 9 - doc/ci/variables/index.md | 12 +- doc/ci/variables/predefined_variables.md | 1 + .../variables/where_variables_can_be_used.md | 5 +- doc/ci/yaml/README.md | 9 - doc/ci/yaml/index.md | 152 +- doc/development/README.md | 9 - doc/development/adding_database_indexes.md | 3 +- doc/development/application_slis/index.md | 130 + .../application_slis/rails_request_apdex.md | 234 + doc/development/architecture.md | 2 +- doc/development/cascading_settings.md | 4 +- doc/development/changelog.md | 6 +- doc/development/cicd/index.md | 2 +- doc/development/cicd/templates.md | 6 + doc/development/code_review.md | 3 +- doc/development/contributing/design.md | 129 +- .../contributing/issue_workflow.md | 23 +- .../contributing/merge_request_workflow.md | 8 +- doc/development/dangerbot.md | 2 +- .../database/database_migration_pipeline.md | 2 +- .../database/database_reviewer_guidelines.md | 1 + .../database/efficient_in_operator_queries.md | 61 +- doc/development/database/keyset_pagination.md | 2 +- .../database/multiple_databases.md | 118 +- .../database/transaction_guidelines.md | 58 +- doc/development/database_debugging.md | 4 +- doc/development/database_review.md | 13 +- doc/development/distributed_tracing.md | 2 +- .../documentation/feature_flags.md | 30 +- ...d_docs.png => manual_build_docs_v14_3.png} | Bin doc/development/documentation/index.md | 51 +- doc/development/documentation/redirects.md | 25 +- doc/development/documentation/review_apps.md | 2 +- .../documentation/site_architecture/index.md | 2 +- doc/development/documentation/structure.md | 2 + .../styleguide/img/admin_access_level.png | Bin 0 -> 9821 bytes .../documentation/styleguide/index.md | 141 +- .../documentation/styleguide/word_list.md | 109 +- doc/development/documentation/testing.md | 1 - doc/development/documentation/workflow.md | 24 +- doc/development/ee_features.md | 2 +- doc/development/elasticsearch.md | 10 +- doc/development/experiment_guide/index.md | 2 +- doc/development/fe_guide/accessibility.md | 2 +- doc/development/fe_guide/content_editor.md | 20 +- doc/development/fe_guide/droplab/droplab.md | 281 - .../fe_guide/droplab/plugins/ajax.md | 46 - .../fe_guide/droplab/plugins/filter.md | 55 - .../fe_guide/droplab/plugins/index.md | 14 - .../fe_guide/droplab/plugins/input_setter.md | 72 - doc/development/fe_guide/editor_lite.md | 9 - doc/development/fe_guide/haml.md | 15 +- doc/development/fe_guide/index.md | 8 +- doc/development/fe_guide/logging.md | 86 + doc/development/fe_guide/storybook.md | 16 +- doc/development/fe_guide/style/scss.md | 2 +- .../feature_categorization/index.md | 5 + doc/development/feature_flags/index.md | 2 +- doc/development/file_storage.md | 3 + doc/development/filtering_by_label.md | 22 +- doc/development/go_guide/go_upgrade.md | 187 + doc/development/go_guide/index.md | 74 +- doc/development/graphql_guide/pagination.md | 6 +- doc/development/image_scaling.md | 6 +- doc/development/import_project.md | 8 +- doc/development/index.md | 8 +- doc/development/instrumentation.md | 161 - doc/development/integrations/secure.md | 17 +- doc/development/kubernetes.md | 2 +- .../merge_request_performance_guidelines.md | 10 - doc/development/migration_style_guide.md | 8 +- doc/development/packages.md | 8 +- doc/development/pipelines.md | 687 +- doc/development/profiling.md | 6 +- doc/development/rails_update.md | 110 + doc/development/redis.md | 7 + doc/development/redis/new_redis_instance.md | 132 + doc/development/repository_mirroring.md | 2 +- doc/development/reusing_abstractions.md | 2 + doc/development/ruby_upgrade.md | 275 + doc/development/scalability.md | 2 +- doc/development/service_ping/dictionary.md | 2 +- doc/development/service_ping/implement.md | 8 +- doc/development/service_ping/index.md | 10 +- .../service_ping/metrics_dictionary.md | 4 +- .../service_ping/metrics_lifecycle.md | 5 +- .../service_ping/review_guidelines.md | 2 +- doc/development/sidekiq_style_guide.md | 66 +- doc/development/snowplow/dictionary.md | 44 +- doc/development/snowplow/implementation.md | 543 + doc/development/snowplow/index.md | 727 +- doc/development/snowplow/review_guidelines.md | 12 +- doc/development/snowplow/schemas.md | 166 + doc/development/sql.md | 2 +- doc/development/stage_group_dashboards.md | 12 +- .../testing_guide/best_practices.md | 2 +- doc/development/testing_guide/ci.md | 46 +- .../end_to_end/best_practices.md | 38 +- .../end_to_end/dynamic_element_validation.md | 2 +- .../testing_guide/end_to_end/feature_flags.md | 2 +- .../testing_guide/end_to_end/index.md | 2 +- .../testing_guide/end_to_end/page_objects.md | 2 +- .../end_to_end/rspec_metadata_tests.md | 3 +- ...unning_tests_that_require_special_setup.md | 12 +- doc/development/testing_guide/flaky_tests.md | 4 +- .../testing_guide/frontend_testing.md | 23 +- .../img/review-app-parent-pipeline.png | Bin 0 -> 136842 bytes doc/development/testing_guide/index.md | 2 +- doc/development/testing_guide/review_apps.md | 174 +- doc/development/usage_ping/dictionary.md | 2 +- doc/development/usage_ping/index.md | 9 - .../usage_ping/metrics_dictionary.md | 9 - .../usage_ping/metrics_instrumentation.md | 9 - .../usage_ping/product_intelligence_review.md | 9 - .../usage_ping/review_guidelines.md | 9 - doc/development/windows.md | 6 +- doc/index.md | 4 +- doc/install/aws/eks_clusters_aws.md | 7 +- doc/install/aws/gitlab_hybrid_on_aws.md | 25 +- doc/install/aws/gitlab_sre_for_aws.md | 68 +- doc/install/aws/index.md | 2 +- doc/install/aws/manual_install_aws.md | 26 +- doc/install/azure/index.md | 2 +- doc/install/docker.md | 4 +- doc/install/installation.md | 21 +- doc/install/next_steps.md | 2 +- .../img/add-gitlab-to-project.png | Bin 14619 -> 0 bytes .../img/add-to-project.png | Bin 8901 -> 0 bytes .../img/create-project-ui.png | Bin 9151 -> 0 bytes .../openshift_and_gitlab/img/gitlab-logs.png | Bin 26240 -> 0 bytes .../img/gitlab-overview.png | Bin 42908 -> 0 bytes .../img/gitlab-running.png | Bin 42045 -> 0 bytes .../openshift_and_gitlab/img/gitlab-scale.png | Bin 15002 -> 0 bytes .../img/gitlab-settings.png | Bin 42221 -> 0 bytes .../openshift_and_gitlab/img/no-resources.png | Bin 12465 -> 0 bytes .../img/openshift-infra-project.png | Bin 37117 -> 0 bytes .../openshift_and_gitlab/img/rc-name.png | Bin 20571 -> 0 bytes .../openshift_and_gitlab/img/running-pods.png | Bin 11942 -> 0 bytes .../openshift_and_gitlab/img/web-console.png | Bin 12717 -> 0 bytes doc/install/openshift_and_gitlab/index.md | 507 +- doc/install/requirements.md | 4 +- doc/integration/akismet.md | 3 +- doc/integration/azure.md | 2 +- doc/integration/bitbucket.md | 2 +- doc/integration/cas.md | 2 +- doc/integration/elasticsearch.md | 8 +- doc/integration/github.md | 2 +- doc/integration/gitlab.md | 28 +- doc/integration/gitpod.md | 2 +- doc/integration/google.md | 4 +- doc/integration/index.md | 2 +- doc/integration/jenkins.md | 4 +- doc/integration/jenkins_deprecated.md | 2 +- doc/integration/jira/configure.md | 4 +- doc/integration/jira/connect-app.md | 4 +- doc/integration/jira/development_panel.md | 6 +- doc/integration/jira/index.md | 8 +- doc/integration/jira/issues.md | 2 +- doc/integration/kerberos.md | 5 +- .../mattermost/img/gitlab-mattermost.png | Bin 88419 -> 26656 bytes doc/integration/mattermost/index.md | 5 +- doc/integration/oauth2_generic.md | 2 +- doc/integration/oauth_provider.md | 37 +- doc/integration/omniauth.md | 4 +- doc/integration/recaptcha.md | 2 +- doc/integration/salesforce.md | 2 +- doc/integration/saml.md | 42 +- doc/integration/security_partners/index.md | 6 +- doc/integration/shibboleth.md | 9 - doc/integration/slash_commands.md | 2 +- doc/integration/twitter.md | 2 +- doc/integration/vault.md | 5 +- doc/operations/error_tracking.md | 44 +- doc/operations/feature_flags.md | 19 +- .../img/error_tracking_setting_dsn_v14_4.png | Bin 0 -> 39249 bytes doc/operations/incident_management/alerts.md | 11 +- .../escalation_policies.md | 2 +- .../incident_management/incidents.md | 30 +- .../incident_management/integrations.md | 91 +- .../incident_management/oncall_schedules.md | 4 +- .../incident_management/status_page.md | 6 +- doc/operations/index.md | 6 +- doc/operations/metrics/alerts.md | 6 +- doc/operations/metrics/dashboards/default.md | 2 +- .../metrics/dashboards/panel_types.md | 2 - .../metrics/dashboards/variables.md | 6 +- doc/operations/metrics/dashboards/yaml.md | 14 +- doc/operations/metrics/embed.md | 10 +- doc/operations/metrics/embed_grafana.md | 2 +- doc/operations/metrics/index.md | 2 +- doc/operations/product_analytics.md | 3 +- doc/operations/tracing.md | 4 +- doc/policy/maintenance.md | 2 +- doc/public_access/public_access.md | 20 +- doc/push_rules/push_rules.md | 12 +- doc/raketasks/backup_restore.md | 16 +- doc/raketasks/index.md | 13 +- doc/raketasks/user_management.md | 2 +- doc/security/README.md | 9 - doc/security/asset_proxy.md | 4 +- doc/security/crime_vulnerability.md | 4 +- doc/security/index.md | 4 +- doc/security/information_exclusivity.md | 6 +- ...import_decompressed_archive_size_limits.md | 4 +- doc/security/rack_attack.md | 4 +- doc/security/rate_limits.md | 8 +- doc/security/reset_user_password.md | 6 +- doc/security/ssh_keys_restrictions.md | 2 +- doc/security/token_overview.md | 4 +- doc/security/two_factor_authentication.md | 4 +- doc/security/unlock_user.md | 4 +- doc/security/user_email_confirmation.md | 2 +- doc/security/user_file_uploads.md | 2 +- doc/security/webhooks.md | 6 +- doc/ssh/README.md | 9 - doc/ssh/index.md | 6 +- doc/subscriptions/bronze_starter.md | 18 +- doc/subscriptions/gitlab_com/index.md | 286 +- doc/subscriptions/quarterly_reconciliation.md | 22 +- doc/subscriptions/self_managed/index.md | 5 +- doc/system_hooks/system_hooks.md | 197 +- .../application_development_platform/index.md | 2 +- doc/topics/authentication/index.md | 2 +- doc/topics/autodevops/customize.md | 4 +- doc/topics/autodevops/index.md | 2 +- doc/topics/autodevops/quick_start_guide.md | 14 +- doc/topics/autodevops/requirements.md | 7 +- doc/topics/autodevops/stages.md | 16 +- .../upgrading_auto_deploy_dependencies.md | 2 +- doc/topics/build_your_application.md | 2 +- doc/topics/git/troubleshooting_git.md | 11 +- doc/topics/plan_and_track.md | 40 +- doc/update/deprecations.md | 52 +- doc/update/index.md | 31 +- doc/update/package/downgrade.md | 2 +- doc/update/package/index.md | 199 +- doc/update/plan_your_upgrade.md | 6 +- doc/update/restore_after_failure.md | 46 +- doc/update/upgrading_from_source.md | 31 +- doc/update/zero_downtime.md | 8 +- .../admin_area/analytics/dev_ops_report.md | 2 +- doc/user/admin_area/appearance.md | 2 +- .../admin_area/custom_project_templates.md | 2 +- doc/user/admin_area/geo_nodes.md | 32 +- doc/user/admin_area/index.md | 32 +- doc/user/admin_area/license.md | 8 +- .../admin_area/merge_requests_approvals.md | 5 +- doc/user/admin_area/moderate_users.md | 4 +- .../monitoring/background_migrations.md | 102 +- doc/user/admin_area/review_abuse_reports.md | 6 +- .../settings/continuous_integration.md | 18 +- .../settings/deprecated_api_rate_limits.md | 53 + doc/user/admin_area/settings/email.md | 2 +- .../settings/external_authorization.md | 7 +- .../settings/files_api_rate_limits.md | 56 + doc/user/admin_area/settings/floc.md | 2 +- .../admin_area/settings/gitaly_timeouts.md | 2 +- doc/user/admin_area/settings/help_page.md | 9 +- .../settings/img/suggest_pipeline_banner.png | Bin 0 -> 14544 bytes doc/user/admin_area/settings/index.md | 2 + .../settings/instance_template_repository.md | 2 + .../admin_area/settings/protected_paths.md | 2 +- .../settings/rate_limit_on_issues_creation.md | 2 +- .../admin_area/settings/sidekiq_job_limits.md | 6 +- .../settings/sign_in_restrictions.md | 4 +- .../settings/sign_up_restrictions.md | 12 +- .../admin_area/settings/third_party_offers.md | 2 +- .../admin_area/settings/usage_statistics.md | 6 +- .../settings/user_and_ip_rate_limits.md | 4 + .../visibility_and_access_controls.md | 15 +- doc/user/admin_area/user_cohorts.md | 2 +- doc/user/analytics/ci_cd_analytics.md | 6 +- .../img/project_vsa_filter_v14_3.png | Bin 0 -> 21120 bytes .../img/project_vsa_stage_table_v14_4.png | Bin 0 -> 38783 bytes doc/user/analytics/index.md | 2 +- doc/user/analytics/issue_analytics.md | 2 +- doc/user/analytics/merge_request_analytics.md | 2 +- doc/user/analytics/productivity_analytics.md | 4 +- doc/user/analytics/repository_analytics.md | 2 +- doc/user/analytics/value_stream_analytics.md | 47 + .../api_fuzzing/create_har_files.md | 10 +- .../configuration/index.md | 2 +- .../container_scanning/index.md | 51 +- .../coverage_fuzzing/index.md | 25 +- .../application_security/cve_id_request.md | 79 +- .../dast/browser_based.md | 46 +- .../dast/dast_troubleshooting.md | 2 +- doc/user/application_security/dast/index.md | 254 +- .../application_security/dast_api/index.md | 4 +- .../dependency_scanning/analyzers.md | 6 +- .../dependency_scanning/index.md | 47 +- .../img/cve_request_communication.png | Bin 17386 -> 0 bytes .../cve_request_communication_publication.png | Bin 24126 -> 0 bytes .../img/new_cve_request_issue.png | Bin 36847 -> 60569 bytes .../application_security/policies/index.md | 53 +- doc/user/application_security/sast/index.md | 128 +- .../secret_detection/index.md | 21 +- .../vulnerability_report/index.md | 4 + doc/user/asciidoc.md | 21 +- doc/user/award_emojis.md | 9 - doc/user/clusters/agent/ci_cd_tunnel.md | 4 + doc/user/clusters/agent/index.md | 140 +- doc/user/clusters/agent/repository.md | 9 +- doc/user/clusters/applications.md | 2 +- doc/user/clusters/environments.md | 2 +- .../clusters/management_project_template.md | 12 +- .../compliance/compliance_report/index.md | 6 +- .../img/policies_maintainer_add_v13_2.png | Bin 13419 -> 0 bytes .../img/policies_maintainer_add_v14_3.png | Bin 0 -> 49418 bytes .../img/policies_maintainer_edit_v14_2.png | Bin 9843 -> 0 bytes .../img/policies_maintainer_edit_v14_3.png | Bin 0 -> 25383 bytes .../compliance/license_compliance/index.md | 11 +- doc/user/gitlab_com/index.md | 4 +- doc/user/group/clusters/index.md | 19 +- .../group/contribution_analytics/index.md | 11 +- doc/user/group/custom_project_templates.md | 6 + doc/user/group/devops_adoption/index.md | 8 + .../epics/img/epic_view_roadmap_v12_9.png | Bin 105562 -> 94195 bytes .../group/import/img/import_panel_v14_1.png | Bin 42789 -> 17447 bytes .../import/img/new_group_navigation_v13_8.png | Bin 39500 -> 8644 bytes doc/user/group/import/index.md | 27 +- doc/user/group/index.md | 50 +- .../img/insights_group_configuration.png | Bin 14125 -> 0 bytes doc/user/group/insights/index.md | 33 +- .../group/repositories_analytics/index.md | 34 +- .../group/roadmap/img/roadmap_view_v14_3.png | Bin 67558 -> 56171 bytes doc/user/group/saml_sso/index.md | 50 +- .../group/settings/img/import_panel_v14_1.png | Bin 42789 -> 0 bytes .../img/new_group_navigation_v13_1.png | Bin 39500 -> 0 bytes doc/user/group/settings/import_export.md | 41 +- .../group/subgroups/img/create_new_group.png | Bin 18503 -> 0 bytes .../img/create_subgroup_button_v13_6.png | Bin 16989 -> 0 bytes .../subgroups/img/group_members_13_7.png | Bin 59689 -> 0 bytes .../subgroups/img/group_members_v14_4.png | Bin 0 -> 70033 bytes doc/user/group/subgroups/index.md | 62 +- .../group/value_stream_analytics/index.md | 53 +- doc/user/index.md | 8 +- .../infrastructure/clusters/connect/index.md | 35 +- .../clusters/connect/new_gke_cluster.md | 77 +- doc/user/infrastructure/clusters/index.md | 66 + .../clusters/manage/clusters_health.md | 14 + .../manage}/img/k8s_cluster_monitoring.png | Bin doc/user/infrastructure/index.md | 2 +- doc/user/instance/clusters/index.md | 4 +- doc/user/markdown.md | 6 +- .../packages/composer_repository/index.md | 8 +- doc/user/packages/conan_repository/index.md | 7 +- doc/user/packages/container_registry/index.md | 19 +- doc/user/packages/debian_repository/index.md | 5 +- doc/user/packages/dependency_proxy/index.md | 63 +- doc/user/packages/go_proxy/index.md | 6 +- doc/user/packages/helm_repository/index.md | 23 +- doc/user/packages/index.md | 39 +- doc/user/packages/npm_registry/index.md | 22 +- doc/user/packages/nuget_repository/index.md | 8 +- doc/user/packages/rubygems_registry/index.md | 5 +- doc/user/permissions.md | 61 +- doc/user/profile/account/create_accounts.md | 10 +- doc/user/profile/account/delete_account.md | 2 +- .../account/two_factor_authentication.md | 11 +- doc/user/profile/active_sessions.md | 6 +- .../notification_global_settings_v13_12.png | Bin 9268 -> 0 bytes doc/user/profile/index.md | 46 +- doc/user/profile/notifications.md | 262 +- doc/user/project/badges.md | 29 +- doc/user/project/canary_deployments.md | 2 +- doc/user/project/clusters/add_eks_clusters.md | 35 +- .../project/clusters/add_existing_cluster.md | 2 +- doc/user/project/clusters/add_gke_clusters.md | 60 +- doc/user/project/clusters/cluster_access.md | 2 +- doc/user/project/clusters/index.md | 79 +- .../quick_start_guide.md | 2 +- doc/user/project/clusters/runbooks/index.md | 5 +- doc/user/project/clusters/serverless/index.md | 4 +- doc/user/project/deploy_boards.md | 2 +- doc/user/project/deploy_keys/index.md | 90 +- doc/user/project/deploy_tokens/index.md | 23 +- doc/user/project/file_lock.md | 2 +- doc/user/project/import/bitbucket_server.md | 2 +- doc/user/project/import/gitea.md | 55 +- doc/user/project/import/github.md | 2 +- doc/user/project/import/index.md | 2 +- doc/user/project/index.md | 8 +- doc/user/project/integrations/asana.md | 6 +- doc/user/project/integrations/github.md | 2 +- .../project/integrations/img/slack_setup.png | Bin 65156 -> 23401 bytes .../img/unify_circuit_configuration.png | Bin 85910 -> 0 bytes .../project/integrations/img/webhook_logs.png | Bin 38687 -> 29101 bytes .../integrations/img/webhook_testing.png | Bin 55578 -> 96374 bytes .../integrations/img/zentao_product_id.png | Bin 40486 -> 0 bytes .../integrations/mattermost_slash_commands.md | 2 +- doc/user/project/integrations/overview.md | 24 +- .../project/integrations/pivotal_tracker.md | 2 +- doc/user/project/integrations/prometheus.md | 2 +- .../prometheus_library/kubernetes.md | 2 +- .../prometheus_library/nginx_ingress.md | 4 +- .../integrations/slack_slash_commands.md | 2 - .../project/integrations/unify_circuit.md | 33 +- .../project/integrations/webhook_events.md | 1669 +++ doc/user/project/integrations/webhooks.md | 1945 +-- doc/user/project/integrations/zentao.md | 40 - doc/user/project/issue_board.md | 16 +- doc/user/project/issues/design_management.md | 111 +- doc/user/project/issues/due_dates.md | 4 +- doc/user/project/issues/managing_issues.md | 2 +- doc/user/project/labels.md | 21 +- .../project_members_filter_direct_v13_9.png | Bin 25485 -> 0 bytes .../project_members_filter_direct_v14_4.png | Bin 0 -> 24945 bytes ...project_members_filter_inherited_v13_9.png | Bin 36770 -> 0 bytes ...project_members_filter_inherited_v14_4.png | Bin 0 -> 33118 bytes .../img/project_members_search_v13_9.png | Bin 24940 -> 0 bytes .../img/project_members_search_v14_4.png | Bin 0 -> 23277 bytes .../img/project_members_sort_v13_9.png | Bin 48520 -> 0 bytes .../img/project_members_sort_v14_4.png | Bin 0 -> 44923 bytes .../members/img/project_members_v13_9.png | Bin 45071 -> 0 bytes .../members/img/project_members_v14_4.png | Bin 0 -> 42356 bytes doc/user/project/members/index.md | 10 +- .../members/share_project_with_groups.md | 4 +- .../project/merge_requests/approvals/rules.md | 4 +- .../merge_requests/approvals/settings.md | 24 +- .../project/merge_requests/confidential.md | 37 +- .../project/merge_requests/getting_started.md | 11 +- doc/user/project/merge_requests/index.md | 9 +- .../project/merge_requests/reviews/index.md | 4 +- .../merge_requests/reviews/suggestions.md | 11 +- .../project/merge_requests/status_checks.md | 2 +- .../test_coverage_visualization.md | 7 +- .../index.md | 24 +- .../ssl_tls_concepts.md | 2 +- doc/user/project/pages/index.md | 71 +- doc/user/project/pages/introduction.md | 6 +- doc/user/project/push_options.md | 2 +- doc/user/project/quick_actions.md | 2 +- doc/user/project/releases/index.md | 2 +- .../project/repository/branches/default.md | 34 +- doc/user/project/repository/branches/index.md | 5 - .../project/repository/forking_workflow.md | 2 +- .../web_editor_new_branch_dropdown_v14_1.png | Bin 24244 -> 12116 bytes ...web_editor_new_branch_from_issue_v14_1.png | Bin 24768 -> 10160 bytes ...eb_editor_new_directory_dropdown_v14_1.png | Bin 21934 -> 11169 bytes .../web_editor_new_file_dropdown_v14_1.png | Bin 21097 -> 10851 bytes ...or_template_dropdown_mit_license_v14_1.png | Bin 41669 -> 31321 bytes .../web_editor_upload_file_dropdown_v14_1.png | Bin 23599 -> 11572 bytes .../repository/mirror/bidirectional.md | 171 + ...y_mirroring_copy_ssh_public_key_button.png | Bin .../img/repository_mirroring_force_update.png | Bin doc/user/project/repository/mirror/index.md | 224 + doc/user/project/repository/mirror/pull.md | 121 + doc/user/project/repository/mirror/push.md | 197 + .../reducing_the_repo_size_using_git.md | 6 + .../repository/repository_mirroring.md | 636 +- doc/user/project/requirements/index.md | 12 +- doc/user/project/settings/import_export.md | 42 +- doc/user/project/settings/index.md | 72 +- doc/user/project/web_ide/index.md | 16 +- doc/user/project/wiki/index.md | 18 +- doc/user/project/working_with_projects.md | 12 +- doc/user/reserved_names.md | 4 +- doc/user/shortcuts.md | 8 +- doc/user/todos.md | 4 - doc/user/usage_quotas.md | 32 +- doc/user/workspace/index.md | 27 +- .../migration/create_table_migration.rb | 4 +- haml_lint/inline_javascript.rb | 6 +- jest.config.base.js | 5 +- jest_resolver.js | 17 + lib/api/api.rb | 25 +- lib/api/base.rb | 17 +- lib/api/bulk_imports.rb | 2 +- lib/api/ci/helpers/runner.rb | 8 +- lib/api/ci/resource_groups.rb | 52 + lib/api/ci/runners.rb | 30 +- lib/api/composer_packages.rb | 4 +- lib/api/container_repositories.rb | 2 + lib/api/entities/basic_project_details.rb | 4 +- .../ci/reset_registration_token_result.rb | 11 - lib/api/entities/ci/reset_token_result.rb | 11 + lib/api/entities/ci/resource_group.rb | 11 + .../entities/clusters/agent_authorization.rb | 2 +- lib/api/entities/environment_basic.rb | 2 +- lib/api/entities/feature_flag.rb | 4 +- .../feature_flag/detailed_legacy_scope.rb | 11 - lib/api/entities/feature_flag/legacy_scope.rb | 16 - lib/api/entities/group_detail.rb | 4 +- lib/api/entities/issuable_entity.rb | 2 +- lib/api/entities/namespace_basic.rb | 2 +- lib/api/entities/project.rb | 4 +- lib/api/entities/user.rb | 9 +- lib/api/error_tracking.rb | 63 - lib/api/error_tracking/client_keys.rb | 50 + lib/api/error_tracking/collector.rb | 135 + lib/api/error_tracking/project_settings.rb | 63 + lib/api/error_tracking_client_keys.rb | 50 - lib/api/error_tracking_collector.rb | 135 - lib/api/group_container_repositories.rb | 1 + lib/api/group_export.rb | 2 - lib/api/groups.rb | 2 +- lib/api/helm_packages.rb | 7 +- lib/api/helpers.rb | 15 +- lib/api/helpers/common_helpers.rb | 2 +- lib/api/helpers/container_registry_helpers.rb | 15 + lib/api/helpers/integrations_helpers.rb | 4 +- lib/api/integrations.rb | 178 + lib/api/internal/base.rb | 2 +- lib/api/internal/kubernetes.rb | 19 - lib/api/issues.rb | 39 +- lib/api/maven_packages.rb | 3 +- lib/api/merge_requests.rb | 3 + lib/api/notes.rb | 3 +- lib/api/project_container_repositories.rb | 2 + lib/api/project_export.rb | 48 +- lib/api/project_import.rb | 1 - lib/api/projects.rb | 7 +- lib/api/projects_relation_builder.rb | 2 + lib/api/repositories.rb | 3 +- lib/api/services.rb | 173 - lib/api/settings.rb | 1 + lib/api/tags.rb | 2 +- lib/api/unleash.rb | 2 +- lib/api/users.rb | 7 +- .../validators/project_portable.rb | 21 + lib/atlassian/jira_connect/asymmetric_jwt.rb | 68 + .../serializers/environment_entity.rb | 12 +- lib/backup/gitaly_backup.rb | 9 +- lib/banzai/filter/front_matter_filter.rb | 2 +- .../references/abstract_reference_filter.rb | 2 +- .../references/milestone_reference_filter.rb | 14 +- .../filter/references/reference_cache.rb | 11 +- lib/banzai/filter/syntax_highlight_filter.rb | 5 +- lib/bulk_imports/clients/graphql.rb | 4 +- lib/bulk_imports/clients/http.rb | 32 +- .../common/extractors/ndjson_extractor.rb | 2 +- .../pipelines/boards_pipeline.rb | 2 +- .../pipelines/labels_pipeline.rb | 2 +- lib/bulk_imports/error.rb | 2 +- lib/bulk_imports/groups/stage.rb | 10 +- lib/bulk_imports/ndjson_pipeline.rb | 6 +- lib/bulk_imports/network_error.rb | 61 + .../projects/graphql/get_repository_query.rb | 37 + .../projects/pipelines/issues_pipeline.rb | 15 + .../projects/pipelines/repository_pipeline.rb | 34 + lib/bulk_imports/projects/stage.rb | 20 +- lib/bulk_imports/stage.rb | 6 +- lib/container_registry/client.rb | 9 + lib/container_registry/tag.rb | 4 +- lib/error_tracking/sentry_client/issue.rb | 3 +- lib/gitlab/access.rb | 6 +- .../stage_events/code_stage_start.rb | 4 + .../issue_deployed_to_production.rb | 4 + .../stage_events/metrics_based_stage_event.rb | 4 + .../stage_events/stage_event.rb | 4 + lib/gitlab/application_context.rb | 5 +- lib/gitlab/application_rate_limiter.rb | 23 +- lib/gitlab/auth/request_authenticator.rb | 25 +- .../fix_first_mentioned_in_commit_at.rb | 99 + ...finding_uuid_for_vulnerability_feedback.rb | 2 +- ...opulate_status_column_of_security_scans.rb | 13 + ...ulate_topics_total_projects_count_cache.rb | 29 + .../cache/ci/project_pipeline_status.rb | 4 +- lib/gitlab/cache/import/caching.rb | 4 +- lib/gitlab/chat/command.rb | 3 +- lib/gitlab/checks/matching_merge_request.rb | 32 +- lib/gitlab/ci/badge/coverage/report.rb | 5 +- lib/gitlab/ci/badge/coverage/template.rb | 40 +- lib/gitlab/ci/build/auto_retry.rb | 3 +- lib/gitlab/ci/config/external/mapper.rb | 3 - lib/gitlab/ci/config/external/rules.rb | 16 + .../ci/pipeline/chain/validate/external.rb | 3 +- lib/gitlab/ci/pipeline/metrics.rb | 15 - lib/gitlab/ci/pipeline/seed/build.rb | 11 +- lib/gitlab/ci/reports/security/flag.rb | 2 +- .../vulnerability_reports_comparer.rb | 2 + lib/gitlab/ci/status/build/failed.rb | 3 +- .../DAST-Default-Branch-Deploy.gitlab-ci.yml | 2 +- .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 2 +- .../ci/templates/Jobs/SAST.gitlab-ci.yml | 1 + lib/gitlab/ci/templates/npm.gitlab-ci.yml | 2 +- lib/gitlab/ci/trace.rb | 52 +- lib/gitlab/ci/trace/archive.rb | 77 + lib/gitlab/ci/trace/metrics.rb | 23 + lib/gitlab/ci/trace/remote_checksum.rb | 75 + .../content_security_policy/config_loader.rb | 20 + lib/gitlab/database.rb | 33 +- lib/gitlab/database/count.rb | 12 +- lib/gitlab/database/load_balancing.rb | 84 +- .../load_balancing/action_cable_callbacks.rb | 2 +- .../load_balancing/active_record_proxy.rb | 15 - .../database/load_balancing/configuration.rb | 7 + lib/gitlab/database/load_balancing/host.rb | 19 +- .../database/load_balancing/load_balancer.rb | 39 +- .../database/load_balancing/primary_host.rb | 24 +- .../load_balancing/rack_middleware.rb | 48 +- lib/gitlab/database/load_balancing/setup.rb | 61 + .../sidekiq_client_middleware.rb | 30 +- .../sidekiq_server_middleware.rb | 33 +- .../database/load_balancing/sticking.rb | 120 +- .../background_migration_helpers.rb | 2 +- .../database/migrations/instrumentation.rb | 6 +- .../observers/migration_observer.rb | 5 +- .../migrations/observers/query_details.rb | 2 +- .../migrations/observers/query_log.rb | 2 +- lib/gitlab/database/migrations/runner.rb | 92 + lib/gitlab/database/partitioning.rb | 4 + .../detached_partition_dropper.rb | 38 +- .../multi_database_partition_dropper.rb | 35 + lib/gitlab/database/shared_model.rb | 1 + lib/gitlab/diff/file.rb | 2 +- lib/gitlab/doctor/secrets.rb | 2 +- .../handler/create_merge_request_handler.rb | 4 +- .../email/hook/smime_signature_interceptor.rb | 2 +- .../message/in_product_marketing/base.rb | 4 +- .../message/in_product_marketing/helper.rb | 3 +- .../message/in_product_marketing/trial.rb | 2 +- lib/gitlab/email/smime/certificate.rb | 58 - lib/gitlab/endpoint_attributes.rb | 48 + lib/gitlab/endpoint_attributes/config.rb | 81 + lib/gitlab/error_tracking/detailed_error.rb | 1 + lib/gitlab/experimentation.rb | 4 - lib/gitlab/feature_categories.rb | 38 + .../form_builders/gitlab_ui_form_builder.rb | 60 +- lib/gitlab/git/keep_around.rb | 2 +- lib/gitlab/git/repository.rb | 4 +- lib/gitlab/gitaly_client/operation_service.rb | 36 +- lib/gitlab/github_import/parallel_importer.rb | 4 + .../github_import/parallel_scheduling.rb | 3 +- .../github_import/representation/diff_note.rb | 22 +- .../diff_notes/suggestion_formatter.rb | 66 + .../github_import/representation/issue.rb | 8 +- .../representation/lfs_object.rb | 9 +- .../github_import/representation/note.rb | 12 +- .../representation/pull_request.rb | 8 +- .../representation/pull_request_review.rb | 11 +- .../github_import/representation/user.rb | 1 - .../github_import/sequential_importer.rb | 29 +- lib/gitlab/gon_helper.rb | 1 + .../grape_logging/loggers/context_logger.rb | 11 +- .../board/issues_connection_extension.rb | 15 + .../graphql/connection_collection_methods.rb | 2 +- .../redis/rate_limiting_check.rb | 35 + lib/gitlab/health_checks/redis/redis_check.rb | 4 +- .../health_checks/redis/sessions_check.rb | 35 + lib/gitlab/highlight.rb | 4 +- lib/gitlab/i18n.rb | 18 +- lib/gitlab/import/import_failure_service.rb | 12 +- lib/gitlab/import/metrics.rb | 51 +- .../import_export/attributes_permitter.rb | 2 +- .../import_export/base/relation_factory.rb | 6 +- lib/gitlab/import_export/command_line_util.rb | 26 +- .../import_export/group/relation_factory.rb | 4 + .../json/streaming_serializer.rb | 1 - .../import_export/merge_request_parser.rb | 4 +- .../import_export/project/import_export.yml | 140 +- .../import_export/relation_tree_restorer.rb | 18 +- lib/gitlab/instrumentation/redis.rb | 4 +- lib/gitlab/instrumentation_helper.rb | 35 +- lib/gitlab/issuable_sorter.rb | 2 +- lib/gitlab/kas.rb | 4 + lib/gitlab/mail_room.rb | 3 +- .../mergeability/check_result.rb | 48 + .../mergeability/redis_interface.rb | 23 + .../mergeability/results_store.rb | 25 + .../metrics/dashboard/service_selector.rb | 2 +- lib/gitlab/metrics/exporter/web_exporter.rb | 17 + lib/gitlab/metrics/instrumentation.rb | 194 - lib/gitlab/metrics/rails_slis.rb | 52 + .../metrics/requests_rack_middleware.rb | 38 +- lib/gitlab/metrics/sli.rb | 83 + .../metrics/subscribers/active_record.rb | 12 +- .../metrics/subscribers/load_balancing.rb | 6 +- lib/gitlab/metrics/subscribers/rack_attack.rb | 3 +- lib/gitlab/metrics/web_transaction.rb | 11 +- lib/gitlab/middleware/multipart.rb | 1 + lib/gitlab/middleware/speedscope.rb | 18 +- lib/gitlab/optimistic_locking.rb | 2 +- .../in_operator_optimization/query_builder.rb | 41 +- .../order_values_loader_strategy.rb | 38 + .../strategies/record_loader_strategy.rb | 42 + lib/gitlab/pagination/keyset/iterator.rb | 15 +- lib/gitlab/pagination/keyset/paginator.rb | 4 +- .../keyset/unsupported_scope_order.rb | 19 + lib/gitlab/path_regex.rb | 4 + lib/gitlab/performance_bar/stats.rb | 17 +- .../quick_actions/merge_request_actions.rb | 6 +- lib/gitlab/quick_actions/relate_actions.rb | 14 +- .../rack_attack/instrumented_cache_store.rb | 9 +- lib/gitlab/rack_attack/request.rb | 23 + lib/gitlab/redis/cache.rb | 15 +- lib/gitlab/redis/queues.rb | 9 - lib/gitlab/redis/rate_limiting.rb | 16 + lib/gitlab/redis/sessions.rb | 12 + lib/gitlab/redis/shared_state.rb | 8 - lib/gitlab/redis/wrapper.rb | 39 +- lib/gitlab/regex.rb | 10 +- lib/gitlab/request_endpoints.rb | 41 + lib/gitlab/saas.rb | 8 + lib/gitlab/sidekiq_config.rb | 4 +- lib/gitlab/sidekiq_config/dummy_worker.rb | 19 +- lib/gitlab/sidekiq_enq.rb | 51 + .../sidekiq_logging/structured_logger.rb | 5 +- lib/gitlab/sidekiq_middleware.rb | 17 +- .../sidekiq_middleware/client_metrics.rb | 10 +- .../duplicate_jobs/duplicate_job.rb | 73 +- .../deduplicates_when_scheduling.rb | 7 +- .../strategies/until_executed.rb | 6 +- .../strategies/until_executing.rb | 6 +- .../sidekiq_middleware/metrics_helper.rb | 19 +- .../sidekiq_middleware/server_metrics.rb | 7 +- .../size_limiter/validator.rb | 12 +- .../sidekiq_middleware/worker_context.rb | 6 + .../worker_context/client.rb | 15 +- .../worker_context/server.rb | 2 +- lib/gitlab/sidekiq_versioning.rb | 18 +- lib/gitlab/sidekiq_versioning/manager.rb | 14 - lib/gitlab/stack_prof.rb | 12 +- lib/gitlab/subscription_portal.rb | 30 +- lib/gitlab/template/gitlab_ci_yml_template.rb | 6 +- lib/gitlab/throttle.rb | 2 +- lib/gitlab/tracking/docs/helper.rb | 67 - lib/gitlab/tracking/docs/renderer.rb | 32 - .../tracking/docs/templates/default.md.haml | 35 - lib/gitlab/tracking/standard_context.rb | 10 +- lib/gitlab/usage/metric_definition.rb | 7 +- .../active_user_count_metric.rb | 15 + ...sociating_milestones_to_releases_metric.rb | 18 + lib/gitlab/usage_data.rb | 66 +- .../ci_template_unique_counter.rb | 28 +- .../guest_package_events.yml | 34 - .../known_events/ci_templates.yml | 50 +- .../known_events/common.yml | 4 - .../known_events/epic_board_events.yml | 3 - .../known_events/importer_events.yml | 17 + lib/gitlab/utils/delegator_override.rb | 48 + lib/gitlab/utils/delegator_override/error.rb | 23 + .../utils/delegator_override/validator.rb | 105 + lib/gitlab/verify/uploads.rb | 2 +- lib/gitlab/view/presenter/base.rb | 14 +- lib/gitlab/view/presenter/delegated.rb | 11 + lib/gitlab/with_feature_category.rb | 50 - lib/gitlab/workhorse.rb | 15 +- lib/gitlab/x509/certificate.rb | 56 + lib/peek/views/active_record.rb | 8 +- lib/quality/seeders/issues.rb | 3 +- lib/sidebars/groups/menus/scope_menu.rb | 6 +- .../projects/menus/deployments_menu.rb | 2 +- .../projects/menus/infrastructure_menu.rb | 17 + lib/sidebars/projects/menus/scope_menu.rb | 6 +- lib/system_check/app/git_version_check.rb | 2 +- lib/tasks/frontend.rake | 23 + lib/tasks/gitlab/assets.rake | 2 + lib/tasks/gitlab/db.rake | 35 +- lib/tasks/gitlab/packages/composer.rake | 20 - lib/tasks/gitlab/snowplow.rake | 11 - lib/tasks/gitlab/usage_data.rake | 26 +- lib/tasks/import.rake | 13 +- lib/tasks/lint.rake | 8 + lib/tasks/rubocop.rake | 3 +- locale/am_ET/gitlab.po | 1759 ++- locale/ar_SA/gitlab.po | 1799 ++- locale/as_IN/gitlab.po | 1757 ++- locale/az_AZ/gitlab.po | 1757 ++- locale/ba_RU/gitlab.po | 1744 ++- locale/bg/gitlab.po | 1757 ++- locale/bn_BD/gitlab.po | 1757 ++- locale/bn_IN/gitlab.po | 1757 ++- locale/br_FR/gitlab.po | 1788 ++- locale/bs_BA/gitlab.po | 1962 ++- locale/ca_ES/gitlab.po | 1757 ++- locale/cs_CZ/gitlab.po | 1783 ++- locale/cy_GB/gitlab.po | 1799 ++- locale/da_DK/gitlab.po | 8857 ++++++------ locale/de/gitlab.po | 1993 ++- locale/el_GR/gitlab.po | 1757 ++- locale/eo/gitlab.po | 1757 ++- locale/es/gitlab.po | 1895 ++- locale/et_EE/gitlab.po | 1757 ++- locale/fa_IR/gitlab.po | 1757 ++- locale/fi_FI/gitlab.po | 1757 ++- locale/fil_PH/gitlab.po | 1757 ++- locale/fr/gitlab.po | 1775 ++- locale/gitlab.pot | 1624 ++- locale/gl_ES/gitlab.po | 1761 ++- locale/he_IL/gitlab.po | 1783 ++- locale/hi_IN/gitlab.po | 1757 ++- locale/hr_HR/gitlab.po | 1770 ++- locale/hu_HU/gitlab.po | 1757 ++- locale/hy_AM/gitlab.po | 1757 ++- locale/id_ID/gitlab.po | 1744 ++- locale/ig_NG/gitlab.po | 1744 ++- locale/is_IS/gitlab.po | 1757 ++- locale/it/gitlab.po | 1763 ++- locale/ja/gitlab.po | 1810 ++- locale/ka_GE/gitlab.po | 1757 ++- locale/kab/gitlab.po | 1757 ++- locale/ko/gitlab.po | 1766 ++- locale/ku_TR/gitlab.po | 1757 ++- locale/ky_KG/gitlab.po | 1757 ++- locale/lt_LT/gitlab.po | 1783 ++- locale/mk_MK/gitlab.po | 1757 ++- locale/mn_MN/gitlab.po | 1757 ++- locale/nb_NO/gitlab.po | 6073 +++++---- locale/nl_NL/gitlab.po | 1759 ++- locale/pa_IN/gitlab.po | 1757 ++- locale/pl_PL/gitlab.po | 1827 ++- locale/pt_BR/gitlab.po | 2833 ++-- locale/pt_PT/gitlab.po | 1759 ++- locale/ro_RO/gitlab.po | 3394 +++-- locale/ru/gitlab.po | 1823 ++- locale/si_LK/gitlab.po | 1757 ++- locale/sk_SK/gitlab.po | 1783 ++- locale/sl_SI/gitlab.po | 1783 ++- locale/sq_AL/gitlab.po | 1757 ++- locale/sr_CS/gitlab.po | 1770 ++- locale/sr_SP/gitlab.po | 1770 ++- locale/sv_SE/gitlab.po | 1757 ++- locale/sw_KE/gitlab.po | 1757 ++- locale/ta_IN/gitlab.po | 1757 ++- locale/tr_TR/gitlab.po | 1781 ++- locale/uk/gitlab.po | 2111 ++- locale/ur_PK/gitlab.po | 1757 ++- locale/uz_UZ/gitlab.po | 1757 ++- locale/vi_VN/gitlab.po | 1744 ++- locale/zh_CN/gitlab.po | 2680 ++-- locale/zh_HK/gitlab.po | 1748 ++- locale/zh_TW/gitlab.po | 1746 ++- package.json | 44 +- qa/Gemfile | 8 +- qa/Gemfile.lock | 54 +- qa/chemlab-library-gitlab.gemspec | 4 +- qa/lib/gitlab.rb | 11 + qa/lib/gitlab/page/admin/dashboard.rb | 15 + qa/lib/gitlab/page/admin/dashboard.stub.rb | 81 + qa/lib/gitlab/page/admin/subscription.rb | 13 + qa/lib/gitlab/page/admin/subscription.stub.rb | 33 + .../page/group/settings/usage_quota.stub.rb | 227 + .../page/group/settings/usage_quotas.rb | 27 + qa/lib/gitlab/page/main/login.rb | 18 +- qa/lib/gitlab/page/main/login.stub.rb | 82 + qa/lib/gitlab/page/main/sign_up.rb | 36 + qa/lib/gitlab/page/main/sign_up.stub.rb | 203 + qa/lib/gitlab/page/subscriptions/new.rb | 7 +- qa/qa/page/component/snippet.rb | 11 + .../component/web_ide/web_terminal_panel.rb | 63 + qa/qa/page/group/bulk_import.rb | 7 +- qa/qa/page/group/dependency_proxy.rb | 11 +- .../page/group/settings/package_registries.rb | 19 +- qa/qa/page/merge_request/new.rb | 7 + qa/qa/page/merge_request/show.rb | 32 +- qa/qa/page/profile/two_factor_auth.rb | 5 + qa/qa/page/project/artifact/show.rb | 6 +- qa/qa/page/project/import/repo_by_url.rb | 16 +- qa/qa/page/project/new.rb | 12 +- qa/qa/page/project/packages/show.rb | 2 +- qa/qa/page/project/registry/show.rb | 5 + .../page/project/secure/configuration_form.rb | 12 + qa/qa/page/project/web_ide/edit.rb | 3 +- qa/qa/resource/api_fabricator.rb | 34 +- qa/qa/resource/base.rb | 27 +- qa/qa/resource/fork.rb | 7 + qa/qa/resource/group_badge.rb | 73 + qa/qa/resource/group_base.rb | 48 + qa/qa/resource/merge_request_from_fork.rb | 13 +- qa/qa/resource/personal_access_token.rb | 8 +- qa/qa/resource/project.rb | 54 +- .../resource/project_imported_from_github.rb | 4 +- qa/qa/resource/project_snippet.rb | 2 + qa/qa/resource/snippet.rb | 6 + qa/qa/resource/user.rb | 28 +- qa/qa/runtime/allure_report.rb | 32 +- qa/qa/runtime/api/client.rb | 65 +- qa/qa/service/praefect_manager.rb | 126 +- qa/qa/service/shellout.rb | 2 +- .../api/1_manage/bulk_import_group_spec.rb | 43 +- .../api/1_manage/bulk_import_project_spec.rb | 79 + .../1_manage/import_large_github_repo_spec.rb | 18 +- .../automatic_failover_and_recovery_spec.rb | 26 +- .../gitaly/backend_node_recovery_spec.rb | 8 +- .../project_archive_compare_spec.rb | 3 +- .../1_manage/group/bulk_import_group_spec.rb | 4 +- .../1_manage/login/2fa_recovery_spec.rb | 1 + .../1_manage/login/2fa_ssh_recovery_spec.rb | 1 + .../1_manage/login/log_in_with_2fa_spec.rb | 1 + .../1_manage/project/create_project_spec.rb | 5 +- .../merge_merge_request_from_fork_spec.rb | 27 +- .../revert/reverting_merge_request_spec.rb | 8 +- .../suggestions/batch_suggestion_spec.rb | 4 +- .../snippet/create_personal_snippet_spec.rb | 20 +- ...rsonal_snippet_with_multiple_files_spec.rb | 24 +- .../snippet/create_project_snippet_spec.rb | 16 +- ...roject_snippet_with_multiple_files_spec.rb | 16 +- .../3_create/web_ide/web_terminal_spec.rb | 84 + .../5_package/dependency_proxy_spec.rb | 4 +- .../5_package/helm_registry_spec.rb | 150 + .../5_package/maven_gradle_repository_spec.rb | 60 +- .../kubernetes/kubernetes_integration_spec.rb | 2 +- qa/qa/support/api.rb | 110 +- .../formatters/test_stats_formatter.rb | 22 +- qa/qa/support/retrier.rb | 22 +- qa/qa/tools/delete_subgroups.rb | 28 +- qa/spec/spec_helper.rb | 1 + qa/spec/specs/allure_report_spec.rb | 6 +- .../formatters/test_stats_formatter_spec.rb | 12 +- .../packages_registry_shared_context.rb | 63 + scripts/frontend/start_storybook.sh | 18 + .../startup_css/startup_css_changed.sh | 8 +- scripts/lint-doc.sh | 18 +- scripts/prepare_build.sh | 12 - scripts/rails-update-bisect | 39 + scripts/review_apps/automated_cleanup.rb | 49 +- scripts/rspec_helpers.sh | 14 +- scripts/rubocop-max-files-in-cache-check | 27 + scripts/static-analysis | 5 +- scripts/utils.sh | 34 +- scripts/verify-tff-mapping | 8 +- spec/config/grape_entity_patch_spec.rb | 21 - .../admin/instance_review_controller_spec.rb | 6 +- .../serverless/domains_controller_spec.rb | 370 - .../admin/topics/avatars_controller_spec.rb | 20 + .../admin/topics_controller_spec.rb | 131 + .../application_controller_spec.rb | 12 +- .../boards/issues_controller_spec.rb | 2 +- spec/controllers/concerns/group_tree_spec.rb | 126 +- .../dashboard/milestones_controller_spec.rb | 7 +- spec/controllers/every_controller_spec.rb | 19 +- spec/controllers/graphql_controller_spec.rb | 8 + ...cy_proxy_for_containers_controller_spec.rb | 176 +- .../registry/repositories_controller_spec.rb | 25 + spec/controllers/help_controller_spec.rb | 8 - .../import/bulk_imports_controller_spec.rb | 100 +- .../app_descriptor_controller_spec.rb | 15 +- .../jira_connect/events_controller_spec.rb | 165 +- spec/controllers/metrics_controller_spec.rb | 6 + .../two_factor_auths_controller_spec.rb | 6 - spec/controllers/profiles_controller_spec.rb | 5 +- .../alerting/notifications_controller_spec.rb | 120 +- .../projects/branches_controller_spec.rb | 22 +- .../projects/compare_controller_spec.rb | 2 +- .../designs/resized_image_controller_spec.rb | 2 +- .../projects/issues_controller_spec.rb | 59 +- .../merge_requests_controller_spec.rb | 13 +- .../pipeline_schedules_controller_spec.rb | 2 +- .../projects/raw_controller_spec.rb | 2 +- .../registry/repositories_controller_spec.rb | 13 + .../projects/tags_controller_spec.rb | 19 + .../projects/usage_quotas_controller_spec.rb | 20 + spec/controllers/projects_controller_spec.rb | 85 +- .../registrations_controller_spec.rb | 16 + .../repositories/git_http_controller_spec.rb | 25 + spec/controllers/search_controller_spec.rb | 12 +- spec/controllers/uploads_controller_spec.rb | 40 + spec/db/schema_spec.rb | 6 +- ...ew_project_sast_enabled_experiment_spec.rb | 15 + spec/factories/bulk_import.rb | 1 + spec/factories/ci/pending_builds.rb | 1 + spec/factories/ci/pipelines.rb | 4 + spec/factories/ci/runner_projects.rb | 9 +- spec/factories/ci/runners.rb | 14 +- spec/factories/dependency_proxy.rb | 12 +- .../dependency_proxy/group_settings.rb | 9 + .../image_ttl_group_policies.rb | 4 + spec/factories/design_management/versions.rb | 2 +- spec/factories/groups.rb | 16 +- spec/factories/integration_data.rb | 8 - spec/factories/integrations.rb | 20 - spec/factories/namespaces.rb | 2 + .../namespaces/project_namespaces.rb | 3 +- spec/factories/namespaces/user_namespaces.rb | 8 + spec/factories/packages.rb | 365 - .../{build_info.rb => build_infos.rb} | 0 .../packages/composer/cache_files.rb | 20 + spec/factories/packages/composer/metadata.rb | 10 + .../factories/packages/conan/file_metadata.rb | 20 + spec/factories/packages/conan/metadata.rb | 9 + spec/factories/packages/dependencies.rb | 12 + spec/factories/packages/dependency_links.rb | 20 + .../packages/maven/maven_metadata.rb | 11 + .../nuget/dependency_link_metadata.rb | 8 + spec/factories/packages/nuget/metadata.rb | 11 + .../{package_file.rb => package_files.rb} | 0 spec/factories/packages/package_tags.rb | 8 + spec/factories/packages/packages.rb | 252 + spec/factories/packages/pypi/metadata.rb | 8 + spec/factories/pages_domains.rb | 12 + .../project_error_tracking_settings.rb | 1 + spec/factories/usage_data.rb | 14 +- spec/factories/users.rb | 2 + spec/factories_spec.rb | 1 + spec/features/admin/admin_appearance_spec.rb | 4 + spec/features/admin/admin_builds_spec.rb | 141 - spec/features/admin/admin_hook_logs_spec.rb | 4 +- spec/features/admin/admin_jobs_spec.rb | 141 + spec/features/admin/admin_mode/login_spec.rb | 2 +- spec/features/admin/admin_projects_spec.rb | 2 +- .../admin/admin_serverless_domains_spec.rb | 89 - spec/features/admin/admin_settings_spec.rb | 66 +- spec/features/boards/new_issue_spec.rb | 22 +- .../reload_boards_on_browser_back_spec.rb | 4 +- spec/features/boards/sidebar_labels_spec.rb | 50 +- .../clusters/cluster_detail_page_spec.rb | 2 +- spec/features/cycle_analytics_spec.rb | 59 +- spec/features/dashboard/activity_spec.rb | 6 +- .../dashboard/issuables_counter_spec.rb | 2 +- spec/features/groups/board_spec.rb | 2 +- .../groups/container_registry_spec.rb | 12 + .../dependency_proxy_for_containers_spec.rb | 108 + spec/features/groups/dependency_proxy_spec.rb | 50 +- .../import_export/connect_instance_spec.rb | 34 +- .../import_export/migration_history_spec.rb | 30 + .../groups/members/manage_groups_spec.rb | 11 +- ...r_adds_member_with_expiration_date_spec.rb | 15 +- spec/features/groups/milestone_spec.rb | 8 +- spec/features/groups/packages_spec.rb | 4 + spec/features/issues/related_issues_spec.rb | 98 +- spec/features/markdown/copy_as_gfm_spec.rb | 9 + spec/features/markdown/markdown_spec.rb | 8 +- .../user_merges_immediately_spec.rb | 2 +- .../user_resolves_conflicts_spec.rb | 19 +- .../user_sees_deployment_widget_spec.rb | 32 +- .../user_sees_merge_widget_spec.rb | 12 +- .../user_sees_suggest_pipeline_spec.rb | 11 +- .../user_selects_branches_for_new_mr_spec.rb | 2 +- .../user_suggests_changes_on_diff_spec.rb | 10 +- spec/features/profiles/password_spec.rb | 10 +- .../profiles/two_factor_auths_spec.rb | 4 +- .../profiles/user_edit_profile_spec.rb | 52 +- .../features/projects/badges/coverage_spec.rb | 129 +- .../projects/badges/pipeline_badge_spec.rb | 2 +- spec/features/projects/ci/lint_spec.rb | 2 +- .../projects/container_registry_spec.rb | 12 + .../environments/environments_spec.rb | 5 +- .../files/user_creates_directory_spec.rb | 2 + .../projects/files/user_uploads_files_spec.rb | 14 +- .../projects/infrastructure_registry_spec.rb | 6 +- .../projects/jobs/user_browses_jobs_spec.rb | 282 +- spec/features/projects/jobs_spec.rb | 8 +- .../members/groups_with_access_list_spec.rb | 11 +- .../projects/members/invite_group_spec.rb | 7 +- ...r_adds_member_with_expiration_date_spec.rb | 18 +- spec/features/projects/navbar_spec.rb | 1 + spec/features/projects/new_project_spec.rb | 8 +- spec/features/projects/packages_spec.rb | 4 + .../settings/monitor_settings_spec.rb | 35 +- .../settings/webhooks_settings_spec.rb | 4 +- .../projects/show/user_uploads_files_spec.rb | 22 +- .../projects/user_creates_project_spec.rb | 23 + .../security/project/internal_access_spec.rb | 1 + .../security/project/private_access_spec.rb | 1 + .../security/project/public_access_spec.rb | 1 + .../notes_on_personal_snippets_spec.rb | 4 +- spec/features/users/login_spec.rb | 18 +- spec/features/users/show_spec.rb | 19 +- .../finders/ci/commit_statuses_finder_spec.rb | 6 +- ...pipelines_for_merge_request_finder_spec.rb | 176 +- spec/finders/clusters/agents_finder_spec.rb | 41 + .../error_tracking/errors_finder_spec.rb | 15 +- spec/finders/issues_finder_spec.rb | 26 + spec/finders/members_finder_spec.rb | 76 +- .../packages/group_packages_finder_spec.rb | 13 + .../effective_access_level_finder_spec.rb | 20 +- spec/finders/projects/topics_finder_spec.rb | 45 + spec/finders/tags_finder_spec.rb | 79 +- .../fixtures/api/schemas/entities/member.json | 6 +- .../api/schemas/external_validation.json | 3 +- .../graphql/packages/package_details.json | 10 +- .../schemas/public_api/v4/environment.json | 7 +- .../v4/{service.json => integration.json} | 0 .../schemas/public_api/v4/integrations.json | 4 + .../api/schemas/public_api/v4/services.json | 4 - .../gitlab/import_export/complex/project.json | 96 +- .../import_export/complex/tree/project.json | 11 +- .../complex/tree/project/boards.ndjson | 2 +- .../lib/gitlab/performance_bar/peek_data.json | 87 +- spec/fixtures/markdown.md.erb | 9 + spec/fixtures/ssl/letsencrypt_expired_x3.pem | 98 + spec/frontend/.eslintrc.yml | 8 +- spec/frontend/__helpers__/fixtures.js | 5 + spec/frontend/__helpers__/flush_promises.js | 3 + .../projects_token_selector_spec.js | 5 +- .../add_context_commits_modal_spec.js | 4 +- .../components/review_tab_container_spec.js | 4 +- .../store/mutations_spec.js | 4 +- .../components/signup_form_spec.js | 122 - .../users/components/actions/actions_spec.js | 12 +- .../delete_user_modal_spec.js.snap | 4 +- .../modals/delete_user_modal_spec.js | 24 +- .../__snapshots__/alerts_form_spec.js.snap | 2 +- .../projects_dropdown_filter_spec.js | 139 +- spec/frontend/analytics/shared/utils_spec.js | 156 +- .../components/manage_two_factor_form_spec.js | 2 +- .../blob/file_template_mediator_spec.js | 53 + .../board_add_new_column_trigger_spec.js | 59 + spec/frontend/boards/stores/actions_spec.js | 69 +- .../clusters/agents/components/show_spec.js | 195 + .../agents/components/token_table_spec.js | 135 + .../remove_cluster_confirmation_spec.js.snap | 18 +- .../components/agent_empty_state_spec.js | 77 + .../components/agent_table_spec.js | 117 + .../clusters_list/components/agents_spec.js | 246 + .../available_agents_dropwdown_spec.js | 129 + .../components/install_agent_modal_spec.js | 190 + .../clusters_list/components/mock_data.js | 12 + spec/frontend/clusters_list/mocks/apollo.js | 45 + spec/frontend/clusters_list/stubs.js | 14 + spec/frontend/comment_type_toggle_spec.js | 169 - .../commit_pipeline_status_component_spec.js | 4 +- .../commit/pipelines/pipelines_table_spec.js | 4 +- .../toolbar_link_button_spec.js.snap | 9 +- .../components/top_toolbar_spec.js | 1 + .../components/wrappers/details_spec.js | 40 + .../components/wrappers/frontmatter_spec.js | 43 + .../extensions/color_chip_spec.js | 33 + .../extensions/details_content_spec.js | 76 + .../content_editor/extensions/details_spec.js | 92 + .../extensions/math_inline_spec.js | 42 + .../extensions/table_of_contents_spec.js | 35 + .../markdown_processing_examples.js | 2 + .../services/markdown_serializer_spec.js | 107 + spec/frontend/cycle_analytics/base_spec.js | 8 +- spec/frontend/cycle_analytics/mock_data.js | 36 +- .../cycle_analytics/store/actions_spec.js | 37 +- .../cycle_analytics/store/getters_spec.js | 27 +- .../cycle_analytics/store/mutations_spec.js | 29 +- spec/frontend/cycle_analytics/utils_spec.js | 16 - spec/frontend/deploy_freeze/helpers.js | 5 +- .../deploy_keys/components/action_btn_spec.js | 2 +- .../deploy_keys/components/app_spec.js | 2 +- .../deploy_keys/components/key_spec.js | 3 +- .../deploy_keys/components/keys_panel_spec.js | 2 +- .../deprecated_jquery_dropdown_spec.js | 3 + .../design_version_dropdown_spec.js.snap | 4 +- .../utils/cache_update_spec.js | 10 +- .../utils/error_messages_spec.js | 31 +- spec/frontend/diffs/components/app_spec.js | 22 +- .../diffs/components/commit_item_spec.js | 4 +- .../diffs/components/compare_versions_spec.js | 6 +- .../diffs/mock_data/diff_with_commit.js | 5 - spec/frontend/diffs/store/actions_spec.js | 4 +- .../diffs/utils/tree_worker_utils_spec.js | 313 + spec/frontend/diffs/utils/workers_spec.js | 309 - .../source_editor_ci_schema_ext_spec.js | 6 +- .../environments/environment_delete_spec.js | 13 +- .../environment_monitoring_spec.js | 22 +- .../environments/environment_pin_spec.js | 10 +- .../environments/environment_rollback_spec.js | 14 +- .../environment_terminal_button_spec.js | 19 +- .../components/error_details_spec.js | 47 + .../components/app_spec.js | 43 +- spec/frontend/experimentation/utils_spec.js | 14 - .../components/edit_feature_flag_spec.js | 16 +- spec/frontend/filterable_list_spec.js | 2 + .../filtered_search/dropdown_user_spec.js | 5 +- .../droplab/constants_spec.js | 2 +- .../droplab/drop_down_spec.js | 6 +- .../droplab/hook_spec.js | 6 +- .../droplab/plugins/ajax_filter_spec.js | 2 +- .../droplab/plugins/ajax_spec.js | 2 +- .../droplab/plugins/input_setter_spec.js | 2 +- .../visual_token_value_spec.js | 8 +- spec/frontend/fixtures/abuse_reports.rb | 4 - spec/frontend/fixtures/admin_users.rb | 4 - spec/frontend/fixtures/analytics.rb | 10 +- spec/frontend/fixtures/api_markdown.rb | 6 +- spec/frontend/fixtures/api_markdown.yml | 83 + spec/frontend/fixtures/api_merge_requests.rb | 4 - spec/frontend/fixtures/api_projects.rb | 4 - .../frontend/fixtures/application_settings.rb | 4 - spec/frontend/fixtures/autocomplete.rb | 4 - .../frontend/fixtures/autocomplete_sources.rb | 4 - spec/frontend/fixtures/blob.rb | 4 - spec/frontend/fixtures/branches.rb | 5 - spec/frontend/fixtures/clusters.rb | 4 - spec/frontend/fixtures/commit.rb | 5 - spec/frontend/fixtures/deploy_keys.rb | 4 - spec/frontend/fixtures/freeze_period.rb | 4 - spec/frontend/fixtures/groups.rb | 4 - spec/frontend/fixtures/issues.rb | 4 - spec/frontend/fixtures/jobs.rb | 4 - spec/frontend/fixtures/labels.rb | 4 - spec/frontend/fixtures/merge_requests.rb | 4 - .../frontend/fixtures/merge_requests_diffs.rb | 4 - spec/frontend/fixtures/metrics_dashboard.rb | 4 - spec/frontend/fixtures/pipeline_schedules.rb | 4 - spec/frontend/fixtures/pipelines.rb | 4 - spec/frontend/fixtures/projects.rb | 8 - spec/frontend/fixtures/projects_json.rb | 4 - spec/frontend/fixtures/prometheus_service.rb | 4 - spec/frontend/fixtures/raw.rb | 8 - spec/frontend/fixtures/releases.rb | 8 - spec/frontend/fixtures/runner.rb | 4 - spec/frontend/fixtures/search.rb | 4 - spec/frontend/fixtures/services.rb | 4 - spec/frontend/fixtures/sessions.rb | 4 - spec/frontend/fixtures/snippet.rb | 4 - spec/frontend/fixtures/startup_css.rb | 8 +- .../fixtures/static/oauth_remember_me.html | 33 +- spec/frontend/fixtures/tags.rb | 4 - spec/frontend/fixtures/timezones.rb | 4 - spec/frontend/fixtures/todos.rb | 4 - spec/frontend/fixtures/u2f.rb | 4 - spec/frontend/fixtures/webauthn.rb | 4 - spec/frontend/gfm_auto_complete_spec.js | 4 +- .../header_search/components/app_spec.js | 32 +- .../header_search_autocomplete_items_spec.js | 108 + spec/frontend/header_search/mock_data.js | 69 + .../header_search/store/actions_spec.js | 34 +- .../header_search/store/getters_spec.js | 40 + .../header_search/store/mutations_spec.js | 29 +- .../ide/components/jobs/detail_spec.js | 24 +- .../ide/stores/modules/commit/getters_spec.js | 2 +- spec/frontend/ide/stores/utils_spec.js | 2 +- .../components/pagination_bar_spec.js | 92 + .../edit/components/integration_form_spec.js | 2 +- .../components/jira_issues_fields_spec.js | 3 +- .../edit/components/override_dropdown_spec.js | 2 +- .../integration_settings_form_spec.js | 12 +- .../components/integration_overrides_spec.js | 29 +- .../components/invite_members_modal_spec.js | 4 +- .../invite_members/mock_data/api_responses.js | 14 +- .../utils/response_message_parser_spec.js | 28 +- .../components/csv_export_modal_spec.js | 5 - .../components/csv_import_modal_spec.js | 7 +- .../components/add_issuable_form_spec.js | 7 +- spec/frontend/issuable_form_spec.js | 19 +- .../components/issuable_item_spec.js | 15 +- .../components/item_spec.js | 63 +- .../components/issues_list_app_spec.js | 36 +- .../components/new_issue_dropdown_spec.js | 131 + spec/frontend/issues_list/mock_data.js | 34 + .../jira_import_form_spec.js.snap | 32 +- spec/frontend/jobs/components/job_app_spec.js | 35 +- .../components/job_container_item_spec.js | 2 +- .../components/job_log_controllers_spec.js | 14 +- .../log/collapsible_section_spec.js | 8 +- spec/frontend/jobs/components/log/log_spec.js | 12 +- .../jobs/mixins/delayed_job_mixin_spec.js | 2 +- spec/frontend/jobs/store/actions_spec.js | 112 +- spec/frontend/jobs/store/getters_spec.js | 8 +- spec/frontend/jobs/store/mutations_spec.js | 80 +- spec/frontend/jobs/store/utils_spec.js | 12 +- ...work_errors_during_navigation_link_spec.js | 155 + .../logger/__snapshots__/hello_spec.js.snap | 21 +- spec/frontend/lib/logger/hello_spec.js | 28 +- spec/frontend/lib/utils/color_utils_spec.js | 18 + .../datetime/date_format_utility_spec.js | 15 + .../lib/utils/is_navigating_away_spec.js | 23 + spec/frontend/lib/utils/text_utility_spec.js | 21 + spec/frontend/lib/utils/url_utility_spec.js | 35 + .../remove_member_button_spec.js | 2 +- .../user_action_buttons_spec.js | 5 +- .../components/modals/leave_modal_spec.js | 29 +- .../modals/remove_member_modal_spec.js | 33 +- .../components/table/expires_at_spec.js | 86 - .../components/table/members_table_spec.js | 88 +- spec/frontend/members/mock_data.js | 7 +- .../dashboard_template_spec.js.snap | 2 +- spec/frontend/monitoring/fixture_data.js | 6 +- spec/frontend/namespace_select_spec.js | 65 - spec/frontend/notebook/cells/code_spec.js | 5 +- spec/frontend/notebook/cells/markdown_spec.js | 9 +- .../notebook/cells/output/index_spec.js | 7 +- spec/frontend/notebook/index_spec.js | 9 +- .../components/comment_type_dropdown_spec.js | 14 +- .../notes/components/diff_with_note_spec.js | 9 +- .../notes/components/note_form_spec.js | 10 + .../components/noteable_discussion_spec.js | 7 +- .../notes/components/noteable_note_spec.js | 21 + spec/frontend/notes/stores/getters_spec.js | 5 +- spec/frontend/oauth_remember_me_spec.js | 2 +- .../conan_installation_spec.js.snap | 36 - .../__snapshots__/dependency_row_spec.js.snap | 34 - .../maven_installation_spec.js.snap | 112 - .../npm_installation_spec.js.snap | 36 - .../nuget_installation_spec.js.snap | 36 - .../__snapshots__/package_title_spec.js.snap | 168 - .../pypi_installation_spec.js.snap | 45 - .../components/additional_metadata_spec.js | 119 - .../packages/details/components/app_spec.js | 385 - .../components/composer_installation_spec.js | 133 - .../components/conan_installation_spec.js | 72 - .../details/components/dependency_row_spec.js | 62 - .../components/installation_title_spec.js | 58 - .../components/installations_commands_spec.js | 61 - .../components/maven_installation_spec.js | 184 - .../components/npm_installation_spec.js | 123 - .../components/nuget_installation_spec.js | 79 - .../details/components/package_title_spec.js | 189 - .../components/pypi_installation_spec.js | 72 - .../packages/details/store/actions_spec.js | 156 - .../packages/details/store/getters_spec.js | 295 - .../components/package_list_row_spec.js | 14 +- .../dependency_proxy/app_spec.js | 173 + .../dependency_proxy/mock_data.js | 21 + .../__snapshots__/file_sha_spec.js.snap | 0 .../terraform_installation_spec.js.snap | 0 .../components/details/components/app_spec.js | 321 + .../components}/details_title_spec.js | 2 +- .../details/components/file_sha_spec.js | 2 +- .../details/components/package_files_spec.js | 4 +- .../components/package_history_spec.js | 6 +- .../terraform_installation_spec.js | 2 +- .../components}/details/mock_data.js | 0 .../components/details/store/actions_spec.js | 156 + .../components/details/store/getters_spec.js | 40 + .../details/store/mutations_spec.js | 6 +- .../npm_installation_spec.js.snap | 9 + .../components/details/metadata/nuget_spec.js | 29 +- .../details/npm_installation_spec.js | 62 + .../details/package_history_spec.js | 2 +- .../list/__snapshots__/app_spec.js.snap | 12 + .../package_list_row_spec.js.snap | 122 + .../packages_list_app_spec.js.snap | 68 - .../__snapshots__/publish_method_spec.js.snap | 42 + .../components/list/app_spec.js | 154 + .../components/list/package_list_row_spec.js | 156 + .../components/list/packages_list_app_spec.js | 273 - .../components/list/packages_search_spec.js | 197 +- .../components/list/publish_method_spec.js | 47 + .../package_registry/mock_data.js | 34 + .../dependency_proxy_settings_spec.js | 189 + .../components/duplicates_settings_spec.js | 14 + .../components/group_settings_app_spec.js | 336 +- .../group/components/package_settings_spec.js | 277 + .../group/graphl/utils/cache_update_spec.js | 66 +- .../graphl/utils/optimistic_responses_spec.js | 23 +- .../settings/group/mock_data.js | 50 +- .../settings/__snapshots__/utils_spec.js.snap | 6 + .../__snapshots__/settings_form_spec.js.snap | 2 +- .../components/namespace_select_spec.js | 93 + .../bulk_imports_history_app_spec.js | 175 + .../password_prompt_modal_spec.js | 92 + .../__snapshots__/code_coverage_spec.js.snap | 2 +- .../pages/projects/new/components/app_spec.js | 44 - .../components/new_project_url_select_spec.js | 122 - .../components/timezone_dropdown_spec.js | 78 +- .../new/preserve_url_fragment_spec.js | 2 +- .../components/editor/text_editor_spec.js | 5 - .../components/header/pipeline_status_spec.js | 51 +- .../header/pipline_editor_mini_graph_spec.js | 42 + .../ui/pipeline_editor_empty_state_spec.js | 21 - spec/frontend/pipeline_editor/mock_data.js | 53 +- .../pipeline_editor_app_spec.js | 35 +- .../pipeline_editor_home_spec.js | 9 - .../pipeline_mini_graph_spec.js | 2 +- .../pipieline_stop_modal_spec.js | 27 + .../frontend/pipelines/graph/job_item_spec.js | 60 + .../pipelines/pipeline_multi_actions_spec.js | 2 +- .../pipelines/pipelines_artifacts_spec.js | 3 +- spec/frontend/pipelines/pipelines_spec.js | 2 +- .../pipelines/pipelines_table_spec.js | 6 +- .../test_reports/stores/actions_spec.js | 3 +- .../test_reports/stores/getters_spec.js | 4 +- .../test_reports/stores/mutations_spec.js | 4 +- .../test_reports/test_reports_spec.js | 4 +- .../test_reports/test_suite_table_spec.js | 4 +- .../test_reports/test_summary_spec.js | 4 +- .../test_reports/test_summary_table_spec.js | 4 +- .../projects/new/components/app_spec.js | 44 + .../new_project_push_tip_popover_spec.js | 2 +- .../components/new_project_url_select_spec.js | 235 + .../projects/projects_filterable_list_spec.js | 2 + .../components/new_access_dropdown_spec.js | 345 + .../ref/components/ref_selector_spec.js | 11 +- .../details_page/tags_list_row_spec.js | 72 +- .../registry/explorer/pages/list_spec.js | 7 +- .../components/related_merge_requests_spec.js | 6 +- .../releases/components/app_edit_new_spec.js | 3 +- .../app_index_apollo_client_spec.js | 4 +- .../releases/components/app_show_spec.js | 6 +- .../components/asset_links_form_spec.js | 4 +- .../components/evidence_block_spec.js | 4 +- .../components/release_block_assets_spec.js | 4 +- .../components/release_block_footer_spec.js | 4 +- .../components/release_block_header_spec.js | 4 +- .../release_block_milestone_info_spec.js | 4 +- .../releases/components/release_block_spec.js | 4 +- .../stores/modules/detail/actions_spec.js | 6 +- .../stores/modules/detail/mutations_spec.js | 4 +- .../stores/modules/list/actions_spec.js | 6 +- .../stores/modules/list/mutations_spec.js | 8 +- spec/frontend/releases/util_spec.js | 14 +- .../components/codequality_issue_body_spec.js | 6 + .../grouped_codequality_reports_app_spec.js | 10 +- .../codequality_report/store/getters_spec.js | 6 +- .../store/utils/codequality_parser_spec.js | 12 + .../reports/components/report_section_spec.js | 12 +- .../grouped_test_reports_app_spec.js | 18 +- .../repository/commits_service_spec.js | 84 + .../components/blob_content_viewer_spec.js | 109 +- .../repository/components/blob_edit_spec.js | 6 +- .../blob_viewers/video_viewer_spec.js | 22 + .../repository/components/breadcrumbs_spec.js | 38 +- .../components/fork_suggestion_spec.js | 44 + .../components/new_directory_modal_spec.js | 203 + .../table/__snapshots__/row_spec.js.snap | 75 +- .../repository/components/table/index_spec.js | 33 +- .../repository/components/table/row_spec.js | 34 +- .../components/tree_content_spec.js | 22 +- spec/frontend/repository/router_spec.js | 28 + .../admin_runners/admin_runners_app_spec.js | 22 +- .../cells/runner_actions_cell_spec.js | 14 +- .../components/cells/runner_name_cell_spec.js | 42 - .../cells/runner_summary_cell_spec.js | 51 + .../runner/components/runner_list_spec.js | 17 +- .../runner_state_locked_badge_spec.js | 45 + .../runner_state_paused_badge_spec.js | 45 + .../components/runner_type_badge_spec.js | 23 +- .../components/runner_type_help_spec.js | 32 - .../group_runners/group_runners_app_spec.js | 28 +- spec/frontend/runner/mock_data.js | 22 +- .../components/search_settings_spec.js | 35 +- spec/frontend/sidebar/assignees_spec.js | 8 +- .../uncollapsed_reviewer_list_spec.js | 20 +- spec/frontend/sidebar/sidebar_labels_spec.js | 4 +- spec/frontend/sidebar/todo_spec.js | 2 +- .../frontend/snippets/components/show_spec.js | 18 +- .../components/snippet_header_spec.js | 41 +- spec/frontend/test_setup.js | 3 +- .../tracking/get_standard_context_spec.js | 29 +- .../tracking/tracking_initialization_spec.js | 140 + spec/frontend/tracking/tracking_spec.js | 597 + spec/frontend/tracking/utils_spec.js | 99 + spec/frontend/tracking_spec.js | 693 - spec/frontend/users_select/test_helper.js | 5 +- .../approvals/approvals_summary_spec.js | 8 +- .../components/extensions/actions_spec.js | 35 + .../components/extensions/index_spec.js | 7 +- .../components/extensions/status_icon_spec.js | 36 + .../mr_widget_pipeline_container_spec.js | 25 +- .../states/mr_widget_commits_header_spec.js | 4 + .../states/mr_widget_ready_to_merge_spec.js | 10 + .../components/states/mr_widget_wip_spec.js | 9 +- spec/frontend/vue_mr_widget/mock_data.js | 2 +- .../mr_widget_how_to_merge_modal_spec.js | 18 +- .../vue_mr_widget/mr_widget_options_spec.js | 51 + .../stores/mr_widget_store_spec.js | 2 +- spec/frontend/vue_mr_widget/test_extension.js | 37 + .../__snapshots__/clone_dropdown_spec.js.snap | 4 +- .../__snapshots__/split_button_spec.js.snap | 2 +- .../blob_viewers/simple_viewer_spec.js | 39 +- .../color_picker/color_picker_spec.js | 6 +- .../dismissible_feedback_alert_spec.js | 34 +- .../dropdown_keyboard_navigation_spec.js | 141 + .../filtered_search_bar/mock_data.js | 57 +- .../tokens/author_token_spec.js | 2 +- .../tokens/base_token_spec.js | 52 +- .../tokens/branch_token_spec.js | 2 +- .../tokens/emoji_token_spec.js | 2 +- .../tokens/epic_token_spec.js | 97 +- .../tokens/iteration_token_spec.js | 2 +- .../tokens/label_token_spec.js | 2 +- .../tokens/milestone_token_spec.js | 2 +- .../tokens/weight_token_spec.js | 2 +- .../components/issue/issue_assignees_spec.js | 4 - .../markdown/suggestion_diff_header_spec.js | 27 +- .../markdown/suggestion_diff_spec.js | 2 +- .../project_list_item_spec.js | 3 + .../project_selector/project_selector_spec.js | 3 + .../labels_select_vue/store/mutations_spec.js | 12 +- .../dropdown_contents_create_view_spec.js | 51 +- .../dropdown_contents_labels_view_spec.js | 58 +- .../dropdown_contents_spec.js | 144 +- .../labels_select_root_spec.js | 111 +- .../sidebar/labels_select_widget/mock_data.js | 24 +- .../upload_dropzone_spec.js.snap | 11 +- .../user_deletion_obstacles_list_spec.js | 116 + .../user_deletion_obstacles/utils_spec.js | 43 + .../user_popover/user_popover_spec.js | 30 +- .../components/web_ide_link_spec.js | 22 + .../vue_shared/directives/validation_spec.js | 137 +- .../vue_shared/oncall_schedules_list_spec.js | 87 - .../vue_shared/security_reports/mock_data.js | 2 +- .../security_reports_app_spec.js | 12 +- .../security_reports/store/getters_spec.js | 4 +- .../fixture_generators.yml | 5 + .../test_helpers/mock_server/graphql.js | 4 +- .../clusters/agent_tokens/create_spec.rb | 61 + .../clusters/agent_tokens/delete_spec.rb | 52 + .../mutations/clusters/agents/create_spec.rb | 50 + .../mutations/clusters/agents/delete_spec.rb | 51 + .../contacts/create_spec.rb | 101 + .../contacts/update_spec.rb | 75 + .../organizations/create_spec.rb | 11 +- .../organizations/update_spec.rb | 23 +- .../group_settings/update_spec.rb | 55 + spec/graphql/mutations/groups/update_spec.rb | 4 +- spec/graphql/mutations/issues/create_spec.rb | 15 +- .../board_list_issues_resolver_spec.rb | 14 +- .../resolvers/board_list_resolver_spec.rb | 39 + .../clusters/agent_tokens_resolver_spec.rb | 32 + .../clusters/agents_resolver_spec.rb | 77 + .../graphql/resolvers/issues_resolver_spec.rb | 133 +- .../kas/agent_configurations_resolver_spec.rb | 48 + .../kas/agent_connections_resolver_spec.rb | 66 + .../project_pipelines_resolver_spec.rb | 20 +- spec/graphql/types/base_field_spec.rb | 11 + spec/graphql/types/board_list_type_spec.rb | 27 +- spec/graphql/types/ci/pipeline_type_spec.rb | 2 +- spec/graphql/types/ci/runner_type_spec.rb | 2 +- .../types/clusters/agent_token_type_spec.rb | 13 + .../graphql/types/clusters/agent_type_spec.rb | 13 + ..._expiration_policy_older_than_enum_spec.rb | 2 +- .../sentry_detailed_error_type_spec.rb | 1 + spec/graphql/types/issue_type_spec.rb | 2 +- .../kas/agent_configuration_type_spec.rb | 11 + .../types/kas/agent_connection_type_spec.rb | 22 + .../types/kas/agent_metadata_type_spec.rb | 13 + .../packages/nuget/metadatum_type_spec.rb | 6 + .../types/packages/package_type_spec.rb | 2 +- .../types/permission_types/ci/runner_spec.rb | 15 + spec/graphql/types/project_type_spec.rb | 144 +- spec/graphql/types/query_type_spec.rb | 11 + .../application_settings_helper_spec.rb | 32 - spec/helpers/avatars_helper_spec.rb | 14 +- spec/helpers/ci/runners_helper_spec.rb | 13 +- ...ntainer_expiration_policies_helper_spec.rb | 1 + spec/helpers/feature_flags_helper_spec.rb | 23 + spec/helpers/groups_helper_spec.rb | 2 +- spec/helpers/hooks_helper_spec.rb | 23 +- spec/helpers/issuables_helper_spec.rb | 12 +- spec/helpers/issues_helper_spec.rb | 4 +- spec/helpers/one_trust_helper_spec.rb | 48 + spec/helpers/packages_helper_spec.rb | 30 + .../projects/cluster_agents_helper_spec.rb | 21 + spec/helpers/projects_helper_spec.rb | 12 +- .../routing/pseudonymization_helper_spec.rb | 30 +- spec/helpers/search_helper_spec.rb | 4 +- spec/helpers/startupjs_helper_spec.rb | 22 + spec/helpers/tab_helper_spec.rb | 54 + spec/helpers/time_zone_helper_spec.rb | 12 + spec/helpers/user_callouts_helper_spec.rb | 33 + spec/initializers/carrierwave_patch_spec.rb | 23 +- spec/initializers/database_config_spec.rb | 10 +- spec/initializers/lograge_spec.rb | 38 +- spec/initializers/zz_metrics_spec.rb | 20 - spec/lib/api/base_spec.rb | 92 + spec/lib/api/ci/helpers/runner_spec.rb | 16 +- .../clusters/agent_authorization_spec.rb | 35 +- spec/lib/api/entities/user_spec.rb | 15 +- spec/lib/api/every_api_endpoint_spec.rb | 4 +- spec/lib/api/helpers_spec.rb | 12 +- .../validators/project_portable_spec.rb | 33 + .../jira_connect/asymmetric_jwt_spec.rb | 99 + .../serializers/deployment_entity_spec.rb | 10 + spec/lib/backup/gitaly_backup_spec.rb | 40 +- .../banzai/cross_project_reference_spec.rb | 2 +- .../banzai/filter/front_matter_filter_spec.rb | 10 +- .../milestone_reference_filter_spec.rb | 13 + .../filter/references/reference_cache_spec.rb | 39 +- .../filter/syntax_highlight_filter_spec.rb | 8 + .../lib/banzai/pipeline/full_pipeline_spec.rb | 8 +- .../pipeline/pre_process_pipeline_spec.rb | 2 +- spec/lib/bulk_imports/clients/graphql_spec.rb | 2 +- spec/lib/bulk_imports/clients/http_spec.rb | 34 +- .../common/pipelines/boards_pipeline_spec.rb | 98 + .../pipelines/labels_pipeline_spec.rb | 2 +- .../groups/pipelines/boards_pipeline_spec.rb | 49 - spec/lib/bulk_imports/groups/stage_spec.rb | 18 +- spec/lib/bulk_imports/ndjson_pipeline_spec.rb | 16 + spec/lib/bulk_imports/network_error_spec.rb | 72 + .../graphql/get_repository_query_spec.rb | 21 + .../pipelines/issues_pipeline_spec.rb | 168 + .../pipelines/repository_pipeline_spec.rb | 73 + spec/lib/bulk_imports/projects/stage_spec.rb | 16 +- spec/lib/container_registry/client_spec.rb | 94 +- spec/lib/container_registry/tag_spec.rb | 20 + .../sentry_client/issue_spec.rb | 4 + .../stage_events/code_stage_start_spec.rb | 12 + .../stage_events/issue_created_spec.rb | 4 + .../issue_deployed_to_production_spec.rb | 12 + .../issue_first_mentioned_in_commit_spec.rb | 5 + .../stage_events/issue_stage_end_spec.rb | 5 + .../merge_request_created_spec.rb | 4 + ...quest_first_deployed_to_production_spec.rb | 5 + .../merge_request_last_build_finished_spec.rb | 5 + .../merge_request_last_build_started_spec.rb | 5 + .../stage_events/merge_request_merged_spec.rb | 5 + .../stage_events/plan_stage_start_spec.rb | 5 + .../gitlab/application_rate_limiter_spec.rb | 10 +- .../gitlab/auth/request_authenticator_spec.rb | 107 +- .../fix_first_mentioned_in_commit_at_spec.rb | 166 + .../fix_promoted_epics_discussion_ids_spec.rb | 2 +- .../fix_user_namespace_names_spec.rb | 2 +- .../fix_user_project_route_names_spec.rb | 2 +- ...rate_null_private_profile_to_false_spec.rb | 23 - .../migrate_pages_metadata_spec.rb | 2 +- ...late_merge_request_assignees_table_spec.rb | 2 +- ..._topics_total_projects_count_cache_spec.rb | 35 + spec/lib/gitlab/backtrace_cleaner_spec.rb | 3 - spec/lib/gitlab/cache/import/caching_spec.rb | 10 + spec/lib/gitlab/chat/command_spec.rb | 1 + .../checks/matching_merge_request_spec.rb | 41 +- spec/lib/gitlab/ci/build/auto_retry_spec.rb | 1 + spec/lib/gitlab/ci/config/entry/retry_spec.rb | 1 - .../gitlab/ci/config/external/mapper_spec.rb | 22 - .../ci/config/external/processor_spec.rb | 12 + .../gitlab/ci/config/external/rules_spec.rb | 20 +- .../lib/gitlab/ci/pipeline/seed/build_spec.rb | 31 +- .../gitlab/ci/reports/security/flag_spec.rb | 4 +- .../lib/gitlab/ci/templates/templates_spec.rb | 7 - spec/lib/gitlab/ci/trace/archive_spec.rb | 101 + spec/lib/gitlab/ci/trace/metrics_spec.rb | 23 + .../gitlab/ci/trace/remote_checksum_spec.rb | 85 + .../config_loader_spec.rb | 27 +- spec/lib/gitlab/database/bulk_update_spec.rb | 59 +- spec/lib/gitlab/database/connection_spec.rb | 10 +- spec/lib/gitlab/database/consistency_spec.rb | 8 + spec/lib/gitlab/database/count_spec.rb | 44 + .../action_cable_callbacks_spec.rb | 4 +- .../active_record_proxy_spec.rb | 20 - .../load_balancing/configuration_spec.rb | 8 + .../database/load_balancing/host_spec.rb | 8 + .../load_balancing/load_balancer_spec.rb | 67 +- .../load_balancing/primary_host_spec.rb | 52 +- .../load_balancing/rack_middleware_spec.rb | 124 +- .../database/load_balancing/setup_spec.rb | 119 + .../sidekiq_client_middleware_spec.rb | 30 +- .../sidekiq_server_middleware_spec.rb | 87 +- .../database/load_balancing/sticking_spec.rb | 331 +- .../gitlab/database/load_balancing_spec.rb | 219 +- .../loose_foreign_key_helpers_spec.rb | 9 +- .../gitlab/database/migration_helpers_spec.rb | 9 + .../migrations/instrumentation_spec.rb | 19 +- .../observers/query_details_spec.rb | 6 +- .../migrations/observers/query_log_spec.rb | 6 +- .../observers/query_statistics_spec.rb | 2 +- .../total_database_size_change_spec.rb | 2 +- .../gitlab/database/migrations/runner_spec.rb | 109 + .../detached_partition_dropper_spec.rb | 5 +- .../multi_database_partition_dropper_spec.rb | 38 + .../partitioning/partition_manager_spec.rb | 2 +- spec/lib/gitlab/database/partitioning_spec.rb | 18 + .../force_disconnectable_mixin_spec.rb | 2 +- .../schema_migrations/context_spec.rb | 18 +- .../gitlab/database/with_lock_retries_spec.rb | 2 +- spec/lib/gitlab/database_spec.rb | 34 +- spec/lib/gitlab/doctor/secrets_spec.rb | 10 + .../handler/create_issue_handler_spec.rb | 30 + .../handler/service_desk_handler_spec.rb | 9 + .../hook/smime_signature_interceptor_spec.rb | 8 +- spec/lib/gitlab/endpoint_attributes_spec.rb | 133 + .../etag_caching/router/graphql_spec.rb | 2 +- .../etag_caching/router/restful_spec.rb | 2 +- spec/lib/gitlab/feature_categories_spec.rb | 74 + .../gitlab_ui_form_builder_spec.rb | 63 +- spec/lib/gitlab/git/repository_spec.rb | 3 +- .../gitlab/git/wraps_gitaly_errors_spec.rb | 1 + .../gitaly_client/operation_service_spec.rb | 54 +- .../importer/diff_notes_importer_spec.rb | 12 +- .../github_import/parallel_importer_spec.rb | 12 + .../github_import/parallel_scheduling_spec.rb | 6 +- .../representation/diff_note_spec.rb | 139 +- .../diff_notes/suggestion_formatter_spec.rb | 164 + .../representation/issue_spec.rb | 13 + .../representation/lfs_object_spec.rb | 17 + .../github_import/representation/note_spec.rb | 22 +- .../pull_request_review_spec.rb | 17 +- .../representation/pull_request_spec.rb | 12 + .../github_import/sequential_importer_spec.rb | 31 +- .../health_checks/probes/collection_spec.rb | 3 + .../redis/rate_limiting_check_spec.rb | 8 + .../redis/sessions_check_spec.rb | 8 + .../import/import_failure_service_spec.rb | 246 +- spec/lib/gitlab/import/metrics_spec.rb | 108 +- spec/lib/gitlab/import_export/all_models.yml | 8 +- .../attributes_permitter_spec.rb | 52 +- .../import_export/command_line_util_spec.rb | 34 +- .../json/streaming_serializer_spec.rb | 19 +- .../merge_request_parser_spec.rb | 36 +- .../relation_tree_restorer_spec.rb | 40 +- .../snippet_repo_restorer_spec.rb | 3 + spec/lib/gitlab/instrumentation/redis_spec.rb | 4 +- .../lib/gitlab/instrumentation_helper_spec.rb | 105 +- spec/lib/gitlab/kas_spec.rb | 42 +- spec/lib/gitlab/mail_room/mail_room_spec.rb | 3 +- .../mergeability/check_result_spec.rb | 140 + .../mergeability/redis_interface_spec.rb | 29 + .../mergeability/results_store_spec.rb | 29 + .../metrics/exporter/web_exporter_spec.rb | 9 + .../gitlab/metrics/instrumentation_spec.rb | 342 - spec/lib/gitlab/metrics/rails_slis_spec.rb | 58 + .../metrics/requests_rack_middleware_spec.rb | 187 +- spec/lib/gitlab/metrics/sli_spec.rb | 99 + .../metrics/subscribers/active_record_spec.rb | 8 +- .../subscribers/load_balancing_spec.rb | 4 - .../gitlab/metrics/web_transaction_spec.rb | 15 +- spec/lib/gitlab/middleware/go_spec.rb | 2 +- .../middleware/multipart/handler_spec.rb | 1 + spec/lib/gitlab/middleware/speedscope_spec.rb | 52 +- .../query_builder_spec.rb | 28 +- .../order_values_loader_strategy_spec.rb | 34 + .../strategies/record_loader_strategy_spec.rb | 60 + .../gitlab/pagination/keyset/iterator_spec.rb | 34 +- spec/lib/gitlab/path_regex_spec.rb | 21 + spec/lib/gitlab/performance_bar/stats_spec.rb | 16 +- .../lib/gitlab/project_authorizations_spec.rb | 37 + spec/lib/gitlab/rack_attack/request_spec.rb | 31 + spec/lib/gitlab/rate_limit_helpers_spec.rb | 2 +- spec/lib/gitlab/redis/queues_spec.rb | 20 +- spec/lib/gitlab/redis/rate_limiting_spec.rb | 7 + spec/lib/gitlab/redis/sessions_spec.rb | 7 + spec/lib/gitlab/redis/trace_chunks_spec.rb | 50 +- spec/lib/gitlab/regex_spec.rb | 28 +- spec/lib/gitlab/request_endpoints_spec.rb | 24 + .../sidekiq_logging/structured_logger_spec.rb | 135 +- .../sidekiq_middleware/client_metrics_spec.rb | 21 + .../duplicate_jobs/duplicate_job_spec.rb | 20 + .../sidekiq_middleware/memory_killer_spec.rb | 2 +- .../sidekiq_middleware/server_metrics_spec.rb | 114 +- .../size_limiter/validator_spec.rb | 86 +- .../worker_context/client_spec.rb | 61 +- .../worker_context/server_spec.rb | 35 +- spec/lib/gitlab/sidekiq_middleware_spec.rb | 93 +- spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb | 13 +- .../gitlab/sidekiq_versioning/manager_spec.rb | 25 - spec/lib/gitlab/sidekiq_versioning_spec.rb | 6 - .../gitlab/slash_commands/issue_move_spec.rb | 2 +- spec/lib/gitlab/subscription_portal_spec.rb | 93 +- spec/lib/gitlab/tracking/docs/helper_spec.rb | 91 - .../lib/gitlab/tracking/docs/renderer_spec.rb | 23 - .../gitlab/tracking/standard_context_spec.rb | 19 +- spec/lib/gitlab/tracking_spec.rb | 2 +- .../gitlab/usage/metric_definition_spec.rb | 31 + .../active_user_count_metric_spec.rb | 13 + ...ting_milestones_to_releases_metric_spec.rb | 12 + .../ci_template_unique_counter_spec.rb | 123 +- .../hll_redis_counter_spec.rb | 1 + spec/lib/gitlab/usage_data_metrics_spec.rb | 2 +- spec/lib/gitlab/usage_data_spec.rb | 105 +- .../utils/delegator_override/error_spec.rb | 13 + .../delegator_override/validator_spec.rb | 81 + .../gitlab/utils/delegator_override_spec.rb | 97 + spec/lib/gitlab/view/presenter/base_spec.rb | 34 +- spec/lib/gitlab/with_feature_category_spec.rb | 69 - spec/lib/gitlab/workhorse_spec.rb | 44 +- .../{email/smime => x509}/certificate_spec.rb | 2 +- spec/lib/peek/views/active_record_spec.rb | 202 +- spec/lib/rouge/formatters/html_gitlab_spec.rb | 2 +- .../sidebars/groups/menus/scope_menu_spec.rb | 15 + .../projects/menus/scope_menu_spec.rb | 6 + ...152703_migrate_issue_trackers_data_spec.rb | 64 - ..._code_owner_approval_from_projects_spec.rb | 56 - ...4345_add_admin_mode_protected_path_spec.rb | 49 - ...91204114127_delete_legacy_triggers_spec.rb | 23 - ..._columns_and_triggers_for_taggings_spec.rb | 23 + ..._conversion_for_ci_builds_metadata_spec.rb | 23 + ...or_existing_approval_project_rules_spec.rb | 48 + ...up_bigint_conversion_for_ci_builds_spec.rb | 23 + ...e_vulnerabilities_occurrences_uuid_spec.rb | 45 + ...e_vulnerabilities_occurrences_uuid_spec.rb | 30 + ..._int4_columns_for_ci_job_artifacts_spec.rb | 23 + ...t4_column_for_ci_sources_pipelines_spec.rb | 21 + ...082019_drop_int4_column_for_events_spec.rb | 21 + ...nt4_column_for_push_event_payloads_spec.rb | 21 + ..._topics_total_projects_count_cache_spec.rb | 29 + .../add_default_and_free_plans_spec.rb | 34 - ...ovals_user_id_and_merge_request_id_spec.rb | 57 - ...leased_at_column_on_releases_table_spec.rb | 28 - ...ll_operations_feature_flags_active_spec.rb | 52 - ...not_null_constraints_to_timestamps_spec.rb | 57 - .../backport_enterprise_schema_spec.rb | 41 - ...d_local_requests_whitelist_default_spec.rb | 21 - ...ize_defaults_in_project_statistics_spec.rb | 35 - ...p_noteable_id_for_notes_on_commits_spec.rb | 34 - .../cleanup_legacy_artifact_migration_spec.rb | 52 - ...i_cd_settings_merge_trains_enabled_spec.rb | 21 - ...crypt_feature_flags_clients_tokens_spec.rb | 36 - ...attributes_on_application_settings_spec.rb | 58 - ...ueue_reset_merge_status_second_run_spec.rb | 52 - .../enqueue_reset_merge_status_spec.rb | 52 - ..._productivity_analytics_start_date_spec.rb | 39 - spec/migrations/fix_max_pages_size_spec.rb | 19 - spec/migrations/fix_null_type_labels_spec.rb | 36 - ..._pool_repository_source_project_id_spec.rb | 29 - .../fix_wrong_pages_access_level_spec.rb | 99 - .../generate_lets_encrypt_private_key_spec.rb | 14 - .../insert_project_hooks_plan_limits_spec.rb | 67 - ...o_dev_ops_domain_to_cluster_domain_spec.rb | 114 - ...s_to_protected_branches_in_batches_spec.rb | 63 - ...te_discussion_id_on_promoted_epics_spec.rb | 81 - .../migrate_k8s_service_integration_spec.rb | 162 - ...gacy_managed_clusters_to_unmanaged_spec.rb | 55 - ...lusters_with_no_token_to_unmanaged_spec.rb | 59 - ...ature_flags_scopes_target_user_ids_spec.rb | 135 - ...ate_storage_migrator_sidekiq_queue_spec.rb | 43 - .../migrations/move_limits_from_plans_spec.rb | 35 - spec/migrations/nullify_users_role_spec.rb | 33 - ...e_project_statistics_packages_size_spec.rb | 37 - ...pe_on_approval_merge_request_rules_spec.rb | 39 - ...lds_on_name_and_id_parser_features_spec.rb | 28 + ...ove_empty_github_service_templates_spec.rb | 55 - ...tus_from_pending_alert_escalations_spec.rb | 37 + ...time_for_pages_domain_certificates_spec.rb | 48 - .../schedule_pages_metadata_migration_spec.rb | 29 - ...late_merge_request_assignees_table_spec.rb | 47 - ...te_status_column_of_security_scans_spec.rb | 48 + .../schedule_sync_issuables_state_id_spec.rb | 81 - ..._sync_issuables_state_id_where_nil_spec.rb | 57 - .../set_issue_id_for_all_versions_spec.rb | 38 - .../sync_issuables_state_id_spec.rb | 41 - .../migrations/truncate_user_fullname_spec.rb | 23 - .../update_minimum_password_length_spec.rb | 30 - .../cycle_analytics/issue_stage_event_spec.rb | 2 + .../merge_request_stage_event_spec.rb | 2 + spec/models/application_record_spec.rb | 2 +- spec/models/application_setting_spec.rb | 7 + spec/models/bulk_import_spec.rb | 14 + spec/models/bulk_imports/entity_spec.rb | 40 +- .../file_transfer/group_config_spec.rb | 6 +- .../file_transfer/project_config_spec.rb | 48 +- spec/models/bulk_imports/tracker_spec.rb | 3 +- spec/models/ci/bridge_spec.rb | 6 +- spec/models/ci/build_spec.rb | 46 +- spec/models/ci/build_trace_metadata_spec.rb | 29 +- spec/models/ci/pipeline_spec.rb | 155 +- spec/models/ci/processable_spec.rb | 9 +- spec/models/ci/resource_group_spec.rb | 57 + spec/models/ci/runner_spec.rb | 23 +- .../agents/group_authorization_spec.rb | 6 + .../agents/implicit_authorization_spec.rb | 2 +- .../agents/project_authorization_spec.rb | 6 + .../clusters/applications/runner_spec.rb | 3 +- spec/models/commit_spec.rb | 18 +- spec/models/commit_status_spec.rb | 10 + spec/models/concerns/bulk_insert_safe_spec.rb | 46 +- spec/models/concerns/checksummable_spec.rb | 12 +- spec/models/concerns/ci/has_status_spec.rb | 12 + .../vulnerability_finding_helpers_spec.rb | 27 + .../models/customer_relations/contact_spec.rb | 1 + spec/models/dependency_proxy/blob_spec.rb | 5 +- .../image_ttl_group_policy_spec.rb | 9 + spec/models/dependency_proxy/manifest_spec.rb | 5 +- spec/models/deployment_spec.rb | 167 +- spec/models/environment_spec.rb | 66 - spec/models/error_tracking/error_spec.rb | 9 +- .../project_error_tracking_setting_spec.rb | 46 + spec/models/group_spec.rb | 31 +- spec/models/instance_configuration_spec.rb | 21 + spec/models/integration_spec.rb | 1 - spec/models/integrations/open_project_spec.rb | 30 - .../open_project_tracker_data_spec.rb | 19 - spec/models/issue_spec.rb | 31 +- spec/models/legacy_diff_note_spec.rb | 42 + .../loose_foreign_keys/deleted_record_spec.rb | 56 - spec/models/member_spec.rb | 83 +- spec/models/members/project_member_spec.rb | 11 +- spec/models/merge_request_spec.rb | 89 +- .../namespace/traversal_hierarchy_spec.rb | 9 +- spec/models/namespace_setting_spec.rb | 2 + spec/models/namespace_spec.rb | 187 +- spec/models/namespaces/user_namespace_spec.rb | 12 + spec/models/note_spec.rb | 28 + spec/models/operations/feature_flag_spec.rb | 47 +- .../packages/helm/file_metadatum_spec.rb | 4 +- spec/models/packages/package_spec.rb | 2 +- spec/models/pages_domain_spec.rb | 19 +- .../merge_requests_preloader_spec.rb | 42 - spec/models/product_analytics_event_spec.rb | 11 - spec/models/project_feature_usage_spec.rb | 4 +- spec/models/project_spec.rb | 69 +- spec/models/project_statistics_spec.rb | 4 +- spec/models/projects/topic_spec.rb | 79 +- spec/models/protected_branch_spec.rb | 28 +- spec/models/repository_spec.rb | 2 +- spec/models/snippet_repository_spec.rb | 1 + spec/models/upload_spec.rb | 24 + spec/models/user_detail_spec.rb | 1 + spec/models/user_preference_spec.rb | 6 - spec/models/user_spec.rb | 277 +- .../users/credit_card_validation_spec.rb | 18 + spec/policies/clusters/agent_policy_spec.rb | 28 + .../clusters/agent_token_policy_spec.rb | 31 + spec/policies/group_policy_spec.rb | 2 +- spec/policies/namespace_policy_spec.rb | 77 - .../project_namespace_policy_spec.rb | 46 + .../namespaces/user_namespace_policy_spec.rb | 77 + .../clusters/cluster_presenter_spec.rb | 143 - .../commit_status_presenter_spec.rb | 19 + .../group_clusterable_presenter_spec.rb | 6 + .../instance_clusterable_presenter_spec.rb | 6 + .../project_clusterable_presenter_spec.rb | 6 + spec/requests/api/api_spec.rb | 116 +- spec/requests/api/bulk_imports_spec.rb | 9 + spec/requests/api/ci/resource_groups_spec.rb | 95 + .../api/ci/runner/jobs_request_post_spec.rb | 6 +- .../api/ci/runner/runners_delete_spec.rb | 2 +- .../api/ci/runner/runners_post_spec.rb | 6 +- .../api/ci/runner/runners_verify_post_spec.rb | 2 +- .../runners_reset_registration_token_spec.rb | 2 +- spec/requests/api/ci/runners_spec.rb | 98 + spec/requests/api/ci/triggers_spec.rb | 6 +- .../api/container_repositories_spec.rb | 26 + spec/requests/api/deployments_spec.rb | 10 + spec/requests/api/environments_spec.rb | 7 +- .../api/error_tracking/client_keys_spec.rb | 86 + .../api/error_tracking/collector_spec.rb | 148 + .../error_tracking/project_settings_spec.rb | 231 + .../api/error_tracking_client_keys_spec.rb | 86 - .../api/error_tracking_collector_spec.rb | 148 - spec/requests/api/error_tracking_spec.rb | 231 - .../boards/board_list_issues_query_spec.rb | 16 +- .../graphql/boards/board_list_query_spec.rb | 98 + .../graphql/boards/board_lists_query_spec.rb | 6 +- spec/requests/api/graphql/ci/runner_spec.rb | 88 +- spec/requests/api/graphql/ci/runners_spec.rb | 12 +- .../container_repository_details_spec.rb | 2 + .../group/container_repositories_spec.rb | 9 +- .../dependency_proxy_group_setting_spec.rb | 73 +- .../requests/api/graphql/group/issues_spec.rb | 123 + .../runners_registration_token/reset_spec.rb | 2 +- .../agent_tokens/agent_tokens/create_spec.rb | 52 + .../mutations/clusters/agents/create_spec.rb | 42 + .../mutations/clusters/agents/delete_spec.rb | 43 + .../group_settings/update_spec.rb | 65 + .../merge_requests/set_assignees_spec.rb | 2 +- .../api/graphql/namespace/projects_spec.rb | 8 +- .../graphql/project/cluster_agents_spec.rb | 108 + .../project/container_repositories_spec.rb | 13 +- .../api/graphql/project/issues_spec.rb | 125 +- .../project/merge_request/pipelines_spec.rb | 4 +- .../graphql/project/merge_requests_spec.rb | 8 +- .../api/graphql/project/releases_spec.rb | 24 +- spec/requests/api/graphql/users_spec.rb | 12 +- .../api/group_container_repositories_spec.rb | 7 +- spec/requests/api/groups_spec.rb | 38 +- spec/requests/api/helm_packages_spec.rb | 18 +- spec/requests/api/integrations_spec.rb | 363 + spec/requests/api/internal/base_spec.rb | 8 +- spec/requests/api/internal/kubernetes_spec.rb | 90 - spec/requests/api/issues/issues_spec.rb | 38 + .../api/issues/post_projects_issues_spec.rb | 159 +- spec/requests/api/maven_packages_spec.rb | 24 +- spec/requests/api/merge_requests_spec.rb | 12 + spec/requests/api/package_files_spec.rb | 2 +- .../project_container_repositories_spec.rb | 5 + spec/requests/api/project_export_spec.rb | 139 + spec/requests/api/projects_spec.rb | 25 +- spec/requests/api/repositories_spec.rb | 12 + spec/requests/api/services_spec.rb | 361 - spec/requests/api/settings_spec.rb | 5 +- spec/requests/api/users_spec.rb | 27 +- .../registry/repositories_controller_spec.rb | 1 + spec/requests/import/url_controller_spec.rb | 45 + .../cluster_agents_controller_spec.rb | 40 + .../projects/google_cloud_controller_spec.rb | 50 + .../merge_requests_discussions_spec.rb | 12 +- spec/requests/rack_attack_global_spec.rb | 274 +- .../domains_controller_routing_spec.rb | 22 - spec/serializers/member_entity_spec.rb | 26 + .../merge_request_metrics_helper_spec.rb | 69 + ..._request_poll_cached_widget_entity_spec.rb | 2 +- .../merge_request_widget_entity_spec.rb | 64 +- .../update_service_spec.rb | 26 + .../boards/issues/list_service_spec.rb | 21 +- spec/services/bulk_import_service_spec.rb | 69 - .../bulk_imports/create_service_spec.rb | 86 + .../bulk_imports/file_export_service_spec.rb | 37 + .../get_importable_data_service_spec.rb | 46 + .../relation_export_service_spec.rb | 18 + .../bulk_imports/tree_export_service_spec.rb | 35 + .../services/ci/archive_trace_service_spec.rb | 26 + .../create_pipeline_service/include_spec.rb | 22 - .../services/ci/drop_pipeline_service_spec.rb | 3 +- .../ci/pipelines/add_job_service_spec.rb | 13 - .../ci/pipelines/hook_service_spec.rb | 47 + spec/services/ci/play_bridge_service_spec.rb | 12 +- .../ci/process_pipeline_service_spec.rb | 68 +- spec/services/ci/register_job_service_spec.rb | 50 +- ...source_from_resource_group_service_spec.rb | 86 + spec/services/ci/retry_build_service_spec.rb | 13 +- .../ci/retry_pipeline_service_spec.rb | 39 +- .../stuck_builds/drop_pending_service_spec.rb | 201 + .../stuck_builds/drop_running_service_spec.rb | 72 + .../drop_scheduled_service_spec.rb | 53 + .../ci/stuck_builds/drop_service_spec.rb | 284 - .../ci/update_build_state_service_spec.rb | 52 + .../ci/update_pending_build_service_spec.rb | 44 +- .../agent_tokens/create_service_spec.rb | 64 + .../clusters/agents/create_service_spec.rb | 52 + .../clusters/agents/delete_service_spec.rb | 35 + .../concerns/rate_limited_service_spec.rb | 196 + .../cleanup_service_spec.rb | 6 +- .../contacts/create_service_spec.rb | 61 + .../contacts/update_service_spec.rb | 56 + .../organizations/create_service_spec.rb | 10 +- .../organizations/update_service_spec.rb | 4 +- .../auth_token_service_spec.rb | 81 +- .../find_or_create_blob_service_spec.rb | 28 +- .../find_or_create_manifest_service_spec.rb | 32 +- .../group_settings/update_service_spec.rb | 60 + .../older_deployments_drop_service_spec.rb | 2 +- .../deployments/update_service_spec.rb | 8 +- .../list_issues_service_spec.rb | 94 +- .../feature_flags/hook_service_spec.rb | 31 + spec/services/groups/transfer_service_spec.rb | 93 +- spec/services/groups/update_service_spec.rb | 2 +- .../update_shared_runners_service_spec.rb | 8 +- ...lidate_remote_git_endpoint_service_spec.rb | 96 + spec/services/issues/close_service_spec.rb | 14 +- spec/services/issues/create_service_spec.rb | 19 + ...ative_position_rebalancing_service_spec.rb | 15 +- spec/services/issues/reopen_service_spec.rb | 20 +- spec/services/members/create_service_spec.rb | 2 +- spec/services/members/invite_service_spec.rb | 2 +- .../assign_issues_service_spec.rb | 2 +- .../merge_requests/build_service_spec.rb | 2 +- .../mergeability/check_base_service_spec.rb | 40 + .../check_ci_status_service_spec.rb | 57 + .../mergeability/run_checks_service_spec.rb | 104 + .../push_options_handler_service_spec.rb | 2 +- .../notes/quick_actions_service_spec.rb | 2 +- spec/services/notification_service_spec.rb | 2 +- .../composer/create_package_service_spec.rb | 25 - .../debian/process_changes_service_spec.rb | 2 - .../cache_tags_created_at_service_spec.rb | 133 + .../cleanup_tags_service_spec.rb | 615 +- spec/services/projects/create_service_spec.rb | 40 +- .../services/projects/destroy_service_spec.rb | 109 +- .../group_links/update_service_spec.rb | 88 +- spec/services/projects/import_service_spec.rb | 6 + .../projects/move_access_service_spec.rb | 2 +- .../operations/update_service_spec.rb | 8 +- .../projects/participants_service_spec.rb | 186 +- .../projects/transfer_service_spec.rb | 189 +- .../projects/update_pages_service_spec.rb | 16 - spec/services/projects/update_service_spec.rb | 64 +- .../quick_actions/interpret_service_spec.rb | 15 + .../sast_create_service_spec.rb | 23 + .../submit_service_ping_service_spec.rb | 24 + ...ser_project_access_changed_service_spec.rb | 4 +- spec/services/users/activity_service_spec.rb | 4 +- spec/services/users/update_service_spec.rb | 72 +- ...ert_credit_card_validation_service_spec.rb | 36 +- spec/services/web_hook_service_spec.rb | 2 +- spec/spec_helper.rb | 4 + spec/support/before_all_adapter.rb | 14 +- spec/support/capybara.rb | 3 +- .../cross-database-modification-allowlist.yml | 1343 ++ .../support/database/cross-join-allowlist.yml | 151 +- spec/support/database/multiple_databases.rb | 52 + .../prevent_cross_database_modification.rb | 24 +- spec/support/database/prevent_cross_joins.rb | 27 +- spec/support/database_cleaner.rb | 27 +- spec/support/database_load_balancing.rb | 30 +- spec/support/db_cleaner.rb | 75 +- .../helpers/dependency_proxy_helpers.rb | 14 +- spec/support/helpers/feature_flag_helpers.rb | 2 +- .../helpers/javascript_fixtures_helpers.rb | 13 +- .../helpers/navbar_structure_helper.rb | 8 + spec/support/helpers/stub_gitlab_calls.rb | 12 + spec/support/helpers/usage_data_helpers.rb | 12 +- spec/support/matchers/be_request_urgency.rb | 8 + spec/support/matchers/graphql_matchers.rb | 30 +- spec/support/matchers/markdown_matchers.rb | 2 +- spec/support/redis.rb | 16 + spec/support/redis/redis_helpers.rb | 10 + .../redis_new_instance_shared_examples.rb | 55 + spec/support/redis/redis_shared_examples.rb | 28 + .../bulk_imports_requests_shared_context.rb | 52 + .../relation_tree_restorer_shared_context.rb | 2 +- .../structured_logger_shared_context.rb | 20 +- .../server_metrics_shared_context.rb | 5 + .../policies/project_policy_shared_context.rb | 1 + .../ci/stuck_builds_shared_examples.rb | 35 + .../wiki_actions_shared_examples.rb | 2 +- .../container_registry_shared_examples.rb | 9 + .../discussion_comments_shared_example.rb | 30 +- .../project_upload_files_shared_examples.rb | 50 +- .../graphql/connection_shared_examples.rb | 2 +- .../sorted_paginated_query_shared_examples.rb | 18 +- .../lib/gitlab/ci/ci_trace_shared_examples.rb | 22 +- .../cycle_analytics/event_shared_examples.rb | 35 + .../attributes_permitter_shared_examples.rb | 40 + ...ctive_record_subscriber_shared_examples.rb | 36 +- .../stage_event_model_examples.rb | 68 + .../concerns/ttl_expirable_shared_examples.rb | 51 + .../debian/distribution_shared_examples.rb | 36 - .../api/composer_packages_shared_examples.rb | 11 + .../container_repositories_shared_examples.rb | 37 + ...nd_project_boards_query_shared_examples.rb | 7 +- ...d_project_packages_list_shared_examples.rb | 10 +- .../api/issuable_search_shared_examples.rb | 36 + ...ing_application_context_shared_examples.rb | 16 + .../requests/rack_attack_shared_examples.rb | 5 +- ...pendency_proxy_settings_shared_examples.rb | 8 + .../cleanup_worker_shared_examples.rb | 53 + .../concerns/reenqueuer_shared_examples.rb | 24 +- .../database/multiple_databases_spec.rb | 59 + .../database/prevent_cross_joins_spec.rb | 16 +- spec/tasks/gitlab/db_rake_spec.rb | 53 +- .../gitlab/packages/composer_rake_spec.rb | 29 - .../danger/product_intelligence_spec.rb | 10 +- spec/tooling/danger/project_helper_spec.rb | 16 + spec/tooling/danger/specs_spec.rb | 133 + spec/tooling/quality/test_level_spec.rb | 18 +- .../nav/sidebar/_admin.html.haml_spec.rb | 9 + .../nav/sidebar/_project.html.haml_spec.rb | 17 + .../projects/branches/index.html.haml_spec.rb | 43 + .../commits/_commit.html.haml_spec.rb | 18 + .../projects/services/edit.html.haml_spec.rb | 4 +- .../projects/tags/index.html.haml_spec.rb | 22 +- ...roject_recalculate_per_user_worker_spec.rb | 70 + .../user_refresh_from_replica_worker_spec.rb | 2 +- spec/workers/build_finished_worker_spec.rb | 28 +- spec/workers/bulk_import_worker_spec.rb | 6 +- .../export_request_worker_spec.rb | 29 +- .../bulk_imports/pipeline_worker_spec.rb | 116 +- .../create_downstream_pipeline_worker_spec.rb | 37 + .../stuck_builds/drop_running_worker_spec.rb | 28 + .../drop_scheduled_worker_spec.rb | 28 + ...leanup_container_repository_worker_spec.rb | 6 +- .../concerns/application_worker_spec.rb | 12 + .../github_import/object_importer_spec.rb | 63 +- spec/workers/concerns/worker_context_spec.rb | 4 + ...leanup_container_repository_worker_spec.rb | 55 +- ...container_expiration_policy_worker_spec.rb | 2 +- .../create_note_diff_file_worker_spec.rb | 18 + .../drop_detached_partitions_worker_spec.rb | 7 +- .../cleanup_blob_worker_spec.rb | 9 + .../cleanup_manifest_worker_spec.rb | 9 + .../image_ttl_group_policy_worker_spec.rb | 74 + spec/workers/email_receiver_worker_spec.rb | 15 + spec/workers/every_sidekiq_worker_spec.rb | 25 +- spec/workers/expire_job_cache_worker_spec.rb | 2 + .../stage/finish_import_worker_spec.rb | 48 +- .../stage/import_base_data_worker_spec.rb | 28 +- .../stage/import_pull_requests_worker_spec.rb | 27 +- .../stage/import_repository_worker_spec.rb | 11 +- spec/workers/issue_placement_worker_spec.rb | 2 +- .../composer/cache_cleanup_worker_spec.rb | 8 +- .../composer/cache_update_worker_spec.rb | 8 +- spec/workers/pages_remove_worker_spec.rb | 11 - spec/workers/pipeline_hooks_worker_spec.rb | 8 +- spec/workers/pipeline_process_worker_spec.rb | 10 - spec/workers/post_receive_spec.rb | 2 +- .../run_pipeline_schedule_worker_spec.rb | 15 + spec/workers/stuck_ci_jobs_worker_spec.rb | 60 +- storybook/config/main.js | 3 +- storybook/config/preview.js | 7 +- storybook/config/webpack.config.js | 21 +- storybook/package.json | 4 +- storybook/yarn.lock | 17 + tooling/danger/product_intelligence.rb | 3 +- tooling/danger/project_helper.rb | 9 + tooling/danger/specs.rb | 59 + tooling/deprecations/docs.rb | 2 +- .../graphql/docs/templates/default.md.haml | 6 +- tooling/lib/tooling/helm3_client.rb | 2 +- tooling/quality/test_level.rb | 24 +- .../cluster_management.tar.gz | Bin 14062 -> 14762 bytes vendor/project_templates/learn_gitlab.tar.gz | Bin 112648 -> 0 bytes .../learn_gitlab_ultimate_trial.tar.gz | Bin 115097 -> 115092 bytes .../gitlab.com/gitlab-org/gitaly/LICENSE | 21 - .../gitlab.com/gitlab-org/gitaly/NOTICE | 3499 ----- .../gitlab-org/gitaly/auth/extract_test.go | 131 - .../gitlab-org/gitaly/auth/rpccredentials.go | 56 - .../gitlab-org/gitaly/auth/token.go | 146 - .../gitaly/client/address_parser.go | 38 - .../gitaly/client/address_parser_test.go | 73 - .../gitlab-org/gitaly/client/dial.go | 108 - .../gitlab-org/gitaly/client/dial_test.go | 249 - .../gitlab-org/gitaly/client/pool.go | 8 - .../gitlab-org/gitaly/client/pool_darwin.go | 53 - .../gitlab-org/gitaly/client/receive_pack.go | 38 - .../gitlab-org/gitaly/client/std_stream.go | 66 - .../gitaly/client/testdata/gitalycert.pem | 30 - .../gitaly/client/testdata/gitalykey.pem | 52 - .../gitaly/client/upload_archive.go | 38 - .../gitlab-org/gitaly/client/upload_pack.go | 38 - .../gitaly/proto/go/gitalypb/blob.pb.go | 1164 -- .../gitaly/proto/go/gitalypb/cleanup.pb.go | 317 - .../gitaly/proto/go/gitalypb/commit.pb.go | 3992 ------ .../gitaly/proto/go/gitalypb/conflicts.pb.go | 717 - .../gitaly/proto/go/gitalypb/diff.pb.go | 1265 -- .../gitaly/proto/go/gitalypb/hook.pb.go | 572 - .../gitaly/proto/go/gitalypb/namespace.pb.go | 580 - .../gitaly/proto/go/gitalypb/objectpool.pb.go | 1038 -- .../gitaly/proto/go/gitalypb/operations.pb.go | 3629 ----- .../gitaly/proto/go/gitalypb/praefect.pb.go | 291 - .../gitaly/proto/go/gitalypb/protolist.go | 25 - .../gitaly/proto/go/gitalypb/ref.pb.go | 3260 ----- .../gitaly/proto/go/gitalypb/remote.pb.go | 1121 -- .../go/gitalypb/repository-service.pb.go | 5909 -------- .../gitaly/proto/go/gitalypb/server.pb.go | 468 - .../gitaly/proto/go/gitalypb/shared.pb.go | 810 -- .../gitaly/proto/go/gitalypb/smarthttp.pb.go | 727 - .../gitaly/proto/go/gitalypb/ssh.pb.go | 711 - .../gitaly/proto/go/gitalypb/wiki.pb.go | 1795 --- .../gitlab-org/gitaly/streamio/stream.go | 159 - .../gitlab-org/gitaly/streamio/stream_test.go | 145 - workhorse/gitaly_integration_test.go | 2 +- workhorse/gitaly_test.go | 61 +- workhorse/go.mod | 12 +- workhorse/go.sum | 220 +- workhorse/internal/api/api.go | 2 - .../artifacts/artifacts_store_test.go | 16 +- .../artifacts/artifacts_upload_test.go | 6 +- .../dependencyproxy/dependencyproxy.go | 123 + .../dependencyproxy/dependencyproxy_test.go | 183 + .../internal/filestore/save_file_opts_test.go | 8 +- workhorse/internal/git/archive.go | 4 +- workhorse/internal/git/info-refs.go | 20 +- workhorse/internal/git/info-refs_test.go | 42 + workhorse/internal/git/upload-pack_test.go | 13 +- workhorse/internal/gitaly/gitaly.go | 46 +- workhorse/internal/gitaly/gitaly_test.go | 20 +- workhorse/internal/gitaly/smarthttp.go | 46 + workhorse/internal/gitaly/unmarshal_test.go | 13 +- workhorse/internal/testhelper/gitaly.go | 47 +- workhorse/internal/upload/uploads_test.go | 8 +- workhorse/internal/upstream/routes.go | 19 +- workhorse/internal/upstream/upstream.go | 18 +- workhorse/internal/upstream/upstream_test.go | 107 +- .../zipartifacts/open_archive_test.go | 135 +- workhorse/main.go | 3 + workhorse/main_test.go | 85 + yarn.lock | 1821 ++- 5049 files changed, 177207 insertions(+), 139267 deletions(-) delete mode 100644 .gitlab/ci/dast.gitlab-ci.yml create mode 100644 .gitlab/ci/review-apps/dast.gitlab-ci.yml create mode 100644 .gitlab/ci/review-apps/main.gitlab-ci.yml create mode 100644 .gitlab/ci/review-apps/qa.gitlab-ci.yml create mode 100644 .gitlab/merge_request_templates/Deprecations.md create mode 100644 app/assets/images/logos/zentao.svg create mode 100644 app/assets/javascripts/api/bulk_imports_api.js create mode 100644 app/assets/javascripts/boards/graphql.js create mode 100644 app/assets/javascripts/clusters/agents/components/show.vue create mode 100644 app/assets/javascripts/clusters/agents/components/token_table.vue create mode 100644 app/assets/javascripts/clusters/agents/constants.js create mode 100644 app/assets/javascripts/clusters/agents/graphql/fragments/cluster_agent_token.fragment.graphql create mode 100644 app/assets/javascripts/clusters/agents/graphql/queries/get_cluster_agent.query.graphql create mode 100644 app/assets/javascripts/clusters/agents/index.js create mode 100644 app/assets/javascripts/clusters_list/clusters_util.js create mode 100644 app/assets/javascripts/clusters_list/components/agent_empty_state.vue create mode 100644 app/assets/javascripts/clusters_list/components/agent_table.vue create mode 100644 app/assets/javascripts/clusters_list/components/agents.vue create mode 100644 app/assets/javascripts/clusters_list/components/available_agents_dropdown.vue create mode 100644 app/assets/javascripts/clusters_list/components/install_agent_modal.vue create mode 100644 app/assets/javascripts/clusters_list/graphql/mutations/create_agent.mutation.graphql create mode 100644 app/assets/javascripts/clusters_list/graphql/mutations/create_agent_token.mutation.graphql create mode 100644 app/assets/javascripts/clusters_list/graphql/queries/agent_configurations.query.graphql create mode 100644 app/assets/javascripts/clusters_list/graphql/queries/get_agents.query.graphql create mode 100644 app/assets/javascripts/clusters_list/load_agents.js delete mode 100644 app/assets/javascripts/comment_type_toggle.js create mode 100644 app/assets/javascripts/content_editor/components/wrappers/details.vue create mode 100644 app/assets/javascripts/content_editor/components/wrappers/frontmatter.vue create mode 100644 app/assets/javascripts/content_editor/extensions/color_chip.js create mode 100644 app/assets/javascripts/content_editor/extensions/details.js create mode 100644 app/assets/javascripts/content_editor/extensions/details_content.js create mode 100644 app/assets/javascripts/content_editor/extensions/frontmatter.js create mode 100644 app/assets/javascripts/content_editor/extensions/math_inline.js create mode 100644 app/assets/javascripts/content_editor/extensions/table_of_contents.js create mode 100644 app/assets/javascripts/content_editor/extensions/word_break.js delete mode 100644 app/assets/javascripts/dependency_proxy.js rename app/assets/javascripts/diffs/utils/{workers.js => tree_worker_utils.js} (100%) delete mode 100644 app/assets/javascripts/droplab/drop_lab.js create mode 100644 app/assets/javascripts/editor/schema/NOTICE create mode 100644 app/assets/javascripts/editor/schema/ci.json rename app/assets/javascripts/{ => filtered_search}/droplab/constants.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/drop_down.js (100%) create mode 100644 app/assets/javascripts/filtered_search/droplab/drop_lab_deprecated.js rename app/assets/javascripts/{ => filtered_search}/droplab/hook.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/hook_button.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/hook_input.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/keyboard.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/plugins/ajax.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/plugins/ajax_filter.js (98%) rename app/assets/javascripts/{ => filtered_search}/droplab/plugins/filter.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/plugins/input_setter.js (100%) rename app/assets/javascripts/{ => filtered_search}/droplab/utils.js (100%) create mode 100644 app/assets/javascripts/graphql_shared/fragments/milestone.fragment.graphql create mode 100644 app/assets/javascripts/header_search/components/header_search_autocomplete_items.vue create mode 100644 app/assets/javascripts/import_entities/components/pagination_bar.vue create mode 100644 app/assets/javascripts/integrations/constants.js delete mode 100644 app/assets/javascripts/integrations/edit/constants.js create mode 100644 app/assets/javascripts/issues_list/components/new_issue_dropdown.vue create mode 100644 app/assets/javascripts/issues_list/queries/search_projects.query.graphql create mode 100644 app/assets/javascripts/lib/apollo/suppress_network_errors_during_navigation_link.js create mode 100644 app/assets/javascripts/lib/utils/is_navigating_away.js delete mode 100644 app/assets/javascripts/members/components/table/expires_at.vue delete mode 100644 app/assets/javascripts/namespace_select.js delete mode 100644 app/assets/javascripts/packages/details/components/additional_metadata.vue delete mode 100644 app/assets/javascripts/packages/details/components/app.vue delete mode 100644 app/assets/javascripts/packages/details/components/composer_installation.vue delete mode 100644 app/assets/javascripts/packages/details/components/conan_installation.vue delete mode 100644 app/assets/javascripts/packages/details/components/dependency_row.vue delete mode 100644 app/assets/javascripts/packages/details/components/installation_commands.vue delete mode 100644 app/assets/javascripts/packages/details/components/installation_title.vue delete mode 100644 app/assets/javascripts/packages/details/components/maven_installation.vue delete mode 100644 app/assets/javascripts/packages/details/components/npm_installation.vue delete mode 100644 app/assets/javascripts/packages/details/components/nuget_installation.vue delete mode 100644 app/assets/javascripts/packages/details/components/package_title.vue delete mode 100644 app/assets/javascripts/packages/details/components/pypi_installation.vue delete mode 100644 app/assets/javascripts/packages/details/constants.js delete mode 100644 app/assets/javascripts/packages/details/index.js delete mode 100644 app/assets/javascripts/packages/details/store/getters.js delete mode 100644 app/assets/javascripts/packages/details/utils.js create mode 100644 app/assets/javascripts/packages_and_registries/dependency_proxy/app.vue create mode 100644 app/assets/javascripts/packages_and_registries/dependency_proxy/graphql/index.js create mode 100644 app/assets/javascripts/packages_and_registries/dependency_proxy/graphql/queries/get_dependency_proxy_details.query.graphql create mode 100644 app/assets/javascripts/packages_and_registries/dependency_proxy/index.js create mode 100644 app/assets/javascripts/packages_and_registries/infrastructure_registry/details/components/app.vue rename app/assets/javascripts/packages_and_registries/infrastructure_registry/{ => details}/components/details_title.vue (100%) rename app/assets/javascripts/{packages => packages_and_registries/infrastructure_registry}/details/components/file_sha.vue (100%) rename app/assets/javascripts/{packages => packages_and_registries/infrastructure_registry}/details/components/package_files.vue (98%) rename app/assets/javascripts/{packages => packages_and_registries/infrastructure_registry}/details/components/package_history.vue (88%) rename app/assets/javascripts/packages_and_registries/infrastructure_registry/{ => details}/components/terraform_installation.vue (100%) create mode 100644 app/assets/javascripts/packages_and_registries/infrastructure_registry/details/constants.js rename app/assets/javascripts/{packages => packages_and_registries/infrastructure_registry}/details/store/actions.js (100%) create mode 100644 app/assets/javascripts/packages_and_registries/infrastructure_registry/details/store/getters.js rename app/assets/javascripts/{packages => packages_and_registries/infrastructure_registry}/details/store/index.js (100%) rename app/assets/javascripts/{packages => packages_and_registries/infrastructure_registry}/details/store/mutation_types.js (100%) rename app/assets/javascripts/{packages => packages_and_registries/infrastructure_registry}/details/store/mutations.js (100%) create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/components/list/app.vue create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue delete mode 100644 app/assets/javascripts/packages_and_registries/package_registry/components/list/packages_list_app.vue create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/components/list/publish_method.vue create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/graphql/fragments/package_data.fragment.graphql create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/graphql/queries/get_packages.query.graphql create mode 100644 app/assets/javascripts/packages_and_registries/settings/group/components/dependency_proxy_settings.vue create mode 100644 app/assets/javascripts/packages_and_registries/settings/group/components/packages_settings.vue create mode 100644 app/assets/javascripts/packages_and_registries/settings/group/graphql/mutations/update_dependency_proxy_settings.mutation.graphql create mode 100644 app/assets/javascripts/pages/admin/projects/components/namespace_select.vue delete mode 100644 app/assets/javascripts/pages/admin/serverless/domains/index.js create mode 100644 app/assets/javascripts/pages/admin/topics/edit/index.js create mode 100644 app/assets/javascripts/pages/admin/topics/new/index.js create mode 100644 app/assets/javascripts/pages/import/bulk_imports/history/components/bulk_imports_history_app.vue create mode 100644 app/assets/javascripts/pages/import/bulk_imports/history/index.js create mode 100644 app/assets/javascripts/pages/import/bulk_imports/history/utils/error_messages.js create mode 100644 app/assets/javascripts/pages/profiles/password_prompt/constants.js create mode 100644 app/assets/javascripts/pages/profiles/password_prompt/index.js create mode 100644 app/assets/javascripts/pages/profiles/password_prompt/password_prompt_modal.vue create mode 100644 app/assets/javascripts/pages/projects/cluster_agents/show/index.js delete mode 100644 app/assets/javascripts/pages/projects/new/components/new_project_url_select.vue create mode 100644 app/assets/javascripts/pages/projects/wikis/diff/index.js create mode 100644 app/assets/javascripts/pages/projects/wikis/edit/index.js create mode 100644 app/assets/javascripts/pages/projects/wikis/git_access/index.js create mode 100644 app/assets/javascripts/pages/projects/wikis/show/index.js create mode 100644 app/assets/javascripts/pages/shared/wikis/async_edit.js create mode 100644 app/assets/javascripts/pages/shared/wikis/edit.js delete mode 100644 app/assets/javascripts/pages/shared/wikis/index.js create mode 100644 app/assets/javascripts/pipeline_editor/components/header/pipeline_editor_mini_graph.vue rename app/assets/javascripts/{pages => }/projects/new/components/app.vue (100%) rename app/assets/javascripts/{pages => }/projects/new/components/new_project_push_tip_popover.vue (100%) create mode 100644 app/assets/javascripts/projects/new/components/new_project_url_select.vue create mode 100644 app/assets/javascripts/projects/new/event_hub.js create mode 100644 app/assets/javascripts/projects/new/index.js rename app/assets/javascripts/{pages => }/projects/new/queries/search_namespaces_where_user_can_create_projects.query.graphql (100%) create mode 100644 app/assets/javascripts/projects/settings/api/access_dropdown_api.js create mode 100644 app/assets/javascripts/projects/settings/components/access_dropdown.vue create mode 100644 app/assets/javascripts/projects/settings/init_access_dropdown.js create mode 100644 app/assets/javascripts/repository/commits_service.js create mode 100644 app/assets/javascripts/repository/components/blob_viewers/video_viewer.vue create mode 100644 app/assets/javascripts/repository/components/fork_suggestion.vue create mode 100644 app/assets/javascripts/repository/components/new_directory_modal.vue delete mode 100644 app/assets/javascripts/runner/components/cells/runner_name_cell.vue create mode 100644 app/assets/javascripts/runner/components/cells/runner_summary_cell.vue create mode 100644 app/assets/javascripts/runner/components/runner_name.vue create mode 100644 app/assets/javascripts/runner/components/runner_state_locked_badge.vue create mode 100644 app/assets/javascripts/runner/components/runner_state_paused_badge.vue delete mode 100644 app/assets/javascripts/runner/components/runner_type_help.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/extensions/actions.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/extensions/status_icon.vue create mode 100644 app/assets/javascripts/vue_shared/components/dropdown_keyboard_navigation.vue create mode 100644 app/assets/javascripts/vue_shared/components/filtered_search_bar/queries/epic.fragment.graphql create mode 100644 app/assets/javascripts/vue_shared/components/filtered_search_bar/queries/search_epics.query.graphql delete mode 100644 app/assets/javascripts/vue_shared/components/oncall_schedules_list.vue create mode 100644 app/assets/javascripts/vue_shared/components/project_selector/project_list_item.stories.js create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/graphql/epic_labels.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/labels_select_widget/graphql/group_labels.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/user_deletion_obstacles/constants.js create mode 100644 app/assets/javascripts/vue_shared/components/user_deletion_obstacles/user_deletion_obstacles_list.stories.js create mode 100644 app/assets/javascripts/vue_shared/components/user_deletion_obstacles/user_deletion_obstacles_list.vue create mode 100644 app/assets/javascripts/vue_shared/components/user_deletion_obstacles/utils.js delete mode 100644 app/assets/stylesheets/components/design_management/design_version_dropdown.scss delete mode 100644 app/assets/stylesheets/components/project_list_item.scss delete mode 100644 app/assets/stylesheets/framework/banner.scss delete mode 100644 app/assets/stylesheets/pages/ci_projects.scss delete mode 100644 app/assets/stylesheets/pages/issues/issue_count_badge.scss create mode 100644 app/assets/stylesheets/themes/dark_mode_overrides.scss delete mode 100644 app/controllers/admin/serverless/domains_controller.rb create mode 100644 app/controllers/admin/topics/avatars_controller.rb create mode 100644 app/controllers/admin/topics_controller.rb create mode 100644 app/controllers/concerns/one_trust_csp.rb create mode 100644 app/controllers/concerns/registry/connection_errors_handler.rb create mode 100644 app/controllers/import/url_controller.rb create mode 100644 app/controllers/projects/cluster_agents_controller.rb create mode 100644 app/controllers/projects/google_cloud_controller.rb create mode 100644 app/experiments/new_project_sast_enabled_experiment.rb create mode 100644 app/finders/clusters/agents_finder.rb create mode 100644 app/finders/projects/topics_finder.rb create mode 100644 app/graphql/mutations/clusters/agent_tokens/create.rb create mode 100644 app/graphql/mutations/clusters/agent_tokens/delete.rb create mode 100644 app/graphql/mutations/clusters/agents/create.rb create mode 100644 app/graphql/mutations/clusters/agents/delete.rb create mode 100644 app/graphql/mutations/customer_relations/contacts/create.rb create mode 100644 app/graphql/mutations/customer_relations/contacts/update.rb create mode 100644 app/graphql/mutations/dependency_proxy/group_settings/update.rb create mode 100644 app/graphql/resolvers/board_list_resolver.rb create mode 100644 app/graphql/resolvers/clusters/agent_tokens_resolver.rb create mode 100644 app/graphql/resolvers/clusters/agents_resolver.rb create mode 100644 app/graphql/resolvers/concerns/search_arguments.rb create mode 100644 app/graphql/resolvers/kas/agent_configurations_resolver.rb create mode 100644 app/graphql/resolvers/kas/agent_connections_resolver.rb create mode 100644 app/graphql/types/ci/runner_web_url_edge.rb create mode 100644 app/graphql/types/clusters/agent_token_type.rb create mode 100644 app/graphql/types/clusters/agent_type.rb create mode 100644 app/graphql/types/kas/agent_configuration_type.rb create mode 100644 app/graphql/types/kas/agent_connection_type.rb create mode 100644 app/graphql/types/kas/agent_metadata_type.rb create mode 100644 app/graphql/types/permission_types/ci/runner.rb create mode 100644 app/helpers/one_trust_helper.rb create mode 100644 app/helpers/projects/cluster_agents_helper.rb create mode 100644 app/models/concerns/analytics/cycle_analytics/stage_event_model.rb create mode 100644 app/models/concerns/ttl_expirable.rb delete mode 100644 app/models/integrations/open_project.rb delete mode 100644 app/models/integrations/open_project_tracker_data.rb delete mode 100644 app/models/operations/feature_flag_scope.rb delete mode 100644 app/models/preloaders/merge_requests_preloader.rb create mode 100644 app/policies/ci/resource_group_policy.rb create mode 100644 app/policies/clusters/agent_policy.rb create mode 100644 app/policies/clusters/agent_token_policy.rb create mode 100644 app/policies/list_policy.rb create mode 100644 app/policies/namespaces/project_namespace_policy.rb create mode 100644 app/policies/namespaces/user_namespace_policy.rb delete mode 100644 app/serializers/feature_flag_scope_entity.rb create mode 100644 app/serializers/merge_request_metrics_helper.rb delete mode 100644 app/services/bulk_import_service.rb create mode 100644 app/services/bulk_imports/create_service.rb create mode 100644 app/services/bulk_imports/file_export_service.rb create mode 100644 app/services/bulk_imports/get_importable_data_service.rb create mode 100644 app/services/bulk_imports/tree_export_service.rb create mode 100644 app/services/bulk_imports/uploads_export_service.rb create mode 100644 app/services/ci/pipelines/hook_service.rb create mode 100644 app/services/ci/stuck_builds/drop_pending_service.rb create mode 100644 app/services/ci/stuck_builds/drop_running_service.rb create mode 100644 app/services/ci/stuck_builds/drop_scheduled_service.rb delete mode 100644 app/services/ci/stuck_builds/drop_service.rb create mode 100644 app/services/clusters/agent_tokens/create_service.rb create mode 100644 app/services/clusters/agents/create_service.rb create mode 100644 app/services/clusters/agents/delete_service.rb create mode 100644 app/services/concerns/rate_limited_service.rb create mode 100644 app/services/customer_relations/contacts/base_service.rb create mode 100644 app/services/customer_relations/contacts/create_service.rb create mode 100644 app/services/customer_relations/contacts/update_service.rb create mode 100644 app/services/dependency_proxy/group_settings/update_service.rb create mode 100644 app/services/feature_flags/hook_service.rb create mode 100644 app/services/import/validate_remote_git_endpoint_service.rb create mode 100644 app/services/merge_requests/mergeability/check_base_service.rb create mode 100644 app/services/merge_requests/mergeability/check_ci_status_service.rb create mode 100644 app/services/merge_requests/mergeability/run_checks_service.rb create mode 100644 app/services/projects/container_repository/cache_tags_created_at_service.rb delete mode 100644 app/views/admin/application_settings/_files_limits.html.haml create mode 100644 app/views/admin/application_settings/_network_rate_limits.html.haml delete mode 100644 app/views/admin/application_settings/_package_registry_limits.html.haml create mode 100644 app/views/admin/dashboard/_security_newsletter_callout.html.haml delete mode 100644 app/views/admin/serverless/domains/_form.html.haml delete mode 100644 app/views/admin/serverless/domains/index.html.haml create mode 100644 app/views/admin/topics/_form.html.haml create mode 100644 app/views/admin/topics/_topic.html.haml create mode 100644 app/views/admin/topics/edit.html.haml create mode 100644 app/views/admin/topics/index.html.haml create mode 100644 app/views/admin/topics/new.html.haml delete mode 100644 app/views/groups/dependency_proxies/_url.html.haml create mode 100644 app/views/import/bulk_imports/history.html.haml create mode 100644 app/views/layouts/_one_trust.html.haml create mode 100644 app/views/projects/cluster_agents/show.html.haml create mode 100644 app/views/projects/google_cloud/index.html.haml delete mode 100644 app/views/projects/issues/_related_issues_block.html.haml create mode 100644 app/views/shared/_web_ide_path.html.haml create mode 100644 app/views/shared/empty_states/_topics.html.haml create mode 100644 app/views/shared/errors/_gitaly_unavailable.html.haml create mode 100644 app/views/shared/hook_logs/_recent_deliveries_table.html.haml create mode 100644 app/views/shared/topics/_search_form.html.haml create mode 100644 app/workers/authorized_project_update/project_recalculate_per_user_worker.rb create mode 100644 app/workers/ci/create_downstream_pipeline_worker.rb create mode 100644 app/workers/ci/stuck_builds/drop_running_worker.rb create mode 100644 app/workers/ci/stuck_builds/drop_scheduled_worker.rb create mode 100644 app/workers/concerns/dependency_proxy/cleanup_worker.rb create mode 100644 app/workers/dependency_proxy/cleanup_blob_worker.rb create mode 100644 app/workers/dependency_proxy/cleanup_manifest_worker.rb create mode 100644 app/workers/dependency_proxy/image_ttl_group_policy_worker.rb delete mode 100644 app/workers/pages_remove_worker.rb create mode 100644 config/feature_flags/development/add_actor_based_user_to_snowplow_tracking.yml create mode 100644 config/feature_flags/development/avoid_cross_joins_environments_in_self_and_descendants.yml create mode 100644 config/feature_flags/development/ci_archived_build_trace_checksum.yml delete mode 100644 config/feature_flags/development/ci_idempotent_pipeline_process_worker.yml delete mode 100644 config/feature_flags/development/ci_include_rules.yml delete mode 100644 config/feature_flags/development/ci_minutes_track_live_consumption.yml create mode 100644 config/feature_flags/development/ci_new_query_for_running_stuck_jobs.yml create mode 100644 config/feature_flags/development/ci_optimize_project_records_destruction.yml delete mode 100644 config/feature_flags/development/ci_pipeline_add_job_with_lock.yml delete mode 100644 config/feature_flags/development/ci_remove_update_retried_from_process_pipeline.yml delete mode 100644 config/feature_flags/development/ci_runner_limits.yml create mode 100644 config/feature_flags/development/container_registry_expiration_policies_caching.yml create mode 100644 config/feature_flags/development/decomposed_ci_query_in_pipelines_for_merge_request_finder.yml create mode 100644 config/feature_flags/development/dependency_proxy_workhorse.yml delete mode 100644 config/feature_flags/development/ensure_verified_primary_email_for_2fa.yml delete mode 100644 config/feature_flags/development/environment_last_visible_pipeline_disable_joins.yml create mode 100644 config/feature_flags/development/finding_ci_pipeline_disable_joins.yml delete mode 100644 config/feature_flags/development/gitaly_tags_finder.yml create mode 100644 config/feature_flags/development/gitaly_user_merge_branch_access_error.yml delete mode 100644 config/feature_flags/development/help_page_documentation_redirect.yml create mode 100644 config/feature_flags/development/improved_mergeability_checks.yml create mode 100644 config/feature_flags/development/incubation_5mp_google_cloud.yml create mode 100644 config/feature_flags/development/jira_connect_asymmetric_jwt.yml create mode 100644 config/feature_flags/development/lazy_load_commits.yml create mode 100644 config/feature_flags/development/linear_application_setting_ancestor_scopes.yml create mode 100644 config/feature_flags/development/linear_ee_group_ancestor_scopes.yml create mode 100644 config/feature_flags/development/linear_group_ancestor_scopes.yml create mode 100644 config/feature_flags/development/linear_group_plans_preloaded_ancestor_scopes.yml create mode 100644 config/feature_flags/development/linear_group_tree_ancestor_scopes.yml create mode 100644 config/feature_flags/development/linear_members_finder_ancestor_scopes.yml create mode 100644 config/feature_flags/development/linear_participants_service_ancestor_scopes.yml delete mode 100644 config/feature_flags/development/merge_request_discussion_cache.yml create mode 100644 config/feature_flags/development/mergeability_caching.yml create mode 100644 config/feature_flags/development/mr_changes_fluid_layout.yml create mode 100644 config/feature_flags/development/new_customersdot_staging_url.yml create mode 100644 config/feature_flags/development/new_dir_modal.yml create mode 100644 config/feature_flags/development/operational_vulnerabilities.yml create mode 100644 config/feature_flags/development/package_list_apollo.yml delete mode 100644 config/feature_flags/development/pages_smart_check_outdated_sha.yml delete mode 100644 config/feature_flags/development/pipeline_editor_drawer.yml delete mode 100644 config/feature_flags/development/pipeline_editor_empty_state_action.yml create mode 100644 config/feature_flags/development/pipeline_editor_mini_graph.yml create mode 100644 config/feature_flags/development/rate_limited_service_issues_create.yml delete mode 100644 config/feature_flags/development/redirect_to_latest_template_jobs_browser_performance_testing.yml delete mode 100644 config/feature_flags/development/redirect_to_latest_template_security_api_fuzzing.yml delete mode 100644 config/feature_flags/development/redirect_to_latest_template_security_dast.yml delete mode 100644 config/feature_flags/development/redirect_to_latest_template_terraform.yml delete mode 100644 config/feature_flags/development/redirect_to_latest_template_verify_browser_performance.yml create mode 100644 config/feature_flags/development/refactor_mr_widgets_extensions.yml create mode 100644 config/feature_flags/development/refactor_mr_widgets_extensions_user.yml create mode 100644 config/feature_flags/development/refactor_text_viewer.yml create mode 100644 config/feature_flags/development/reference_cache_memoization.yml delete mode 100644 config/feature_flags/development/remove_composer_v1_cache_code.yml create mode 100644 config/feature_flags/development/request_apdex_counters.yml create mode 100644 config/feature_flags/development/search_blobs_language_aggregation.yml delete mode 100644 config/feature_flags/development/security_orchestration_policies_configuration.yml create mode 100644 config/feature_flags/development/security_report_ingestion_framework.yml delete mode 100644 config/feature_flags/development/serverless_domain.yml delete mode 100644 config/feature_flags/development/show_author_on_note.yml delete mode 100644 config/feature_flags/development/sort_by_project_users_by_project_authorizations_user_id.yml delete mode 100644 config/feature_flags/development/specialized_worker_for_project_share_update_auth_recalculation.yml delete mode 100644 config/feature_flags/development/specialized_worker_for_project_transfer_auth_recalculation.yml create mode 100644 config/feature_flags/development/suppress_apollo_errors_during_navigation.yml create mode 100644 config/feature_flags/development/surface_environment_creation_failure.yml create mode 100644 config/feature_flags/development/surface_environment_creation_failure_override.yml create mode 100644 config/feature_flags/development/tags_finder_gitaly.yml delete mode 100644 config/feature_flags/development/track_epic_boards_activity.yml create mode 100644 config/feature_flags/development/track_importer_activity.yml create mode 100644 config/feature_flags/development/update_deployment_after_transaction_commit.yml delete mode 100644 config/feature_flags/development/usage_data_i_testing_group_code_coverage_visit_total.yml delete mode 100644 config/feature_flags/development/usage_data_i_testing_metrics_report_artifact_uploaders.yml delete mode 100644 config/feature_flags/development/usage_data_i_testing_summary_widget_total.yml delete mode 100644 config/feature_flags/development/usage_data_i_testing_test_case_parsed.yml delete mode 100644 config/feature_flags/development/vulnerability_flags.yml create mode 100644 config/feature_flags/development/vulnerability_location_image_filter.yml create mode 100644 config/feature_flags/development/workhorse_use_sidechannel.yml delete mode 100644 config/feature_flags/experiment/jobs_to_be_done.yml create mode 100644 config/feature_flags/experiment/new_project_sast_enabled.yml create mode 100644 config/feature_flags/ops/ecomm_instrumentation.yml create mode 100644 config/feature_flags/ops/show_terraform_banner.yml create mode 100644 config/initializers/00_active_record_disable_joins.rb delete mode 100644 config/initializers_before_autoloader/grape_entity_patch.rb create mode 100644 config/metrics/counts_28d/20210715094458_releases_with_milestones.yml create mode 100644 config/metrics/counts_28d/20210916201533_clusters_integrations_prometheus.yml create mode 100644 config/metrics/counts_28d/20210929102434_p_ci_templates_implicit_jobs_build_monthly.yml create mode 100644 config/metrics/counts_28d/20210929102736_p_ci_templates_implicit_jobs_deploy_latest_monthly.yml create mode 100644 config/metrics/counts_28d/20210929103010_p_ci_templates_implicit_jobs_deploy_monthly.yml create mode 100644 config/metrics/counts_28d/20210930125418_github_import_project_start_monthly.yml create mode 100644 config/metrics/counts_28d/20210930130531_github_import_project_success_monthly.yml create mode 100644 config/metrics/counts_28d/20210930163813_github_import_project_failure_monthly.yml create mode 100644 config/metrics/counts_7d/20210916100524_groups_gitlab_slack_application_active.yml create mode 100644 config/metrics/counts_7d/20210916101641_projects_gitlab_slack_application_active.yml create mode 100644 config/metrics/counts_7d/20210916101837_instances_gitlab_slack_application_active.yml create mode 100644 config/metrics/counts_7d/20210916102312_templates_gitlab_slack_application_active.yml create mode 100644 config/metrics/counts_7d/20210917040700_groups_inheriting_gitlab_slack_application_active.yml create mode 100644 config/metrics/counts_7d/20210917040956_projects_inheriting_gitlab_slack_application_active.yml create mode 100644 config/metrics/counts_7d/20210929102429_p_ci_templates_implicit_jobs_build_weekly.yml create mode 100644 config/metrics/counts_7d/20210929102731_p_ci_templates_implicit_jobs_deploy_latest_weekly.yml create mode 100644 config/metrics/counts_7d/20210929103006_p_ci_templates_implicit_jobs_deploy_weekly.yml create mode 100644 config/metrics/counts_7d/20210930125411_github_import_project_start_weekly.yml create mode 100644 config/metrics/counts_7d/20210930130525_github_import_project_success_weekly.yml create mode 100644 config/metrics/counts_7d/20210930163807_github_import_project_failure_weekly.yml delete mode 100644 config/metrics/counts_all/20210216182112_sast_jobs.yml delete mode 100644 config/metrics/counts_all/20210216182114_secret_detection_jobs.yml create mode 100644 config/metrics/counts_all/20210715094459_releases_with_milestones.yml create mode 100644 config/metrics/counts_all/20210915082040_projects_with_expiration_policy_enabled_with_older_than_set_to_60d.yml create mode 100644 config/metrics/counts_all/20210916200930_clusters_integrations_prometheus.yml create mode 100644 config/metrics/counts_all/20210916200931_clusters_integrations_elastic_stack.yml create mode 100644 config/metrics/counts_all/20210916202342_clusters_integrations_prometheus.yml delete mode 100644 config/redis.cache.yml.example delete mode 100644 config/redis.queues.yml.example delete mode 100644 config/redis.shared_state.yml.example delete mode 100644 config/redis.trace_chunks.yml.example create mode 100644 danger/plugins/specs.rb create mode 100644 data/deprecations/14-0-nfs-fot-git-repository-storage.yml create mode 100644 data/deprecations/14-2-deprecation-task-runner.yml create mode 100644 data/deprecations/14-3-deprecation-release-cli.yml delete mode 100644 data/deprecations/distribution_deprecations_14-3.yml create mode 100644 data/whats_new/2021102000001_14_04.yml create mode 100644 db/init_structure.sql delete mode 100644 db/migrate/20190103140724_make_legacy_false_default.rb delete mode 100644 db/migrate/20190104182041_cleanup_legacy_artifact_migration.rb delete mode 100644 db/migrate/20190107151020_add_services_type_index.rb delete mode 100644 db/migrate/20190108192941_remove_partial_index_from_ci_builds_artifacts_file.rb delete mode 100644 db/migrate/20190109153125_add_merge_request_external_diffs.rb delete mode 100644 db/migrate/20190114172110_add_domain_to_cluster.rb delete mode 100644 db/migrate/20190115054216_add_error_notification_sent_to_remote_mirrors.rb delete mode 100644 db/migrate/20190115092821_add_columns_project_error_tracking_settings.rb delete mode 100644 db/migrate/20190116234221_add_sorting_fields_to_user_preference.rb delete mode 100644 db/migrate/20190130091630_add_local_cached_markdown_version.rb delete mode 100644 db/migrate/20190206193120_add_index_to_tags.rb delete mode 100644 db/migrate/20190211131150_add_state_id_to_issuables.rb delete mode 100644 db/migrate/20190215154930_add_merge_pipelines_enabled_to_ci_cd_settings.rb delete mode 100644 db/migrate/20190218134158_add_masked_to_ci_variables.rb delete mode 100644 db/migrate/20190218134209_add_masked_to_ci_group_variables.rb delete mode 100644 db/migrate/20190219201635_add_asset_proxy_settings.rb delete mode 100644 db/migrate/20190220142344_add_email_header_and_footer_enabled_flag_to_appearances_table.rb delete mode 100644 db/migrate/20190220150130_add_extra_shas_to_ci_pipelines.rb delete mode 100644 db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb delete mode 100644 db/migrate/20190225152525_add_auto_dev_ops_enabled_to_namespaces.rb delete mode 100644 db/migrate/20190225160301_add_runner_tokens_indexes.rb delete mode 100644 db/migrate/20190228192410_add_multi_line_attributes_to_suggestion.rb delete mode 100644 db/migrate/20190301182457_add_external_hostname_to_ingress_and_knative.rb delete mode 100644 db/migrate/20190312071108_add_detected_repository_languages_to_projects.rb delete mode 100644 db/migrate/20190312113229_add_remove_at_to_pages_domains.rb delete mode 100644 db/migrate/20190312113634_add_remove_at_index_to_pages_domains.rb delete mode 100644 db/migrate/20190315191339_create_merge_request_assignees_table.rb delete mode 100644 db/migrate/20190320174702_add_lets_encrypt_notification_email_to_application_settings.rb delete mode 100644 db/migrate/20190322164830_add_auto_ssl_enabled_to_pages_domain.rb delete mode 100644 db/migrate/20190325080727_truncate_user_fullname.rb delete mode 100644 db/migrate/20190325105715_add_fields_to_user_preferences.rb delete mode 100644 db/migrate/20190325165127_add_managed_to_cluster.rb delete mode 100644 db/migrate/20190326164045_import_common_metrics_knative.rb delete mode 100644 db/migrate/20190327163904_add_notification_email_to_notification_settings.rb delete mode 100644 db/migrate/20190329085614_add_lets_encrypt_terms_of_service_accepted_to_application_settings.rb delete mode 100644 db/migrate/20190402150158_backport_enterprise_schema.rb delete mode 100644 db/migrate/20190403161806_update_designs_index.rb delete mode 100644 db/migrate/20190408163745_prometheus_knative05_fix.rb delete mode 100644 db/migrate/20190409224933_add_name_to_geo_nodes.rb delete mode 100644 db/migrate/20190410173409_add_name_index_to_geo_nodes.rb delete mode 100644 db/migrate/20190412155659_add_merge_request_blocks.rb delete mode 100644 db/migrate/20190412183653_remove_url_index_from_geo_nodes.rb delete mode 100644 db/migrate/20190414185432_add_comment_to_vulnerability_feedback.rb delete mode 100644 db/migrate/20190415030217_add_variable_type_to_ci_variables.rb delete mode 100644 db/migrate/20190415095825_add_packages_size_to_project_statistics.rb delete mode 100644 db/migrate/20190415172035_update_insights_foreign_keys.rb delete mode 100644 db/migrate/20190416185130_add_merge_train_enabled_to_ci_cd_settings.rb delete mode 100644 db/migrate/20190416213556_add_variable_type_to_ci_group_variables.rb delete mode 100644 db/migrate/20190416213615_add_variable_type_to_ci_pipeline_variables.rb delete mode 100644 db/migrate/20190416213631_add_variable_type_to_ci_pipeline_schedule_variables.rb delete mode 100644 db/migrate/20190418132750_add_foreign_key_from_vulnerability_feedback_to_users.rb delete mode 100644 db/migrate/20190418182545_create_merge_request_trains_table.rb delete mode 100644 db/migrate/20190419121952_add_bridged_pipeline_id_to_bridges.rb delete mode 100644 db/migrate/20190419123057_add_bridged_pipeline_id_foreign_key.rb delete mode 100644 db/migrate/20190422082247_create_project_metrics_settings.rb delete mode 100644 db/migrate/20190423124640_add_index_to_projects_mirror_user_id.rb delete mode 100644 db/migrate/20190426180107_add_deployment_events_to_services.rb delete mode 100644 db/migrate/20190429082448_create_pages_domain_acme_orders.rb delete mode 100644 db/migrate/20190430131225_create_issue_tracker_data.rb delete mode 100644 db/migrate/20190430142025_create_jira_tracker_data.rb delete mode 100644 db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb delete mode 100644 db/migrate/20190513174947_enable_create_incident_issues_by_default.rb delete mode 100644 db/migrate/20190514105711_create_ip_restriction.rb delete mode 100644 db/migrate/20190515125613_add_application_settings_elasticsearch_shards.rb delete mode 100644 db/migrate/20190516011213_add_build_queued_at_index.rb delete mode 100644 db/migrate/20190516151857_add_lets_encrypt_private_key_to_application_settings.rb delete mode 100644 db/migrate/20190516155724_change_packages_size_defaults_in_project_statistics.rb delete mode 100644 db/migrate/20190520200123_add_rule_type_to_approval_merge_request_approval_rules.rb delete mode 100644 db/migrate/20190521174505_add_report_type_to_approval_merge_request_rules.rb delete mode 100644 db/migrate/20190523112344_limit_milestone_date_years_to_4_digits.rb delete mode 100644 db/migrate/20190524062810_generate_lets_encrypt_private_key.rb delete mode 100644 db/migrate/20190524071727_add_ssl_valid_period_to_pages_domain.rb delete mode 100644 db/migrate/20190527011309_add_required_template_name_to_application_settings.rb delete mode 100644 db/migrate/20190527194830_add_wiki_size_to_statistics.rb delete mode 100644 db/migrate/20190528173628_add_index_for_code_owner_rule_type_on_approval_merge_request_rules.rb delete mode 100644 db/migrate/20190529142545_add_dns_rebinding_protection_enabled_to_application_settings.rb delete mode 100644 db/migrate/20190530042141_add_default_git_depth_to_ci_cd_settings.rb delete mode 100644 db/migrate/20190530154715_add_index_to_merge_requests_state_and_merge_status.rb delete mode 100644 db/migrate/20190531153110_create_namespace_root_storage_statistics.rb delete mode 100644 db/migrate/20190602014139_add_repository_type_to_lfs_objects_project.rb delete mode 100644 db/migrate/20190603124955_add_index_to_count_pending_mirror_updates.rb delete mode 100644 db/migrate/20190604091310_add_ldap_membership_lock.rb delete mode 100644 db/migrate/20190604184643_fix_pool_repository_source_project_id.rb delete mode 100644 db/migrate/20190605104727_add_default_project_deletion_protection_to_application_settings.rb delete mode 100644 db/migrate/20190605184422_create_namespace_aggregation_schedules.rb delete mode 100644 db/migrate/20190606014128_add_last_ci_minutes_notification_at_to_namespaces.rb delete mode 100644 db/migrate/20190606034427_add_lfs_object_id_index_to_lfs_objects_projects.rb delete mode 100644 db/migrate/20190606054649_change_operations_feature_flags_clients_token_not_null.rb delete mode 100644 db/migrate/20190606054742_add_token_encrypted_to_operations_feature_flags_clients.rb delete mode 100644 db/migrate/20190606054832_add_index_to_operations_feature_flags_clients_token_encrypted.rb delete mode 100644 db/migrate/20190606202100_add_name_to_badges.rb delete mode 100644 db/migrate/20190607085356_add_source_to_pages_domains.rb delete mode 100644 db/migrate/20190607145325_add_pages_domains_ssl_renew_index.rb delete mode 100644 db/migrate/20190607190856_add_index_to_users_public_emails.rb delete mode 100644 db/migrate/20190607205656_add_wiki_columns_to_index_status.rb delete mode 100644 db/migrate/20190610142825_add_index_to_members_invite_email.rb delete mode 100644 db/migrate/20190611090827_add_time_tracking_limit_to_hours_to_application_settings.rb delete mode 100644 db/migrate/20190611100201_add_geo_container_repository_updated_events_table.rb delete mode 100644 db/migrate/20190611100202_add_index_to_geo_event_log.rb delete mode 100644 db/migrate/20190611161641_add_target_project_id_to_merge_trains.rb delete mode 100644 db/migrate/20190612111201_add_geo_container_repository_counters.rb delete mode 100644 db/migrate/20190612111404_add_geo_container_sync_capacity.rb delete mode 100644 db/migrate/20190613030606_enable_hashed_storage_by_default.rb delete mode 100644 db/migrate/20190613044655_add_username_to_deploy_tokens.rb delete mode 100644 db/migrate/20190613073003_create_project_aliases.rb delete mode 100644 db/migrate/20190617123615_add_grafana_to_settings.rb delete mode 100644 db/migrate/20190620105427_change_null_private_profile_to_false.rb delete mode 100644 db/migrate/20190621022810_add_last_ci_minutes_usage_notification_level_to_namespaces.rb delete mode 100644 db/migrate/20190621151636_add_merge_request_rebase_jid.rb delete mode 100644 db/migrate/20190623212503_add_cluster_id_to_deployments.rb delete mode 100644 db/migrate/20190624123615_add_grafana_url_to_settings.rb delete mode 100644 db/migrate/20190625115224_add_description_to_services.rb delete mode 100644 db/migrate/20190626175626_add_group_creation_level_to_namespaces.rb delete mode 100644 db/migrate/20190627051902_add_cluster_id_index_fk_to_deployments.rb delete mode 100644 db/migrate/20190627100221_add_mr_productivity_metrics.rb delete mode 100644 db/migrate/20190627122264_add_foreign_keys_for_container_repository.rb delete mode 100644 db/migrate/20190628145246_add_strategies_to_operations_feature_flag_scopes.rb delete mode 100644 db/migrate/20190628185000_add_released_at_to_releases_table.rb delete mode 100644 db/migrate/20190628185004_backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table.rb delete mode 100644 db/migrate/20190703043358_add_commit_id_to_draft_notes.rb delete mode 100644 db/migrate/20190703130053_remove_gitaly_feature_flags.rb delete mode 100644 db/migrate/20190703171157_add_sourcing_epic_dates.rb delete mode 100644 db/migrate/20190703171555_add_sourcing_epic_dates_fks.rb delete mode 100644 db/migrate/20190709204413_add_rule_type_to_approval_project_rules.rb delete mode 100644 db/migrate/20190709220014_import_common_metrics_y_axis.rb delete mode 100644 db/migrate/20190709220143_add_index_to_issues_relative_position.rb delete mode 100644 db/migrate/20190710151229_add_index_to_approval_project_rules_rule_type.rb delete mode 100644 db/migrate/20190711124721_create_job_variables.rb delete mode 100644 db/migrate/20190711200053_change_deploy_tokens_token_not_null.rb delete mode 100644 db/migrate/20190711200508_add_token_encrypted_to_deploy_tokens.rb delete mode 100644 db/migrate/20190712040400_add_environment_id_to_clusters_kubernetes_namespaces.rb delete mode 100644 db/migrate/20190712040412_index_clusters_kubernetes_namespaces_on_environment_id.rb delete mode 100644 db/migrate/20190712064021_add_namespace_per_environment_flag_to_clusters.rb delete mode 100644 db/migrate/20190715042813_add_issue_id_to_versions.rb delete mode 100644 db/migrate/20190715043954_set_issue_id_for_all_versions.rb delete mode 100644 db/migrate/20190715140740_add_event_type_to_design_management_designs_versions.rb delete mode 100644 db/migrate/20190715142138_add_raw_blob_request_limit_to_application_settings.rb delete mode 100644 db/migrate/20190715173819_add_object_storage_flag_to_geo_node.rb delete mode 100644 db/migrate/20190715215532_add_project_emails_disabled.rb delete mode 100644 db/migrate/20190715215549_add_group_emails_disabled.rb delete mode 100644 db/migrate/20190716144222_create_analytics_cycle_analytics_project_stages.rb delete mode 100644 db/migrate/20190719122333_add_login_recaptcha_protection_enabled_to_application_settings.rb delete mode 100644 db/migrate/20190719174505_add_index_to_deploy_tokens_token_encrypted.rb delete mode 100644 db/migrate/20190722104947_add_static_object_token_to_users.rb delete mode 100644 db/migrate/20190722132830_add_static_objects_external_storage_columns_to_application_settings.rb delete mode 100644 db/migrate/20190722144316_create_milestone_releases_table.rb delete mode 100644 db/migrate/20190723153247_create_allowed_email_domains_for_groups.rb delete mode 100644 db/migrate/20190724112147_add_column_for_self_monitoring_project_id.rb delete mode 100644 db/migrate/20190725012225_change_outbound_local_requests_whitelist_default.rb delete mode 100644 db/migrate/20190725183432_add_index_to_index_on_static_object_token.rb delete mode 100644 db/migrate/20190726101050_rename_allow_local_requests_from_hooks_and_services_application_setting.rb delete mode 100644 db/migrate/20190726101133_add_allow_local_requests_from_system_hooks_to_application_settings.rb delete mode 100644 db/migrate/20190729062536_create_analytics_cycle_analytics_group_stages.rb delete mode 100644 db/migrate/20190729090456_add_index_on_environments_with_state.rb delete mode 100644 db/migrate/20190729180447_add_merge_requests_require_code_owner_approval_to_protected_branches.rb delete mode 100644 db/migrate/20190731084415_add_build_need.rb delete mode 100644 db/migrate/20190801060809_delete_kubernetes_services.rb delete mode 100644 db/migrate/20190801142441_add_throttle_protected_path_columns.rb delete mode 100644 db/migrate/20190801193427_rename_application_settings_snowplow_collector_uri_column.rb delete mode 100644 db/migrate/20190802012622_reorder_issues_project_id_relative_position_index.rb delete mode 100644 db/migrate/20190802195602_add_timestamps_columns_to_geo_nodes.rb delete mode 100644 db/migrate/20190805140353_remove_rendundant_index_from_releases.rb delete mode 100644 db/migrate/20190806071559_remove_epic_issues_default_relative_position.rb delete mode 100644 db/migrate/20190807023052_design_issue_id_nullable.rb delete mode 100644 db/migrate/20190808152507_add_projects_sorting_field_to_user_preferences.rb delete mode 100644 db/migrate/20190814205640_import_common_metrics_line_charts.rb delete mode 100644 db/migrate/20190815093936_add_index_notes_on_project_id_and_id_and_system_false.rb delete mode 100644 db/migrate/20190815093949_remove_index_notes_on_noteable_type.rb delete mode 100644 db/migrate/20190816151221_add_active_jobs_limit_to_plans.rb delete mode 100644 db/migrate/20190819131155_add_cluster_status_index_to_deployments.rb delete mode 100644 db/migrate/20190820163320_add_first_last_name_to_user.rb delete mode 100644 db/migrate/20190821040941_create_cluster_providers_aws.rb delete mode 100644 db/migrate/20190822175441_rename_epics_state_to_state_id.rb delete mode 100644 db/migrate/20190822181528_create_list_user_preferences.rb delete mode 100644 db/migrate/20190823055948_change_clusters_namespace_per_environment_default.rb delete mode 100644 db/migrate/20190826090628_remove_redundant_deployments_index.rb delete mode 100644 db/migrate/20190826100605_add_group_column_to_events.rb delete mode 100644 db/migrate/20190827222124_add_sourcegraph_configuration_to_application_settings.rb delete mode 100644 db/migrate/20190828083843_add_index_to_ci_job_artifacts_on_project_id_for_security_reports.rb delete mode 100644 db/migrate/20190828110802_add_not_null_constraints_to_prometheus_metrics_y_label_and_unit.rb delete mode 100644 db/migrate/20190828170945_create_package_metadatum.rb delete mode 100644 db/migrate/20190828172831_create_package_tag.rb delete mode 100644 db/migrate/20190829131130_create_external_pull_requests.rb delete mode 100644 db/migrate/20190830075508_add_external_pull_request_id_to_ci_pipelines.rb delete mode 100644 db/migrate/20190830080123_add_index_to_ci_pipelines_external_pull_request.rb delete mode 100644 db/migrate/20190830080626_add_foreign_key_to_ci_pipelines_external_pull_request.rb delete mode 100644 db/migrate/20190830140240_add_duplicated_to_to_issue.rb delete mode 100644 db/migrate/20190901174200_add_max_issue_count_to_list.rb delete mode 100644 db/migrate/20190902131045_replace_indexes_for_counting_active_users.rb delete mode 100644 db/migrate/20190902152329_add_index_for_ci_builds_metrics.rb delete mode 100644 db/migrate/20190903150358_create_analytics_repository_files_table.rb delete mode 100644 db/migrate/20190903150435_create_analytics_repository_file_edits_table.rb delete mode 100644 db/migrate/20190904173203_add_index_on_users_unconfirmed_email.rb delete mode 100644 db/migrate/20190905022045_add_issues_prometheus_alert_event_join_table.rb delete mode 100644 db/migrate/20190905074652_index_timestamp_columns_for_issue_metrics.rb delete mode 100644 db/migrate/20190905140605_add_cloud_run_to_clusters_providers_gcp.rb delete mode 100644 db/migrate/20190905223800_add_interruptible_to_builds_metadata.rb delete mode 100644 db/migrate/20190905223900_add_concurrent_index_to_builds_metadata.rb delete mode 100644 db/migrate/20190906104555_create_alerts_service_data.rb delete mode 100644 db/migrate/20190907184714_add_show_whitespace_in_diffs_to_user_preferences.rb delete mode 100644 db/migrate/20190909045845_create_project_pages_metadata.rb delete mode 100644 db/migrate/20190910103144_replace_events_index_on_group_id_with_partial_index.rb delete mode 100644 db/migrate/20190910114843_exclude_nulls_from_index_on_namespaces_type.rb delete mode 100644 db/migrate/20190910125852_create_analytics_language_trend_repository_languages.rb delete mode 100644 db/migrate/20190910211526_create_packages_conan_file_metadata.rb delete mode 100644 db/migrate/20190910212256_add_any_approver_rule_unique_indexes.rb delete mode 100644 db/migrate/20190911115056_add_projects_max_pages_size.rb delete mode 100644 db/migrate/20190911115109_add_namespaces_max_pages_size.rb delete mode 100644 db/migrate/20190911115207_add_projects_max_artifacts_size.rb delete mode 100644 db/migrate/20190911115222_add_namespaces_max_artifacts_size.rb delete mode 100644 db/migrate/20190912061145_add_index_to_members_on_expires_at.rb delete mode 100644 db/migrate/20190912223232_add_role_to_users.rb delete mode 100644 db/migrate/20190913174707_add_spdx_id_to_software_licenses.rb delete mode 100644 db/migrate/20190913175827_add_index_to_software_licenses_on_spdx_id.rb delete mode 100644 db/migrate/20190914223900_modify_concurrent_index_to_builds_metadata.rb delete mode 100644 db/migrate/20190918025618_add_user_and_timestamps_to_design_management_versions.rb delete mode 100644 db/migrate/20190918102042_create_grafana_integrations.rb delete mode 100644 db/migrate/20190918104212_add_merge_request_metrics_merged_at_index.rb delete mode 100644 db/migrate/20190918104731_add_cleanup_status_to_cluster.rb delete mode 100644 db/migrate/20190918121135_add_cleanup_status_reason_to_cluster.rb delete mode 100644 db/migrate/20190919040324_add_successfull_pages_deploy_partial_index_on_ci_builds.rb delete mode 100644 db/migrate/20190919091300_create_evidences.rb delete mode 100644 db/migrate/20190919104119_index_timestamp_columns_for_merge_requests_creation_date.rb delete mode 100644 db/migrate/20190919162036_add_index_to_clusters_providers_gcp_on_cloud_run.rb delete mode 100644 db/migrate/20190919183411_add_index_packages_on_name_trigram_to_packages_packages.rb delete mode 100644 db/migrate/20190920122420_add_max_personal_access_token_lifetime_to_application_settings.rb delete mode 100644 db/migrate/20190920194925_backfill_releases_table_updated_at_and_add_not_null_constraints_to_timestamps.rb delete mode 100644 db/migrate/20190920224341_create_merge_request_context_commits_and_diffs.rb delete mode 100644 db/migrate/20190924124627_add_pull_mirror_branch_prefix_to_projects.rb delete mode 100644 db/migrate/20190925055714_default_request_access_groups.rb delete mode 100644 db/migrate/20190925055902_default_request_access_projects.rb delete mode 100644 db/migrate/20190926041216_add_user_indexes_to_design_management_versions.rb delete mode 100644 db/migrate/20190926225633_create_x509_signatures.rb delete mode 100644 db/migrate/20190927055500_create_description_versions.rb delete mode 100644 db/migrate/20190927055540_add_index_to_sytem_note_metadata_description_version_id.rb delete mode 100644 db/migrate/20190927074328_add_index_on_snippet_content.rb delete mode 100644 db/migrate/20190929180751_create_vulnerabilities.rb delete mode 100644 db/migrate/20190929180813_add_reference_from_vulnerability_occurrences_to_occurrences.rb delete mode 100644 db/migrate/20190929180827_add_foreign_keys_and_indexes_to_vulnerabilities.rb delete mode 100644 db/migrate/20190930025655_add_incident_management_throttle_columns_to_application_setting.rb delete mode 100644 db/migrate/20190930063627_add_management_project_id_to_clusters.rb delete mode 100644 db/migrate/20190930082942_add_new_release_to_notification_settings.rb delete mode 100644 db/migrate/20190930153535_create_zoom_meetings.rb delete mode 100644 db/migrate/20191001040549_add_management_project_id_index_fk_to_clusters.rb delete mode 100644 db/migrate/20191001170300_create_ci_ref.rb delete mode 100644 db/migrate/20191002123516_create_clusters_applications_elastic_stack.rb delete mode 100644 db/migrate/20191003015155_add_self_managed_prometheus_alerts.rb delete mode 100644 db/migrate/20191003060227_add_push_event_hooks_limit_to_application_settings.rb delete mode 100644 db/migrate/20191003064615_create_aws_roles.rb delete mode 100644 db/migrate/20191003130045_create_issue_user_mentions.rb delete mode 100644 db/migrate/20191003150045_create_merge_request_user_mentions.rb delete mode 100644 db/migrate/20191003161031_add_mark_for_deletion_to_projects.rb delete mode 100644 db/migrate/20191003161032_add_mark_for_deletion_indexes_to_projects.rb delete mode 100644 db/migrate/20191003195218_add_pendo_enabled_to_application_settings.rb delete mode 100644 db/migrate/20191003195620_add_pendo_url_to_application_settings.rb delete mode 100644 db/migrate/20191003200045_create_epic_user_mentions.rb delete mode 100644 db/migrate/20191003250045_create_commit_user_mentions.rb delete mode 100644 db/migrate/20191003300045_create_snippet_user_mentions.rb delete mode 100644 db/migrate/20191003350045_create_design_user_mentions.rb delete mode 100644 db/migrate/20191004080818_add_productivity_analytics_start_date.rb delete mode 100644 db/migrate/20191004081520_fill_productivity_analytics_start_date.rb delete mode 100644 db/migrate/20191004133612_create_analytics_repository_file_commits.rb delete mode 100644 db/migrate/20191004151428_add_auto_stop_in_to_environments.rb delete mode 100644 db/migrate/20191008013056_add_push_event_activities_limit_to_application_settings.rb delete mode 100644 db/migrate/20191008142331_add_ref_count_to_push_event_payloads.rb delete mode 100644 db/migrate/20191008180203_add_issuable_state_id_indexes.rb delete mode 100644 db/migrate/20191008200204_add_state_id_default_value.rb delete mode 100644 db/migrate/20191009100244_add_geo_design_repository_counters.rb delete mode 100644 db/migrate/20191009110124_add_has_exposed_artifacts_to_ci_builds_metadata.rb delete mode 100644 db/migrate/20191009110757_add_index_to_ci_builds_metadata_has_exposed_artifacts.rb delete mode 100644 db/migrate/20191009222222_add_custom_http_clone_url_root_to_application_settings.rb delete mode 100644 db/migrate/20191010174846_add_snowplow_iglu_registry_url_to_application_settings.rb delete mode 100644 db/migrate/20191011084019_add_project_deletion_adjourned_period_to_application_settings.rb delete mode 100644 db/migrate/20191013100213_add_squash_commit_sha_to_merge_requests.rb delete mode 100644 db/migrate/20191014025629_rename_design_management_version_user_to_author.rb delete mode 100644 db/migrate/20191014030730_add_author_index_to_design_management_versions.rb delete mode 100644 db/migrate/20191014084150_add_index_on_snippets_project_id_and_visibility_level.rb delete mode 100644 db/migrate/20191014123159_add_expire_notification_delivered_to_personal_access_tokens.rb delete mode 100644 db/migrate/20191014132931_remove_index_on_snippets_project_id.rb delete mode 100644 db/migrate/20191016072826_replace_ci_trigger_requests_index.rb delete mode 100644 db/migrate/20191016133352_create_ci_subscriptions_projects.rb delete mode 100644 db/migrate/20191016220135_add_join_table_for_self_managed_prometheus_alert_issues.rb delete mode 100644 db/migrate/20191017001326_create_users_security_dashboard_projects.rb delete mode 100644 db/migrate/20191017094449_add_remove_source_branch_after_merge_to_projects.rb delete mode 100644 db/migrate/20191017134513_add_deployment_merge_requests.rb delete mode 100644 db/migrate/20191017191341_create_clusters_applications_crossplane.rb delete mode 100644 db/migrate/20191023093207_add_comment_actions_to_services.rb delete mode 100644 db/migrate/20191023132005_add_merge_requests_index_on_target_project_and_branch.rb delete mode 100644 db/migrate/20191023152913_add_default_and_free_plans.rb delete mode 100644 db/migrate/20191024134020_add_index_to_zoom_meetings.rb delete mode 100644 db/migrate/20191025092748_add_secret_token_to_snippet.rb delete mode 100644 db/migrate/20191026041447_change_default_value_of_throttle_protected_paths.rb delete mode 100644 db/migrate/20191026120008_add_promoted_to_epic_to_issues.rb delete mode 100644 db/migrate/20191026120112_add_promoted_to_epic_to_issues_index.rb delete mode 100644 db/migrate/20191026124116_set_application_settings_default_project_and_snippet_visibility.rb delete mode 100644 db/migrate/20191028130054_add_max_issue_weight_to_list.rb delete mode 100644 db/migrate/20191028162543_add_setup_for_company_to_user_preferences.rb delete mode 100644 db/migrate/20191028184740_rename_snowplow_site_id_to_snowplow_app_id.rb delete mode 100644 db/migrate/20191029125305_create_packages_conan_metadata.rb delete mode 100644 db/migrate/20191029191901_add_enabled_to_grafana_integrations.rb delete mode 100644 db/migrate/20191030135044_create_plan_limits.rb delete mode 100644 db/migrate/20191030152934_move_limits_from_plans.rb delete mode 100644 db/migrate/20191031095636_create_project_settings.rb delete mode 100644 db/migrate/20191101092917_replace_index_on_metrics_merged_at.rb delete mode 100644 db/migrate/20191103202505_add_eks_credentials_to_application_settings.rb delete mode 100644 db/migrate/20191104205020_add_license_details_to_application_settings.rb delete mode 100644 db/migrate/20191105094558_add_report_type_to_vulnerabilities.rb delete mode 100644 db/migrate/20191105134413_create_service_desk_settings.rb delete mode 100644 db/migrate/20191105155113_add_secret_to_snippet.rb delete mode 100644 db/migrate/20191105193652_add_index_on_deployments_updated_at.rb delete mode 100644 db/migrate/20191106144901_add_state_to_merge_trains.rb delete mode 100644 db/migrate/20191106150931_add_timelog_spent_at_index.rb delete mode 100644 db/migrate/20191107064946_update_oauth_open_id_requests_foreign_keys.rb delete mode 100644 db/migrate/20191107173446_add_sourcegraph_admin_and_user_preferences.rb delete mode 100644 db/migrate/20191107220314_add_index_to_projects_on_marked_for_deletion.rb delete mode 100644 db/migrate/20191108031900_create_package_build_info.rb delete mode 100644 db/migrate/20191111115229_add_group_id_to_import_export_uploads.rb delete mode 100644 db/migrate/20191111115431_add_group_fk_to_import_export_uploads.rb delete mode 100644 db/migrate/20191111121500_default_ci_config_path.rb delete mode 100644 db/migrate/20191111165017_add_fixed_pipeline_to_notification_settings.rb delete mode 100644 db/migrate/20191111175230_add_index_on_ci_pipelines_updated_at.rb delete mode 100644 db/migrate/20191112090226_add_artifacts_to_ci_build_need.rb delete mode 100644 db/migrate/20191112105448_add_index_on_personal_access_tokens_user_id_and_expires_at.rb delete mode 100644 db/migrate/20191112115247_add_cached_markdown_version_to_vulnerabilities.rb delete mode 100644 db/migrate/20191112212815_create_web_authn_table.rb delete mode 100644 db/migrate/20191112214305_add_indexes_for_projects_api_default_params.rb delete mode 100644 db/migrate/20191112221821_add_indexes_for_projects_api_default_params_authenticated.rb delete mode 100644 db/migrate/20191112232338_ensure_no_empty_milestone_titles.rb delete mode 100644 db/migrate/20191114132259_add_mentions_disabled_to_namespaces.rb delete mode 100644 db/migrate/20191114173508_add_resolved_attributes_to_vulnerabilities.rb delete mode 100644 db/migrate/20191114173602_add_foreign_key_on_resolved_by_id_to_vulnerabilities.rb delete mode 100644 db/migrate/20191114201118_make_created_at_not_null_in_design_management_versions.rb delete mode 100644 db/migrate/20191115001123_add_index_to_mod_sec_ci_variables.rb delete mode 100644 db/migrate/20191115001843_add_index_to_mod_sec_ci_pipeline_variables.rb delete mode 100644 db/migrate/20191115091425_create_vulnerability_issue_links.rb delete mode 100644 db/migrate/20191115114032_add_processed_to_ci_builds.rb delete mode 100644 db/migrate/20191118053631_add_group_deletion_schedules.rb delete mode 100644 db/migrate/20191118155702_add_index_on_status_to_merge_trains.rb delete mode 100644 db/migrate/20191118173522_add_snippet_size_limit_to_application_settings.rb delete mode 100644 db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb delete mode 100644 db/migrate/20191119023952_add_created_at_index_to_snippets.rb delete mode 100644 db/migrate/20191119220425_rename_software_license_policies_approval_status_to_classification.rb delete mode 100644 db/migrate/20191119231621_create_container_expiration_policies.rb delete mode 100644 db/migrate/20191120084627_add_encrypted_fields_to_application_settings.rb delete mode 100644 db/migrate/20191120115530_encrypt_plaintext_attributes_on_application_settings.rb delete mode 100644 db/migrate/20191120200015_add_index_to_grafana_integrations.rb delete mode 100644 db/migrate/20191121111621_create_packages_dependencies.rb delete mode 100644 db/migrate/20191121121947_create_packages_dependency_links.rb delete mode 100644 db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb delete mode 100644 db/migrate/20191121193110_add_issue_links_type.rb delete mode 100644 db/migrate/20191122161519_create_sentry_issues_table.rb delete mode 100644 db/migrate/20191123062354_add_minimum_password_length_to_application_settings.rb delete mode 100644 db/migrate/20191123081456_add_dismissable_to_broadcast_messages.rb delete mode 100644 db/migrate/20191124150431_change_label_id_index_to_include_action_on_label_events.rb delete mode 100644 db/migrate/20191125114345_add_admin_mode_protected_path.rb delete mode 100644 db/migrate/20191125133353_add_target_path_to_broadcast_message.rb delete mode 100644 db/migrate/20191125140458_create_import_failures.rb delete mode 100644 db/migrate/20191126134210_rename_packages_package_tags.rb delete mode 100644 db/migrate/20191127030005_create_serverless_domain_cluster.rb delete mode 100644 db/migrate/20191127151619_create_gitlab_subscription_histories.rb delete mode 100644 db/migrate/20191127151629_add_trial_starts_on_to_gitlab_subscriptions.rb delete mode 100644 db/migrate/20191127163053_add_confidential_to_doorkeeper_application.rb delete mode 100644 db/migrate/20191127221608_add_wildcard_and_domain_type_to_pages_domains.rb delete mode 100644 db/migrate/20191128145231_add_ci_resource_groups.rb delete mode 100644 db/migrate/20191128145232_add_fk_to_ci_resources_build_id.rb delete mode 100644 db/migrate/20191128145233_add_fk_to_ci_resource_groups_project_id.rb delete mode 100644 db/migrate/20191129134844_add_broadcast_type_to_broadcast_message.rb delete mode 100644 db/migrate/20191129144630_add_resource_group_id_to_ci_builds.rb delete mode 100644 db/migrate/20191129144631_add_index_to_resource_group_id.rb delete mode 100644 db/migrate/20191202181924_add_environment_auto_stop_in_to_ci_builds_metadata.rb delete mode 100644 db/migrate/20191203121729_update_group_deletion_schedules_foreign_keys.rb delete mode 100644 db/migrate/20191204070713_change_updated_at_index_and_add_index_to_id_on_deployments.rb delete mode 100644 db/migrate/20191204093410_add_label_project_group_partial_indexes.rb delete mode 100644 db/migrate/20191204192726_add_design_disk_path_to_geo_hashed_storage_migrated_events.rb delete mode 100644 db/migrate/20191205060723_add_index_to_keys.rb delete mode 100644 db/migrate/20191205094702_add_index_for_cross_projects_dependencies_to_ci_builds.rb delete mode 100644 db/migrate/20191205145647_add_index_to_projects_deploy_keys_deploy_key.rb delete mode 100644 db/migrate/20191205212923_support_multiple_milestones_for_issues.rb delete mode 100644 db/migrate/20191205212924_support_multiple_milestones_for_merge_requests.rb delete mode 100644 db/migrate/20191206014412_add_image_to_design_management_designs_versions.rb delete mode 100644 db/migrate/20191206022133_add_indexes_to_pages_domains_on_wildcard_and_domain_type.rb delete mode 100644 db/migrate/20191206122926_update_index_for_pool_repositories.rb delete mode 100644 db/migrate/20191207104000_add_render_whitespace_in_code_to_user_preference.rb delete mode 100644 db/migrate/20191208071111_add_fingerprint_sha256_to_key.rb delete mode 100644 db/migrate/20191208071112_add_fingerprint_sha256_index_to_key.rb delete mode 100644 db/migrate/20191208110214_add_suggestion_commit_message_to_projects.rb delete mode 100644 db/migrate/20191209143606_add_deleted_at_to_description_versions.rb delete mode 100644 db/migrate/20191210211253_create_resource_weight_event.rb delete mode 100644 db/migrate/20191212140117_change_commit_user_mentions_commit_id_column_type.rb delete mode 100644 db/migrate/20191213104838_add_service_desk_username.rb delete mode 100644 db/migrate/20191213120427_fix_max_pages_size.rb delete mode 100644 db/migrate/20191213143656_create_ci_pipelines_config.rb delete mode 100644 db/migrate/20191213184609_backfill_operations_feature_flags_active.rb delete mode 100644 db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb delete mode 100644 db/migrate/20191216074800_add_epic_date_sourcing_milestone_indexes.rb delete mode 100644 db/migrate/20191216074802_add_epic_start_date_sourcing_milestone_id_foreign_key.rb delete mode 100644 db/migrate/20191216074803_add_epic_due_date_sourcing_milestone_id_foreign_key.rb delete mode 100644 db/migrate/20191216094119_add_id_to_plan_limits.rb delete mode 100644 db/migrate/20191216183531_add_project_hooks_to_plan_limits.rb delete mode 100644 db/migrate/20191216183532_insert_project_hooks_plan_limits.rb delete mode 100644 db/migrate/20191217165641_add_saml_provider_prohibited_outer_forks.rb delete mode 100644 db/migrate/20191217212348_add_modsecurity_enabled_to_ingress_application.rb delete mode 100644 db/migrate/20191218084115_add_updating_name_disabled_for_users_to_application_settings.rb delete mode 100644 db/migrate/20191218122457_add_force_pages_access_control_to_application_settings.rb delete mode 100644 db/migrate/20191218124915_add_repository_storage_to_snippets.rb delete mode 100644 db/migrate/20191218125015_add_storage_version_to_snippets.rb delete mode 100644 db/migrate/20191218190253_add_tab_width_to_user_preferences.rb delete mode 100644 db/migrate/20191223124940_add_scheduling_type_to_ci_builds.rb delete mode 100644 db/migrate/20191225071320_add_index_to_elasticsearch_indexed_namespaces.rb delete mode 100644 db/migrate/20191227140254_update_personal_access_tokens_user_id_foreign_key.rb delete mode 100644 db/migrate/20191229140154_drop_index_ci_pipelines_on_project_id.rb create mode 100644 db/migrate/20210819185500_create_external_audit_event_destinations_table.rb create mode 100644 db/migrate/20210908195506_add_data_to_vulnerability_finding_evidence.rb create mode 100644 db/migrate/20210910014741_add_dependency_proxy_ttl_group_policy_worker_capacity_to_application_settings.rb create mode 100644 db/migrate/20210910015047_add_app_settings_dep_proxy_ttl_worker_capacity_check_constraint.rb create mode 100644 db/migrate/20210910192921_add_report_type_into_approval_project_rules.rb create mode 100644 db/migrate/20210912034903_add_runner_features_to_ci_builds_metadata.rb create mode 100644 db/migrate/20210913224558_update_dependency_proxy_manifests_uniqueness_constraint.rb create mode 100644 db/migrate/20210914145810_add_throttle_deprecated_api_columns.rb create mode 100644 db/migrate/20210914172202_add_status_index_to_dependency_proxy_tables.rb create mode 100644 db/migrate/20210915000453_add_index_on_clusters_integration_prometheus_enabled.rb create mode 100644 db/migrate/20210915001242_add_index_on_clusters_integration_elastic_stack_enabled.rb create mode 100644 db/migrate/20210915070423_add_avatar_and_description_to_topic.rb create mode 100644 db/migrate/20210916132547_add_process_mode_to_resource_groups.rb create mode 100644 db/migrate/20210917134321_remove_temporary_index_for_project_topics_on_taggings.rb create mode 100644 db/migrate/20210917153645_remove_pipeline_fk_from_packages_build_infos.rb create mode 100644 db/migrate/20210917153905_remove_pipeline_fk_from_packages_package_file_build_infos.rb create mode 100644 db/migrate/20210917224419_add_registration_objective_to_user_detail.rb create mode 100644 db/migrate/20210920104446_add_text_limit_to_topics_description_and_avatar.rb create mode 100644 db/migrate/20210921032008_add_suggest_pipeline_enabled_to_application_settings.rb create mode 100644 db/migrate/20210921063924_index_labels_using_varchar_pattern_ops.rb create mode 100644 db/migrate/20210921191010_add_report_type_index_into_approval_project_rules.rb create mode 100644 db/migrate/20210922172056_add_unique_namespaces_index_on_name_parent_id_and_type.rb create mode 100644 db/migrate/20210922172156_drop_unique_namespaces_index_on_name_and_parent_id.rb create mode 100644 db/migrate/20210922215740_create_issue_customer_relations_contacts.rb create mode 100644 db/migrate/20210922220104_add_issue_customer_relations_contacts_foreign_keys.rb create mode 100644 db/migrate/20210923042323_add_meta_data_to_user_credit_card_validations.rb create mode 100644 db/migrate/20210923042324_limit_holder_name_on_user_credit_card_validations.rb create mode 100644 db/migrate/20210923042325_index_meta_data_on_user_credit_card_validations.rb create mode 100644 db/migrate/20210923151641_change_default_for_integrated_error_tracking.rb create mode 100644 db/migrate/20210928155022_improve_index_for_error_tracking.rb create mode 100644 db/migrate/20210928171122_add_group_id_status_id_index_to_dependency_proxy_tables.rb create mode 100644 db/migrate/20210929025600_add_phone_to_user_details.rb create mode 100644 db/migrate/20210929030834_add_text_limit_to_user_details_phone.rb create mode 100644 db/migrate/20210929031049_add_unique_index_phone_on_user_details.rb create mode 100644 db/migrate/20210929032555_create_verification_codes.rb create mode 100644 db/migrate/20210929115340_add_security_policy_configurations_management_project_id_foreign_key.rb create mode 100644 db/migrate/20210929121516_add_releases_author_id_id_created_at_index.rb create mode 100644 db/migrate/20210930081208_fix_deprecated_api_throttle_defaults.rb create mode 100644 db/migrate/20211001001222_add_source_version_to_bulk_imports.rb create mode 100644 db/migrate/20211004062942_create_coverage_fuzzing_corpuses.rb create mode 100644 db/migrate/20211004075629_add_topics_name_gin_index.rb create mode 100644 db/migrate/20211004081911_add_external_event_destination_limit_to_plan_limits.rb create mode 100644 db/migrate/20211005063519_add_foreign_key_to_corpuses_on_project.rb create mode 100644 db/migrate/20211005063616_add_foreign_key_to_corpuses_on_user.rb create mode 100644 db/migrate/20211005063723_add_foreign_key_to_corpuses_on_package.rb create mode 100644 db/migrate/20211005092428_drop_time_range_partitioned_loose_fk.rb create mode 100644 db/migrate/20211005093558_add_range_partitioned_loose_fk_table.rb create mode 100644 db/migrate/20211005100112_recreate_loose_fk_insert_function.rb create mode 100644 db/migrate/20211006060254_add_topics_total_projects_count_cache.rb create mode 100644 db/migrate/20211006103122_change_helm_channel_length.rb create mode 100644 db/migrate/20211006122010_add_topics_total_projects_count_index.rb create mode 100644 db/migrate/20211007113136_add_status_column_to_security_scans_table.rb create mode 100644 db/migrate/20211008181451_add_shared_runners_duration_to_ci_namespace_monthly_usages.rb create mode 100644 db/migrate/20211008182954_add_shared_runners_duration_to_ci_project_monthly_usages.rb create mode 100644 db/migrate/20211012091822_add_text_limit_to_bulk_imports_source_version.rb delete mode 100644 db/post_migrate/20190102152410_delete_inconsistent_internal_id_records2.rb delete mode 100644 db/post_migrate/20190115054215_migrate_delete_container_repository_worker.rb delete mode 100644 db/post_migrate/20190124200344_migrate_storage_migrator_sidekiq_queue.rb delete mode 100644 db/post_migrate/20190131122559_fix_null_type_labels.rb delete mode 100644 db/post_migrate/20190204115450_migrate_auto_dev_ops_domain_to_cluster_domain.rb delete mode 100644 db/post_migrate/20190214112022_schedule_sync_issuables_state_id.rb delete mode 100644 db/post_migrate/20190301081611_migrate_project_migrate_sidekiq_queue.rb delete mode 100644 db/post_migrate/20190313092516_clean_up_noteable_id_for_notes_on_commits.rb delete mode 100644 db/post_migrate/20190322132835_schedule_populate_merge_request_assignees_table.rb delete mode 100644 db/post_migrate/20190325111602_rename_v2_root_namespaces.rb delete mode 100644 db/post_migrate/20190404143330_add_unique_constraint_to_approvals_user_id_and_merge_request_id.rb delete mode 100644 db/post_migrate/20190404231137_remove_alternate_url_from_geo_nodes.rb delete mode 100644 db/post_migrate/20190418132125_populate_project_statistics_packages_size.rb delete mode 100644 db/post_migrate/20190424134256_drop_projects_ci_id.rb delete mode 100644 db/post_migrate/20190506135400_schedule_sync_issuables_state_id_where_nil.rb delete mode 100644 db/post_migrate/20190511144331_remove_users_support_type.rb delete mode 100644 db/post_migrate/20190517153211_migrate_k8s_service_integration.rb delete mode 100644 db/post_migrate/20190520201748_populate_rule_type_on_approval_merge_request_rules.rb delete mode 100644 db/post_migrate/20190522143720_drop_project_auto_devops_domain.rb delete mode 100644 db/post_migrate/20190524073827_schedule_fill_valid_time_for_pages_domain_certificates.rb delete mode 100644 db/post_migrate/20190527194900_schedule_calculate_wiki_sizes.rb delete mode 100644 db/post_migrate/20190528180441_enqueue_reset_merge_status.rb delete mode 100644 db/post_migrate/20190606163724_migrate_legacy_managed_clusters_to_unmanaged.rb delete mode 100644 db/post_migrate/20190606175050_encrypt_feature_flags_clients_tokens.rb delete mode 100644 db/post_migrate/20190611161642_add_index_to_events_and_audit_events_created_at_author_id.rb delete mode 100644 db/post_migrate/20190613231640_migrate_managed_clusters_with_no_token_to_unmanaged.rb delete mode 100644 db/post_migrate/20190618171120_update_geo_nodes_primary.rb delete mode 100644 db/post_migrate/20190619175843_remove_import_columns_from_projects.rb delete mode 100644 db/post_migrate/20190620112608_enqueue_reset_merge_status_second_run.rb delete mode 100644 db/post_migrate/20190625184066_remove_sentry_from_application_settings.rb delete mode 100644 db/post_migrate/20190628191740_schedule_fixing_names_of_user_namespaces.rb delete mode 100644 db/post_migrate/20190702173936_populate_remaining_merge_request_assignees.rb delete mode 100644 db/post_migrate/20190703185326_fix_wrong_pages_access_level.rb delete mode 100644 db/post_migrate/20190711201818_encrypt_deploy_tokens_tokens.rb delete mode 100644 db/post_migrate/20190715043944_remove_sha_index_from_versions.rb delete mode 100644 db/post_migrate/20190715044501_add_unique_issue_id_sha_index_to_versions.rb delete mode 100644 db/post_migrate/20190715114644_drop_project_features_pages_access_level_default.rb delete mode 100644 db/post_migrate/20190715193142_migrate_discussion_id_on_promoted_epics.rb delete mode 100644 db/post_migrate/20190723105753_add_index_on_identities_lower_extern_uid_and_provider.rb delete mode 100644 db/post_migrate/20190725080128_set_not_null_on_users_private_profile.rb delete mode 100644 db/post_migrate/20190801114109_cleanup_allow_local_requests_from_hooks_and_services_application_setting_rename.rb delete mode 100644 db/post_migrate/20190802091750_cleanup_application_settings_snowplow_collector_uri_rename.rb delete mode 100644 db/post_migrate/20190802235445_add_index_on_id_and_type_and_public_to_keys.rb delete mode 100644 db/post_migrate/20190809072552_set_self_monitoring_project_alerting_token.rb delete mode 100644 db/post_migrate/20190812070645_migrate_private_profile_nulls.rb delete mode 100644 db/post_migrate/20190819231552_update_knative_prometheus_query_for_invocation_count.rb delete mode 100644 db/post_migrate/20190822185441_cleanup_epics_state_id_rename.rb delete mode 100644 db/post_migrate/20190827102026_migrate_code_owner_approval_status_to_protected_branches_in_batches.rb delete mode 100644 db/post_migrate/20190902160015_remove_support_bot_column_from_users.rb delete mode 100644 db/post_migrate/20190904205212_remove_id_column_from_intermediate_release_milestones.rb delete mode 100644 db/post_migrate/20190905091812_schedule_project_any_approval_rule_migration.rb delete mode 100644 db/post_migrate/20190905091831_schedule_merge_request_any_approval_rule_migration.rb delete mode 100644 db/post_migrate/20190909141517_update_cs_vulnerability_confidence_column.rb delete mode 100644 db/post_migrate/20190910000130_add_index_on_application_id_on_oauth_access_tokens.rb delete mode 100644 db/post_migrate/20190911251732_sync_issuables_state_id.rb delete mode 100644 db/post_migrate/20190917173107_backfill_software_licenses_spdx_identifiers.rb delete mode 100644 db/post_migrate/20190918104222_schedule_productivity_analytics_backfill.rb delete mode 100644 db/post_migrate/20190924152703_migrate_issue_trackers_data.rb delete mode 100644 db/post_migrate/20190926180443_schedule_epic_issues_after_epics_move.rb delete mode 100644 db/post_migrate/20191002031332_schedule_pages_metadata_migration.rb delete mode 100644 db/post_migrate/20191007163701_populate_remaining_any_approver_rules_for_merge_requests.rb delete mode 100644 db/post_migrate/20191007163736_populate_remaining_any_approver_rules_for_projects.rb delete mode 100644 db/post_migrate/20191008143850_fix_any_approver_rule_for_projects.rb delete mode 100644 db/post_migrate/20191014030134_cleanup_design_management_version_user_to_author_rename.rb delete mode 100644 db/post_migrate/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects.rb delete mode 100644 db/post_migrate/20191017045817_schedule_fix_gitlab_com_pages_access_level.rb delete mode 100644 db/post_migrate/20191017180026_drop_ci_build_trace_sections_id.rb delete mode 100644 db/post_migrate/20191021101942_remove_empty_github_service_templates.rb delete mode 100644 db/post_migrate/20191022113635_nullify_feature_flag_plaintext_tokens.rb delete mode 100644 db/post_migrate/20191029095537_cleanup_application_settings_snowplow_site_id_rename.rb delete mode 100644 db/post_migrate/20191030193050_remove_pendo_from_application_settings.rb delete mode 100644 db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb delete mode 100644 db/post_migrate/20191031112603_remove_limits_from_plans.rb delete mode 100644 db/post_migrate/20191104142124_nullify_users_role.rb delete mode 100644 db/post_migrate/20191105094625_set_report_type_for_vulnerabilities.rb delete mode 100644 db/post_migrate/20191105140942_add_indices_to_abuse_reports.rb delete mode 100644 db/post_migrate/20191108202723_add_unique_constraint_to_software_licenses.rb delete mode 100644 db/post_migrate/20191112023159_complete_pages_metadata_migration.rb delete mode 100644 db/post_migrate/20191112115317_change_vulnerabilities_title_html_to_nullable.rb delete mode 100644 db/post_migrate/20191114173624_set_resolved_state_on_vulnerabilities.rb delete mode 100644 db/post_migrate/20191114204343_remove_milestone_id_from_epics.rb delete mode 100644 db/post_migrate/20191115115043_migrate_epic_mentions_to_db.rb delete mode 100644 db/post_migrate/20191115115522_migrate_epic_notes_mentions_to_db.rb delete mode 100644 db/post_migrate/20191118211629_migrate_ops_feature_flags_scopes_target_user_ids.rb delete mode 100644 db/post_migrate/20191119221041_cleanup_software_license_policies_classification_rename.rb delete mode 100644 db/post_migrate/20191121122856_drop_packages_package_metadata_table.rb delete mode 100644 db/post_migrate/20191122135327_remove_plaintext_columns_from_application_settings.rb delete mode 100644 db/post_migrate/20191125024005_cleanup_deploy_access_levels_for_removed_groups.rb delete mode 100644 db/post_migrate/20191128162854_drop_project_ci_cd_settings_merge_trains_enabled.rb delete mode 100644 db/post_migrate/20191202031812_drop_operations_feature_flags_clients_token.rb delete mode 100644 db/post_migrate/20191204114127_delete_legacy_triggers.rb delete mode 100644 db/post_migrate/20191205084057_update_minimum_password_length.rb delete mode 100644 db/post_migrate/20191209215316_knative_0_9_prometheus_update.rb delete mode 100644 db/post_migrate/20191212162434_change_commit_user_mentions_commit_id_column_type_cleanup.rb delete mode 100644 db/post_migrate/20191218225624_add_index_on_project_id_to_ci_pipelines.rb create mode 100644 db/post_migrate/20210906130643_drop_temporary_columns_and_triggers_for_taggings.rb create mode 100644 db/post_migrate/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata.rb create mode 100644 db/post_migrate/20210910194952_update_report_type_for_existing_approval_project_rules.rb create mode 100644 db/post_migrate/20210915022415_cleanup_bigint_conversion_for_ci_builds.rb create mode 100644 db/post_migrate/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid.rb create mode 100644 db/post_migrate/20210918202855_reschedule_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid.rb create mode 100644 db/post_migrate/20210920232025_remove_ci_builds_foreign_key_from_terraform_state_versions.rb create mode 100644 db/post_migrate/20210921062820_add_image_location_index_to_vulnerability_occurrences.rb create mode 100644 db/post_migrate/20210922021816_drop_int4_columns_for_ci_job_artifacts.rb create mode 100644 db/post_migrate/20210922025631_drop_int4_column_for_ci_sources_pipelines.rb create mode 100644 db/post_migrate/20210922082019_drop_int4_column_for_events.rb create mode 100644 db/post_migrate/20210922084115_concurrent_index_resource_group_status_commit_id_for_ci_builds.rb create mode 100644 db/post_migrate/20210922091402_drop_int4_column_for_push_event_payloads.rb create mode 100644 db/post_migrate/20210923133143_remove_redundant_taggings_index.rb create mode 100644 db/post_migrate/20210923135909_remove_delayed_project_removal_from_namespaces.rb create mode 100644 db/post_migrate/20210927153807_update_issues_relative_position_indexes.rb create mode 100644 db/post_migrate/20211004110500_add_temporary_index_to_issue_metrics.rb create mode 100644 db/post_migrate/20211004110927_schedule_fix_first_mentioned_in_commit_at_job.rb create mode 100644 db/post_migrate/20211004151202_remove_bio_html_from_user_details.rb create mode 100644 db/post_migrate/20211005010101_rereschedule_delete_orphaned_deployments.rb create mode 100644 db/post_migrate/20211005083015_recreate_index_security_ci_builds_on_name_and_id_parser_features.rb create mode 100644 db/post_migrate/20211006060436_schedule_populate_topics_total_projects_count_cache.rb create mode 100644 db/post_migrate/20211006145004_finalize_indexes_for_ci_job_artifacts_expire_at_unlocked.rb create mode 100644 db/post_migrate/20211006174114_add_namespace_index_on_type_sync.rb create mode 100644 db/post_migrate/20211007093340_remove_analytics_snapshots_segment_id_column.rb create mode 100644 db/post_migrate/20211007155221_schedule_populate_status_column_of_security_scans.rb create mode 100644 db/post_migrate/20211011152701_cleanup_delete_orphaned_deployments_background_migration.rb create mode 100644 db/post_migrate/20211012155931_remove_schedule_and_status_from_pending_alert_escalations.rb delete mode 100644 db/schema_migrations/20190102152410 delete mode 100644 db/schema_migrations/20190103140724 delete mode 100644 db/schema_migrations/20190104182041 delete mode 100644 db/schema_migrations/20190107151020 delete mode 100644 db/schema_migrations/20190108192941 delete mode 100644 db/schema_migrations/20190109153125 delete mode 100644 db/schema_migrations/20190114172110 delete mode 100644 db/schema_migrations/20190115054215 delete mode 100644 db/schema_migrations/20190115054216 delete mode 100644 db/schema_migrations/20190115092821 delete mode 100644 db/schema_migrations/20190116234221 delete mode 100644 db/schema_migrations/20190124200344 delete mode 100644 db/schema_migrations/20190130091630 delete mode 100644 db/schema_migrations/20190131122559 delete mode 100644 db/schema_migrations/20190204115450 delete mode 100644 db/schema_migrations/20190206193120 delete mode 100644 db/schema_migrations/20190211131150 delete mode 100644 db/schema_migrations/20190214112022 delete mode 100644 db/schema_migrations/20190215154930 delete mode 100644 db/schema_migrations/20190218134158 delete mode 100644 db/schema_migrations/20190218134209 delete mode 100644 db/schema_migrations/20190219201635 delete mode 100644 db/schema_migrations/20190220142344 delete mode 100644 db/schema_migrations/20190220150130 delete mode 100644 db/schema_migrations/20190222051615 delete mode 100644 db/schema_migrations/20190225152525 delete mode 100644 db/schema_migrations/20190225160301 delete mode 100644 db/schema_migrations/20190228192410 delete mode 100644 db/schema_migrations/20190301081611 delete mode 100644 db/schema_migrations/20190301182457 delete mode 100644 db/schema_migrations/20190312071108 delete mode 100644 db/schema_migrations/20190312113229 delete mode 100644 db/schema_migrations/20190312113634 delete mode 100644 db/schema_migrations/20190313092516 delete mode 100644 db/schema_migrations/20190315191339 delete mode 100644 db/schema_migrations/20190320174702 delete mode 100644 db/schema_migrations/20190322132835 delete mode 100644 db/schema_migrations/20190322164830 delete mode 100644 db/schema_migrations/20190325080727 delete mode 100644 db/schema_migrations/20190325105715 delete mode 100644 db/schema_migrations/20190325111602 delete mode 100644 db/schema_migrations/20190325165127 delete mode 100644 db/schema_migrations/20190326164045 delete mode 100644 db/schema_migrations/20190327163904 delete mode 100644 db/schema_migrations/20190329085614 delete mode 100644 db/schema_migrations/20190402150158 delete mode 100644 db/schema_migrations/20190403161806 delete mode 100644 db/schema_migrations/20190404143330 delete mode 100644 db/schema_migrations/20190404231137 delete mode 100644 db/schema_migrations/20190408163745 delete mode 100644 db/schema_migrations/20190409224933 delete mode 100644 db/schema_migrations/20190410173409 delete mode 100644 db/schema_migrations/20190412155659 delete mode 100644 db/schema_migrations/20190412183653 delete mode 100644 db/schema_migrations/20190414185432 delete mode 100644 db/schema_migrations/20190415030217 delete mode 100644 db/schema_migrations/20190415095825 delete mode 100644 db/schema_migrations/20190415172035 delete mode 100644 db/schema_migrations/20190416185130 delete mode 100644 db/schema_migrations/20190416213556 delete mode 100644 db/schema_migrations/20190416213615 delete mode 100644 db/schema_migrations/20190416213631 delete mode 100644 db/schema_migrations/20190418132125 delete mode 100644 db/schema_migrations/20190418132750 delete mode 100644 db/schema_migrations/20190418182545 delete mode 100644 db/schema_migrations/20190419121952 delete mode 100644 db/schema_migrations/20190419123057 delete mode 100644 db/schema_migrations/20190422082247 delete mode 100644 db/schema_migrations/20190423124640 delete mode 100644 db/schema_migrations/20190424134256 delete mode 100644 db/schema_migrations/20190426180107 delete mode 100644 db/schema_migrations/20190429082448 delete mode 100644 db/schema_migrations/20190430131225 delete mode 100644 db/schema_migrations/20190430142025 delete mode 100644 db/schema_migrations/20190506135337 delete mode 100644 db/schema_migrations/20190506135400 delete mode 100644 db/schema_migrations/20190511144331 delete mode 100644 db/schema_migrations/20190513174947 delete mode 100644 db/schema_migrations/20190514105711 delete mode 100644 db/schema_migrations/20190515125613 delete mode 100644 db/schema_migrations/20190516011213 delete mode 100644 db/schema_migrations/20190516151857 delete mode 100644 db/schema_migrations/20190516155724 delete mode 100644 db/schema_migrations/20190517153211 delete mode 100644 db/schema_migrations/20190520200123 delete mode 100644 db/schema_migrations/20190520201748 delete mode 100644 db/schema_migrations/20190521174505 delete mode 100644 db/schema_migrations/20190522143720 delete mode 100644 db/schema_migrations/20190523112344 delete mode 100644 db/schema_migrations/20190524062810 delete mode 100644 db/schema_migrations/20190524071727 delete mode 100644 db/schema_migrations/20190524073827 delete mode 100644 db/schema_migrations/20190527011309 delete mode 100644 db/schema_migrations/20190527194830 delete mode 100644 db/schema_migrations/20190527194900 delete mode 100644 db/schema_migrations/20190528173628 delete mode 100644 db/schema_migrations/20190528180441 delete mode 100644 db/schema_migrations/20190529142545 delete mode 100644 db/schema_migrations/20190530042141 delete mode 100644 db/schema_migrations/20190530154715 delete mode 100644 db/schema_migrations/20190531153110 delete mode 100644 db/schema_migrations/20190602014139 delete mode 100644 db/schema_migrations/20190603124955 delete mode 100644 db/schema_migrations/20190604091310 delete mode 100644 db/schema_migrations/20190604184643 delete mode 100644 db/schema_migrations/20190605104727 delete mode 100644 db/schema_migrations/20190605184422 delete mode 100644 db/schema_migrations/20190606014128 delete mode 100644 db/schema_migrations/20190606034427 delete mode 100644 db/schema_migrations/20190606054649 delete mode 100644 db/schema_migrations/20190606054742 delete mode 100644 db/schema_migrations/20190606054832 delete mode 100644 db/schema_migrations/20190606163724 delete mode 100644 db/schema_migrations/20190606175050 delete mode 100644 db/schema_migrations/20190606202100 delete mode 100644 db/schema_migrations/20190607085356 delete mode 100644 db/schema_migrations/20190607145325 delete mode 100644 db/schema_migrations/20190607190856 delete mode 100644 db/schema_migrations/20190607205656 delete mode 100644 db/schema_migrations/20190610142825 delete mode 100644 db/schema_migrations/20190611090827 delete mode 100644 db/schema_migrations/20190611100201 delete mode 100644 db/schema_migrations/20190611100202 delete mode 100644 db/schema_migrations/20190611161641 delete mode 100644 db/schema_migrations/20190611161642 delete mode 100644 db/schema_migrations/20190612111201 delete mode 100644 db/schema_migrations/20190612111404 delete mode 100644 db/schema_migrations/20190613030606 delete mode 100644 db/schema_migrations/20190613044655 delete mode 100644 db/schema_migrations/20190613073003 delete mode 100644 db/schema_migrations/20190613231640 delete mode 100644 db/schema_migrations/20190617123615 delete mode 100644 db/schema_migrations/20190618171120 delete mode 100644 db/schema_migrations/20190619175843 delete mode 100644 db/schema_migrations/20190620105427 delete mode 100644 db/schema_migrations/20190620112608 delete mode 100644 db/schema_migrations/20190621022810 delete mode 100644 db/schema_migrations/20190621151636 delete mode 100644 db/schema_migrations/20190623212503 delete mode 100644 db/schema_migrations/20190624123615 delete mode 100644 db/schema_migrations/20190625115224 delete mode 100644 db/schema_migrations/20190625184066 delete mode 100644 db/schema_migrations/20190626175626 delete mode 100644 db/schema_migrations/20190627051902 delete mode 100644 db/schema_migrations/20190627100221 delete mode 100644 db/schema_migrations/20190627122264 delete mode 100644 db/schema_migrations/20190628145246 delete mode 100644 db/schema_migrations/20190628185000 delete mode 100644 db/schema_migrations/20190628185004 delete mode 100644 db/schema_migrations/20190628191740 delete mode 100644 db/schema_migrations/20190702173936 delete mode 100644 db/schema_migrations/20190703043358 delete mode 100644 db/schema_migrations/20190703130053 delete mode 100644 db/schema_migrations/20190703171157 delete mode 100644 db/schema_migrations/20190703171555 delete mode 100644 db/schema_migrations/20190703185326 delete mode 100644 db/schema_migrations/20190709204413 delete mode 100644 db/schema_migrations/20190709220014 delete mode 100644 db/schema_migrations/20190709220143 delete mode 100644 db/schema_migrations/20190710151229 delete mode 100644 db/schema_migrations/20190711124721 delete mode 100644 db/schema_migrations/20190711200053 delete mode 100644 db/schema_migrations/20190711200508 delete mode 100644 db/schema_migrations/20190711201818 delete mode 100644 db/schema_migrations/20190712040400 delete mode 100644 db/schema_migrations/20190712040412 delete mode 100644 db/schema_migrations/20190712064021 delete mode 100644 db/schema_migrations/20190715042813 delete mode 100644 db/schema_migrations/20190715043944 delete mode 100644 db/schema_migrations/20190715043954 delete mode 100644 db/schema_migrations/20190715044501 delete mode 100644 db/schema_migrations/20190715114644 delete mode 100644 db/schema_migrations/20190715140740 delete mode 100644 db/schema_migrations/20190715142138 delete mode 100644 db/schema_migrations/20190715173819 delete mode 100644 db/schema_migrations/20190715193142 delete mode 100644 db/schema_migrations/20190715215532 delete mode 100644 db/schema_migrations/20190715215549 delete mode 100644 db/schema_migrations/20190716144222 delete mode 100644 db/schema_migrations/20190719122333 delete mode 100644 db/schema_migrations/20190719174505 delete mode 100644 db/schema_migrations/20190722104947 delete mode 100644 db/schema_migrations/20190722132830 delete mode 100644 db/schema_migrations/20190722144316 delete mode 100644 db/schema_migrations/20190723105753 delete mode 100644 db/schema_migrations/20190723153247 delete mode 100644 db/schema_migrations/20190724112147 delete mode 100644 db/schema_migrations/20190725012225 delete mode 100644 db/schema_migrations/20190725080128 delete mode 100644 db/schema_migrations/20190725183432 delete mode 100644 db/schema_migrations/20190726101050 delete mode 100644 db/schema_migrations/20190726101133 delete mode 100644 db/schema_migrations/20190729062536 delete mode 100644 db/schema_migrations/20190729090456 delete mode 100644 db/schema_migrations/20190729180447 delete mode 100644 db/schema_migrations/20190731084415 delete mode 100644 db/schema_migrations/20190801060809 delete mode 100644 db/schema_migrations/20190801114109 delete mode 100644 db/schema_migrations/20190801142441 delete mode 100644 db/schema_migrations/20190801193427 delete mode 100644 db/schema_migrations/20190802012622 delete mode 100644 db/schema_migrations/20190802091750 delete mode 100644 db/schema_migrations/20190802195602 delete mode 100644 db/schema_migrations/20190802235445 delete mode 100644 db/schema_migrations/20190805140353 delete mode 100644 db/schema_migrations/20190806071559 delete mode 100644 db/schema_migrations/20190807023052 delete mode 100644 db/schema_migrations/20190808152507 delete mode 100644 db/schema_migrations/20190809072552 delete mode 100644 db/schema_migrations/20190812070645 delete mode 100644 db/schema_migrations/20190814205640 delete mode 100644 db/schema_migrations/20190815093936 delete mode 100644 db/schema_migrations/20190815093949 delete mode 100644 db/schema_migrations/20190816151221 delete mode 100644 db/schema_migrations/20190819131155 delete mode 100644 db/schema_migrations/20190819231552 delete mode 100644 db/schema_migrations/20190820163320 delete mode 100644 db/schema_migrations/20190821040941 delete mode 100644 db/schema_migrations/20190822175441 delete mode 100644 db/schema_migrations/20190822181528 delete mode 100644 db/schema_migrations/20190822185441 delete mode 100644 db/schema_migrations/20190823055948 delete mode 100644 db/schema_migrations/20190826090628 delete mode 100644 db/schema_migrations/20190826100605 delete mode 100644 db/schema_migrations/20190827102026 delete mode 100644 db/schema_migrations/20190827222124 delete mode 100644 db/schema_migrations/20190828083843 delete mode 100644 db/schema_migrations/20190828110802 delete mode 100644 db/schema_migrations/20190828170945 delete mode 100644 db/schema_migrations/20190828172831 delete mode 100644 db/schema_migrations/20190829131130 delete mode 100644 db/schema_migrations/20190830075508 delete mode 100644 db/schema_migrations/20190830080123 delete mode 100644 db/schema_migrations/20190830080626 delete mode 100644 db/schema_migrations/20190830140240 delete mode 100644 db/schema_migrations/20190901174200 delete mode 100644 db/schema_migrations/20190902131045 delete mode 100644 db/schema_migrations/20190902152329 delete mode 100644 db/schema_migrations/20190902160015 delete mode 100644 db/schema_migrations/20190903150358 delete mode 100644 db/schema_migrations/20190903150435 delete mode 100644 db/schema_migrations/20190904173203 delete mode 100644 db/schema_migrations/20190904205212 delete mode 100644 db/schema_migrations/20190905022045 delete mode 100644 db/schema_migrations/20190905074652 delete mode 100644 db/schema_migrations/20190905091812 delete mode 100644 db/schema_migrations/20190905091831 delete mode 100644 db/schema_migrations/20190905140605 delete mode 100644 db/schema_migrations/20190905223800 delete mode 100644 db/schema_migrations/20190905223900 delete mode 100644 db/schema_migrations/20190906104555 delete mode 100644 db/schema_migrations/20190907184714 delete mode 100644 db/schema_migrations/20190909045845 delete mode 100644 db/schema_migrations/20190909141517 delete mode 100644 db/schema_migrations/20190910000130 delete mode 100644 db/schema_migrations/20190910103144 delete mode 100644 db/schema_migrations/20190910114843 delete mode 100644 db/schema_migrations/20190910125852 delete mode 100644 db/schema_migrations/20190910211526 delete mode 100644 db/schema_migrations/20190910212256 delete mode 100644 db/schema_migrations/20190911115056 delete mode 100644 db/schema_migrations/20190911115109 delete mode 100644 db/schema_migrations/20190911115207 delete mode 100644 db/schema_migrations/20190911115222 delete mode 100644 db/schema_migrations/20190911251732 delete mode 100644 db/schema_migrations/20190912061145 delete mode 100644 db/schema_migrations/20190912223232 delete mode 100644 db/schema_migrations/20190913174707 delete mode 100644 db/schema_migrations/20190913175827 delete mode 100644 db/schema_migrations/20190914223900 delete mode 100644 db/schema_migrations/20190917173107 delete mode 100644 db/schema_migrations/20190918025618 delete mode 100644 db/schema_migrations/20190918102042 delete mode 100644 db/schema_migrations/20190918104212 delete mode 100644 db/schema_migrations/20190918104222 delete mode 100644 db/schema_migrations/20190918104731 delete mode 100644 db/schema_migrations/20190918121135 delete mode 100644 db/schema_migrations/20190919040324 delete mode 100644 db/schema_migrations/20190919091300 delete mode 100644 db/schema_migrations/20190919104119 delete mode 100644 db/schema_migrations/20190919162036 delete mode 100644 db/schema_migrations/20190919183411 delete mode 100644 db/schema_migrations/20190920122420 delete mode 100644 db/schema_migrations/20190920194925 delete mode 100644 db/schema_migrations/20190920224341 delete mode 100644 db/schema_migrations/20190924124627 delete mode 100644 db/schema_migrations/20190924152703 delete mode 100644 db/schema_migrations/20190925055714 delete mode 100644 db/schema_migrations/20190925055902 delete mode 100644 db/schema_migrations/20190926041216 delete mode 100644 db/schema_migrations/20190926180443 delete mode 100644 db/schema_migrations/20190926225633 delete mode 100644 db/schema_migrations/20190927055500 delete mode 100644 db/schema_migrations/20190927055540 delete mode 100644 db/schema_migrations/20190927074328 delete mode 100644 db/schema_migrations/20190929180751 delete mode 100644 db/schema_migrations/20190929180813 delete mode 100644 db/schema_migrations/20190929180827 delete mode 100644 db/schema_migrations/20190930025655 delete mode 100644 db/schema_migrations/20190930063627 delete mode 100644 db/schema_migrations/20190930082942 delete mode 100644 db/schema_migrations/20190930153535 delete mode 100644 db/schema_migrations/20191001040549 delete mode 100644 db/schema_migrations/20191001170300 delete mode 100644 db/schema_migrations/20191002031332 delete mode 100644 db/schema_migrations/20191002123516 delete mode 100644 db/schema_migrations/20191003015155 delete mode 100644 db/schema_migrations/20191003060227 delete mode 100644 db/schema_migrations/20191003064615 delete mode 100644 db/schema_migrations/20191003130045 delete mode 100644 db/schema_migrations/20191003150045 delete mode 100644 db/schema_migrations/20191003161031 delete mode 100644 db/schema_migrations/20191003161032 delete mode 100644 db/schema_migrations/20191003195218 delete mode 100644 db/schema_migrations/20191003195620 delete mode 100644 db/schema_migrations/20191003200045 delete mode 100644 db/schema_migrations/20191003250045 delete mode 100644 db/schema_migrations/20191003300045 delete mode 100644 db/schema_migrations/20191003350045 delete mode 100644 db/schema_migrations/20191004080818 delete mode 100644 db/schema_migrations/20191004081520 delete mode 100644 db/schema_migrations/20191004133612 delete mode 100644 db/schema_migrations/20191004151428 delete mode 100644 db/schema_migrations/20191007163701 delete mode 100644 db/schema_migrations/20191007163736 delete mode 100644 db/schema_migrations/20191008013056 delete mode 100644 db/schema_migrations/20191008142331 delete mode 100644 db/schema_migrations/20191008143850 delete mode 100644 db/schema_migrations/20191008180203 delete mode 100644 db/schema_migrations/20191008200204 delete mode 100644 db/schema_migrations/20191009100244 delete mode 100644 db/schema_migrations/20191009110124 delete mode 100644 db/schema_migrations/20191009110757 delete mode 100644 db/schema_migrations/20191009222222 delete mode 100644 db/schema_migrations/20191010174846 delete mode 100644 db/schema_migrations/20191011084019 delete mode 100644 db/schema_migrations/20191013100213 delete mode 100644 db/schema_migrations/20191014025629 delete mode 100644 db/schema_migrations/20191014030134 delete mode 100644 db/schema_migrations/20191014030730 delete mode 100644 db/schema_migrations/20191014084150 delete mode 100644 db/schema_migrations/20191014123159 delete mode 100644 db/schema_migrations/20191014132931 delete mode 100644 db/schema_migrations/20191015154408 delete mode 100644 db/schema_migrations/20191016072826 delete mode 100644 db/schema_migrations/20191016133352 delete mode 100644 db/schema_migrations/20191016220135 delete mode 100644 db/schema_migrations/20191017001326 delete mode 100644 db/schema_migrations/20191017045817 delete mode 100644 db/schema_migrations/20191017094449 delete mode 100644 db/schema_migrations/20191017134513 delete mode 100644 db/schema_migrations/20191017180026 delete mode 100644 db/schema_migrations/20191017191341 delete mode 100644 db/schema_migrations/20191021101942 delete mode 100644 db/schema_migrations/20191022113635 delete mode 100644 db/schema_migrations/20191023093207 delete mode 100644 db/schema_migrations/20191023132005 delete mode 100644 db/schema_migrations/20191023152913 delete mode 100644 db/schema_migrations/20191024134020 delete mode 100644 db/schema_migrations/20191025092748 delete mode 100644 db/schema_migrations/20191026041447 delete mode 100644 db/schema_migrations/20191026120008 delete mode 100644 db/schema_migrations/20191026120112 delete mode 100644 db/schema_migrations/20191026124116 delete mode 100644 db/schema_migrations/20191028130054 delete mode 100644 db/schema_migrations/20191028162543 delete mode 100644 db/schema_migrations/20191028184740 delete mode 100644 db/schema_migrations/20191029095537 delete mode 100644 db/schema_migrations/20191029125305 delete mode 100644 db/schema_migrations/20191029191901 delete mode 100644 db/schema_migrations/20191030135044 delete mode 100644 db/schema_migrations/20191030152934 delete mode 100644 db/schema_migrations/20191030193050 delete mode 100644 db/schema_migrations/20191030223057 delete mode 100644 db/schema_migrations/20191031095636 delete mode 100644 db/schema_migrations/20191031112603 delete mode 100644 db/schema_migrations/20191101092917 delete mode 100644 db/schema_migrations/20191103202505 delete mode 100644 db/schema_migrations/20191104142124 delete mode 100644 db/schema_migrations/20191104205020 delete mode 100644 db/schema_migrations/20191105094558 delete mode 100644 db/schema_migrations/20191105094625 delete mode 100644 db/schema_migrations/20191105134413 delete mode 100644 db/schema_migrations/20191105140942 delete mode 100644 db/schema_migrations/20191105155113 delete mode 100644 db/schema_migrations/20191105193652 delete mode 100644 db/schema_migrations/20191106144901 delete mode 100644 db/schema_migrations/20191106150931 delete mode 100644 db/schema_migrations/20191107064946 delete mode 100644 db/schema_migrations/20191107173446 delete mode 100644 db/schema_migrations/20191107220314 delete mode 100644 db/schema_migrations/20191108031900 delete mode 100644 db/schema_migrations/20191108202723 delete mode 100644 db/schema_migrations/20191111115229 delete mode 100644 db/schema_migrations/20191111115431 delete mode 100644 db/schema_migrations/20191111121500 delete mode 100644 db/schema_migrations/20191111165017 delete mode 100644 db/schema_migrations/20191111175230 delete mode 100644 db/schema_migrations/20191112023159 delete mode 100644 db/schema_migrations/20191112090226 delete mode 100644 db/schema_migrations/20191112105448 delete mode 100644 db/schema_migrations/20191112115247 delete mode 100644 db/schema_migrations/20191112115317 delete mode 100644 db/schema_migrations/20191112212815 delete mode 100644 db/schema_migrations/20191112214305 delete mode 100644 db/schema_migrations/20191112221821 delete mode 100644 db/schema_migrations/20191112232338 delete mode 100644 db/schema_migrations/20191114132259 delete mode 100644 db/schema_migrations/20191114173508 delete mode 100644 db/schema_migrations/20191114173602 delete mode 100644 db/schema_migrations/20191114173624 delete mode 100644 db/schema_migrations/20191114201118 delete mode 100644 db/schema_migrations/20191114204343 delete mode 100644 db/schema_migrations/20191115001123 delete mode 100644 db/schema_migrations/20191115001843 delete mode 100644 db/schema_migrations/20191115091425 delete mode 100644 db/schema_migrations/20191115114032 delete mode 100644 db/schema_migrations/20191115115043 delete mode 100644 db/schema_migrations/20191115115522 delete mode 100644 db/schema_migrations/20191118053631 delete mode 100644 db/schema_migrations/20191118155702 delete mode 100644 db/schema_migrations/20191118173522 delete mode 100644 db/schema_migrations/20191118182722 delete mode 100644 db/schema_migrations/20191118211629 delete mode 100644 db/schema_migrations/20191119023952 delete mode 100644 db/schema_migrations/20191119220425 delete mode 100644 db/schema_migrations/20191119221041 delete mode 100644 db/schema_migrations/20191119231621 delete mode 100644 db/schema_migrations/20191120084627 delete mode 100644 db/schema_migrations/20191120115530 delete mode 100644 db/schema_migrations/20191120200015 delete mode 100644 db/schema_migrations/20191121111621 delete mode 100644 db/schema_migrations/20191121121947 delete mode 100644 db/schema_migrations/20191121122856 delete mode 100644 db/schema_migrations/20191121161018 delete mode 100644 db/schema_migrations/20191121193110 delete mode 100644 db/schema_migrations/20191122135327 delete mode 100644 db/schema_migrations/20191122161519 delete mode 100644 db/schema_migrations/20191123062354 delete mode 100644 db/schema_migrations/20191123081456 delete mode 100644 db/schema_migrations/20191124150431 delete mode 100644 db/schema_migrations/20191125024005 delete mode 100644 db/schema_migrations/20191125114345 delete mode 100644 db/schema_migrations/20191125133353 delete mode 100644 db/schema_migrations/20191125140458 delete mode 100644 db/schema_migrations/20191126134210 delete mode 100644 db/schema_migrations/20191127030005 delete mode 100644 db/schema_migrations/20191127151619 delete mode 100644 db/schema_migrations/20191127151629 delete mode 100644 db/schema_migrations/20191127163053 delete mode 100644 db/schema_migrations/20191127221608 delete mode 100644 db/schema_migrations/20191128145231 delete mode 100644 db/schema_migrations/20191128145232 delete mode 100644 db/schema_migrations/20191128145233 delete mode 100644 db/schema_migrations/20191128162854 delete mode 100644 db/schema_migrations/20191129134844 delete mode 100644 db/schema_migrations/20191129144630 delete mode 100644 db/schema_migrations/20191129144631 delete mode 100644 db/schema_migrations/20191202031812 delete mode 100644 db/schema_migrations/20191202181924 delete mode 100644 db/schema_migrations/20191203121729 delete mode 100644 db/schema_migrations/20191204070713 delete mode 100644 db/schema_migrations/20191204093410 delete mode 100644 db/schema_migrations/20191204114127 delete mode 100644 db/schema_migrations/20191204192726 delete mode 100644 db/schema_migrations/20191205060723 delete mode 100644 db/schema_migrations/20191205084057 delete mode 100644 db/schema_migrations/20191205094702 delete mode 100644 db/schema_migrations/20191205145647 delete mode 100644 db/schema_migrations/20191205212923 delete mode 100644 db/schema_migrations/20191205212924 delete mode 100644 db/schema_migrations/20191206014412 delete mode 100644 db/schema_migrations/20191206022133 delete mode 100644 db/schema_migrations/20191206122926 delete mode 100644 db/schema_migrations/20191207104000 delete mode 100644 db/schema_migrations/20191208071111 delete mode 100644 db/schema_migrations/20191208071112 delete mode 100644 db/schema_migrations/20191208110214 delete mode 100644 db/schema_migrations/20191209143606 delete mode 100644 db/schema_migrations/20191209215316 delete mode 100644 db/schema_migrations/20191210211253 delete mode 100644 db/schema_migrations/20191212140117 delete mode 100644 db/schema_migrations/20191212162434 delete mode 100644 db/schema_migrations/20191213104838 delete mode 100644 db/schema_migrations/20191213120427 delete mode 100644 db/schema_migrations/20191213143656 delete mode 100644 db/schema_migrations/20191213184609 delete mode 100644 db/schema_migrations/20191214175727 delete mode 100644 db/schema_migrations/20191216074800 delete mode 100644 db/schema_migrations/20191216074802 delete mode 100644 db/schema_migrations/20191216074803 delete mode 100644 db/schema_migrations/20191216094119 delete mode 100644 db/schema_migrations/20191216183531 delete mode 100644 db/schema_migrations/20191216183532 delete mode 100644 db/schema_migrations/20191217165641 delete mode 100644 db/schema_migrations/20191217212348 delete mode 100644 db/schema_migrations/20191218084115 delete mode 100644 db/schema_migrations/20191218122457 delete mode 100644 db/schema_migrations/20191218124915 delete mode 100644 db/schema_migrations/20191218125015 delete mode 100644 db/schema_migrations/20191218190253 delete mode 100644 db/schema_migrations/20191218225624 delete mode 100644 db/schema_migrations/20191223124940 delete mode 100644 db/schema_migrations/20191225071320 delete mode 100644 db/schema_migrations/20191227140254 delete mode 100644 db/schema_migrations/20191229140154 create mode 100644 db/schema_migrations/20210819185500 create mode 100644 db/schema_migrations/20210906130643 create mode 100644 db/schema_migrations/20210907013944 create mode 100644 db/schema_migrations/20210908195506 create mode 100644 db/schema_migrations/20210910014741 create mode 100644 db/schema_migrations/20210910015047 create mode 100644 db/schema_migrations/20210910192921 create mode 100644 db/schema_migrations/20210910194952 create mode 100644 db/schema_migrations/20210912034903 create mode 100644 db/schema_migrations/20210913224558 create mode 100644 db/schema_migrations/20210914145810 create mode 100644 db/schema_migrations/20210914172202 create mode 100644 db/schema_migrations/20210915000453 create mode 100644 db/schema_migrations/20210915001242 create mode 100644 db/schema_migrations/20210915022415 create mode 100644 db/schema_migrations/20210915070423 create mode 100644 db/schema_migrations/20210916132547 create mode 100644 db/schema_migrations/20210917134321 create mode 100644 db/schema_migrations/20210917153645 create mode 100644 db/schema_migrations/20210917153905 create mode 100644 db/schema_migrations/20210917224419 create mode 100644 db/schema_migrations/20210918201050 create mode 100644 db/schema_migrations/20210918202855 create mode 100644 db/schema_migrations/20210920104446 create mode 100644 db/schema_migrations/20210920232025 create mode 100644 db/schema_migrations/20210921032008 create mode 100644 db/schema_migrations/20210921062820 create mode 100644 db/schema_migrations/20210921063924 create mode 100644 db/schema_migrations/20210921191010 create mode 100644 db/schema_migrations/20210922021816 create mode 100644 db/schema_migrations/20210922025631 create mode 100644 db/schema_migrations/20210922082019 create mode 100644 db/schema_migrations/20210922084115 create mode 100644 db/schema_migrations/20210922091402 create mode 100644 db/schema_migrations/20210922172056 create mode 100644 db/schema_migrations/20210922172156 create mode 100644 db/schema_migrations/20210922215740 create mode 100644 db/schema_migrations/20210922220104 create mode 100644 db/schema_migrations/20210923042323 create mode 100644 db/schema_migrations/20210923042324 create mode 100644 db/schema_migrations/20210923042325 create mode 100644 db/schema_migrations/20210923133143 create mode 100644 db/schema_migrations/20210923135909 create mode 100644 db/schema_migrations/20210923151641 create mode 100644 db/schema_migrations/20210927153807 create mode 100644 db/schema_migrations/20210928155022 create mode 100644 db/schema_migrations/20210928171122 create mode 100644 db/schema_migrations/20210929025600 create mode 100644 db/schema_migrations/20210929030834 create mode 100644 db/schema_migrations/20210929031049 create mode 100644 db/schema_migrations/20210929032555 create mode 100644 db/schema_migrations/20210929115340 create mode 100644 db/schema_migrations/20210929121516 create mode 100644 db/schema_migrations/20210930081208 create mode 100644 db/schema_migrations/20211001001222 create mode 100644 db/schema_migrations/20211004062942 create mode 100644 db/schema_migrations/20211004075629 create mode 100644 db/schema_migrations/20211004081911 create mode 100644 db/schema_migrations/20211004110500 create mode 100644 db/schema_migrations/20211004110927 create mode 100644 db/schema_migrations/20211004151202 create mode 100644 db/schema_migrations/20211005010101 create mode 100644 db/schema_migrations/20211005063519 create mode 100644 db/schema_migrations/20211005063616 create mode 100644 db/schema_migrations/20211005063723 create mode 100644 db/schema_migrations/20211005083015 create mode 100644 db/schema_migrations/20211005092428 create mode 100644 db/schema_migrations/20211005093558 create mode 100644 db/schema_migrations/20211005100112 create mode 100644 db/schema_migrations/20211006060254 create mode 100644 db/schema_migrations/20211006060436 create mode 100644 db/schema_migrations/20211006103122 create mode 100644 db/schema_migrations/20211006122010 create mode 100644 db/schema_migrations/20211006145004 create mode 100644 db/schema_migrations/20211006174114 create mode 100644 db/schema_migrations/20211007093340 create mode 100644 db/schema_migrations/20211007113136 create mode 100644 db/schema_migrations/20211007155221 create mode 100644 db/schema_migrations/20211008181451 create mode 100644 db/schema_migrations/20211008182954 create mode 100644 db/schema_migrations/20211011152701 create mode 100644 db/schema_migrations/20211012091822 create mode 100644 db/schema_migrations/20211012155931 create mode 100644 doc/.vale/vale-json.tmpl delete mode 100644 doc/README.md delete mode 100644 doc/administration/auth/README.md delete mode 100644 doc/administration/monitoring/performance/img/performance_bar_v14_0.png create mode 100644 doc/administration/monitoring/performance/img/performance_bar_v14_4.png create mode 100644 doc/administration/monitoring/prometheus/puma_exporter.md create mode 100644 doc/administration/troubleshooting/img/database-query-dialog_v14_3.png create mode 100644 doc/administration/troubleshooting/img/obtaining-a-session-cookie-for-request_v14_3.png create mode 100644 doc/administration/troubleshooting/img/paste-request-id-into-progress-bar_v14_3.png create mode 100644 doc/administration/troubleshooting/img/select-request-id-from-request-selector-drop-down-menu_v14_3.png create mode 100644 doc/administration/troubleshooting/img/view-pg-details_v14_3.png delete mode 100644 doc/api/README.md create mode 100644 doc/api/integrations.md create mode 100644 doc/api/project_relations_export.md create mode 100644 doc/api/resource_groups.md delete mode 100644 doc/ci/README.md delete mode 100644 doc/ci/environments/img/environments_list.png create mode 100644 doc/ci/environments/img/environments_list_v14_3.png delete 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_index_v14_3.png delete mode 100644 doc/ci/examples/README.md delete mode 100644 doc/ci/examples/deployment/README.md delete mode 100644 doc/ci/merge_request_pipelines/index.md delete mode 100644 doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md delete mode 100644 doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md delete mode 100644 doc/ci/multi_project_pipelines.md delete mode 100644 doc/ci/parent_child_pipelines.md delete mode 100644 doc/ci/pipelines/img/multi_project_pipeline_graph.png create mode 100644 doc/ci/pipelines/img/multi_project_pipeline_graph_v14_3.png delete mode 100644 doc/ci/pipelines/img/parent_pipeline_graph_expanded_v12_6.png create mode 100644 doc/ci/pipelines/img/parent_pipeline_graph_expanded_v14_3.png create mode 100644 doc/ci/resource_groups/index.md delete mode 100644 doc/ci/runners/README.md delete mode 100644 doc/ci/triggers/README.md delete mode 100644 doc/ci/variables/README.md delete mode 100644 doc/ci/yaml/README.md delete mode 100644 doc/development/README.md create mode 100644 doc/development/application_slis/index.md create mode 100644 doc/development/application_slis/rails_request_apdex.md rename doc/development/documentation/img/{manual_build_docs.png => manual_build_docs_v14_3.png} (100%) create mode 100644 doc/development/documentation/styleguide/img/admin_access_level.png delete mode 100644 doc/development/fe_guide/droplab/droplab.md delete mode 100644 doc/development/fe_guide/droplab/plugins/ajax.md delete mode 100644 doc/development/fe_guide/droplab/plugins/filter.md delete mode 100644 doc/development/fe_guide/droplab/plugins/index.md delete mode 100644 doc/development/fe_guide/droplab/plugins/input_setter.md delete mode 100644 doc/development/fe_guide/editor_lite.md create mode 100644 doc/development/fe_guide/logging.md create mode 100644 doc/development/go_guide/go_upgrade.md delete mode 100644 doc/development/instrumentation.md create mode 100644 doc/development/rails_update.md create mode 100644 doc/development/redis/new_redis_instance.md create mode 100644 doc/development/ruby_upgrade.md create mode 100644 doc/development/snowplow/implementation.md create mode 100644 doc/development/snowplow/schemas.md create mode 100644 doc/development/testing_guide/img/review-app-parent-pipeline.png delete mode 100644 doc/development/usage_ping/index.md delete mode 100644 doc/development/usage_ping/metrics_dictionary.md delete mode 100644 doc/development/usage_ping/metrics_instrumentation.md delete mode 100644 doc/development/usage_ping/product_intelligence_review.md delete mode 100644 doc/development/usage_ping/review_guidelines.md delete mode 100644 doc/install/openshift_and_gitlab/img/add-gitlab-to-project.png delete mode 100644 doc/install/openshift_and_gitlab/img/add-to-project.png delete mode 100644 doc/install/openshift_and_gitlab/img/create-project-ui.png delete mode 100644 doc/install/openshift_and_gitlab/img/gitlab-logs.png delete mode 100644 doc/install/openshift_and_gitlab/img/gitlab-overview.png delete mode 100644 doc/install/openshift_and_gitlab/img/gitlab-running.png delete mode 100644 doc/install/openshift_and_gitlab/img/gitlab-scale.png delete mode 100644 doc/install/openshift_and_gitlab/img/gitlab-settings.png delete mode 100644 doc/install/openshift_and_gitlab/img/no-resources.png delete mode 100644 doc/install/openshift_and_gitlab/img/openshift-infra-project.png delete mode 100644 doc/install/openshift_and_gitlab/img/rc-name.png delete mode 100644 doc/install/openshift_and_gitlab/img/running-pods.png delete mode 100644 doc/install/openshift_and_gitlab/img/web-console.png delete mode 100644 doc/integration/shibboleth.md create mode 100644 doc/operations/img/error_tracking_setting_dsn_v14_4.png delete mode 100644 doc/security/README.md delete mode 100644 doc/ssh/README.md create mode 100644 doc/user/admin_area/settings/deprecated_api_rate_limits.md create mode 100644 doc/user/admin_area/settings/files_api_rate_limits.md create mode 100644 doc/user/admin_area/settings/img/suggest_pipeline_banner.png create mode 100644 doc/user/analytics/img/project_vsa_filter_v14_3.png create mode 100644 doc/user/analytics/img/project_vsa_stage_table_v14_4.png delete mode 100644 doc/user/application_security/img/cve_request_communication.png delete mode 100644 doc/user/application_security/img/cve_request_communication_publication.png delete mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_add_v13_2.png create mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_add_v14_3.png delete mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_edit_v14_2.png create mode 100644 doc/user/compliance/license_compliance/img/policies_maintainer_edit_v14_3.png delete mode 100644 doc/user/group/insights/img/insights_group_configuration.png delete mode 100644 doc/user/group/settings/img/import_panel_v14_1.png delete mode 100644 doc/user/group/settings/img/new_group_navigation_v13_1.png delete mode 100644 doc/user/group/subgroups/img/create_new_group.png delete mode 100644 doc/user/group/subgroups/img/create_subgroup_button_v13_6.png delete mode 100644 doc/user/group/subgroups/img/group_members_13_7.png create mode 100644 doc/user/group/subgroups/img/group_members_v14_4.png create mode 100644 doc/user/infrastructure/clusters/index.md create mode 100644 doc/user/infrastructure/clusters/manage/clusters_health.md rename doc/user/{project/clusters => infrastructure/clusters/manage}/img/k8s_cluster_monitoring.png (100%) delete mode 100644 doc/user/profile/img/notification_global_settings_v13_12.png delete mode 100644 doc/user/project/integrations/img/unify_circuit_configuration.png delete mode 100644 doc/user/project/integrations/img/zentao_product_id.png create mode 100644 doc/user/project/integrations/webhook_events.md delete mode 100644 doc/user/project/integrations/zentao.md delete mode 100644 doc/user/project/members/img/project_members_filter_direct_v13_9.png create mode 100644 doc/user/project/members/img/project_members_filter_direct_v14_4.png delete mode 100644 doc/user/project/members/img/project_members_filter_inherited_v13_9.png create mode 100644 doc/user/project/members/img/project_members_filter_inherited_v14_4.png delete mode 100644 doc/user/project/members/img/project_members_search_v13_9.png create mode 100644 doc/user/project/members/img/project_members_search_v14_4.png delete mode 100644 doc/user/project/members/img/project_members_sort_v13_9.png create mode 100644 doc/user/project/members/img/project_members_sort_v14_4.png delete mode 100644 doc/user/project/members/img/project_members_v13_9.png create mode 100644 doc/user/project/members/img/project_members_v14_4.png create mode 100644 doc/user/project/repository/mirror/bidirectional.md rename doc/user/project/repository/{ => mirror}/img/repository_mirroring_copy_ssh_public_key_button.png (100%) rename doc/user/project/repository/{ => mirror}/img/repository_mirroring_force_update.png (100%) create mode 100644 doc/user/project/repository/mirror/index.md create mode 100644 doc/user/project/repository/mirror/pull.md create mode 100644 doc/user/project/repository/mirror/push.md create mode 100644 jest_resolver.js create mode 100644 lib/api/ci/resource_groups.rb delete mode 100644 lib/api/entities/ci/reset_registration_token_result.rb create mode 100644 lib/api/entities/ci/reset_token_result.rb create mode 100644 lib/api/entities/ci/resource_group.rb delete mode 100644 lib/api/entities/feature_flag/detailed_legacy_scope.rb delete mode 100644 lib/api/entities/feature_flag/legacy_scope.rb delete mode 100644 lib/api/error_tracking.rb create mode 100644 lib/api/error_tracking/client_keys.rb create mode 100644 lib/api/error_tracking/collector.rb create mode 100644 lib/api/error_tracking/project_settings.rb delete mode 100644 lib/api/error_tracking_client_keys.rb delete mode 100644 lib/api/error_tracking_collector.rb create mode 100644 lib/api/helpers/container_registry_helpers.rb create mode 100644 lib/api/integrations.rb delete mode 100644 lib/api/services.rb create mode 100644 lib/api/validations/validators/project_portable.rb create mode 100644 lib/atlassian/jira_connect/asymmetric_jwt.rb rename lib/bulk_imports/{groups => common}/pipelines/boards_pipeline.rb (94%) rename lib/bulk_imports/{groups => common}/pipelines/labels_pipeline.rb (94%) create mode 100644 lib/bulk_imports/network_error.rb create mode 100644 lib/bulk_imports/projects/graphql/get_repository_query.rb create mode 100644 lib/bulk_imports/projects/pipelines/issues_pipeline.rb create mode 100644 lib/bulk_imports/projects/pipelines/repository_pipeline.rb create mode 100644 lib/gitlab/background_migration/fix_first_mentioned_in_commit_at.rb create mode 100644 lib/gitlab/background_migration/populate_status_column_of_security_scans.rb create mode 100644 lib/gitlab/background_migration/populate_topics_total_projects_count_cache.rb create mode 100644 lib/gitlab/ci/trace/archive.rb create mode 100644 lib/gitlab/ci/trace/remote_checksum.rb delete mode 100644 lib/gitlab/database/load_balancing/active_record_proxy.rb create mode 100644 lib/gitlab/database/load_balancing/setup.rb create mode 100644 lib/gitlab/database/migrations/runner.rb create mode 100644 lib/gitlab/database/partitioning/multi_database_partition_dropper.rb delete mode 100644 lib/gitlab/email/smime/certificate.rb create mode 100644 lib/gitlab/endpoint_attributes.rb create mode 100644 lib/gitlab/endpoint_attributes/config.rb create mode 100644 lib/gitlab/feature_categories.rb create mode 100644 lib/gitlab/github_import/representation/diff_notes/suggestion_formatter.rb create mode 100644 lib/gitlab/graphql/board/issues_connection_extension.rb create mode 100644 lib/gitlab/health_checks/redis/rate_limiting_check.rb create mode 100644 lib/gitlab/health_checks/redis/sessions_check.rb create mode 100644 lib/gitlab/merge_requests/mergeability/check_result.rb create mode 100644 lib/gitlab/merge_requests/mergeability/redis_interface.rb create mode 100644 lib/gitlab/merge_requests/mergeability/results_store.rb delete mode 100644 lib/gitlab/metrics/instrumentation.rb create mode 100644 lib/gitlab/metrics/rails_slis.rb create mode 100644 lib/gitlab/metrics/sli.rb create mode 100644 lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy.rb create mode 100644 lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy.rb create mode 100644 lib/gitlab/pagination/keyset/unsupported_scope_order.rb create mode 100644 lib/gitlab/redis/rate_limiting.rb create mode 100644 lib/gitlab/redis/sessions.rb create mode 100644 lib/gitlab/request_endpoints.rb create mode 100644 lib/gitlab/sidekiq_enq.rb delete mode 100644 lib/gitlab/sidekiq_versioning/manager.rb delete mode 100644 lib/gitlab/tracking/docs/helper.rb delete mode 100644 lib/gitlab/tracking/docs/renderer.rb delete mode 100644 lib/gitlab/tracking/docs/templates/default.md.haml create mode 100644 lib/gitlab/usage/metrics/instrumentations/active_user_count_metric.rb create mode 100644 lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric.rb delete mode 100644 lib/gitlab/usage_data_counters/guest_package_events.yml create mode 100644 lib/gitlab/usage_data_counters/known_events/importer_events.yml create mode 100644 lib/gitlab/utils/delegator_override.rb create mode 100644 lib/gitlab/utils/delegator_override/error.rb create mode 100644 lib/gitlab/utils/delegator_override/validator.rb delete mode 100644 lib/gitlab/with_feature_category.rb create mode 100644 lib/gitlab/x509/certificate.rb delete mode 100644 lib/tasks/gitlab/packages/composer.rake delete mode 100644 lib/tasks/gitlab/snowplow.rake create mode 100644 qa/lib/gitlab/page/admin/dashboard.rb create mode 100644 qa/lib/gitlab/page/admin/dashboard.stub.rb create mode 100644 qa/lib/gitlab/page/admin/subscription.rb create mode 100644 qa/lib/gitlab/page/admin/subscription.stub.rb create mode 100644 qa/lib/gitlab/page/group/settings/usage_quota.stub.rb create mode 100644 qa/lib/gitlab/page/group/settings/usage_quotas.rb create mode 100644 qa/lib/gitlab/page/main/sign_up.rb create mode 100644 qa/lib/gitlab/page/main/sign_up.stub.rb create mode 100644 qa/qa/page/component/web_ide/web_terminal_panel.rb create mode 100644 qa/qa/resource/group_badge.rb create mode 100644 qa/qa/specs/features/api/1_manage/bulk_import_project_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/3_create/web_ide/web_terminal_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/5_package/helm_registry_spec.rb create mode 100644 qa/spec/support/shared_contexts/packages_registry_shared_context.rb create mode 100755 scripts/frontend/start_storybook.sh create mode 100755 scripts/rails-update-bisect create mode 100755 scripts/rubocop-max-files-in-cache-check delete mode 100644 spec/config/grape_entity_patch_spec.rb delete mode 100644 spec/controllers/admin/serverless/domains_controller_spec.rb create mode 100644 spec/controllers/admin/topics/avatars_controller_spec.rb create mode 100644 spec/controllers/admin/topics_controller_spec.rb create mode 100644 spec/controllers/projects/usage_quotas_controller_spec.rb create mode 100644 spec/experiments/new_project_sast_enabled_experiment_spec.rb create mode 100644 spec/factories/dependency_proxy/group_settings.rb create mode 100644 spec/factories/namespaces/user_namespaces.rb delete mode 100644 spec/factories/packages.rb rename spec/factories/packages/{build_info.rb => build_infos.rb} (100%) create mode 100644 spec/factories/packages/composer/cache_files.rb create mode 100644 spec/factories/packages/composer/metadata.rb create mode 100644 spec/factories/packages/conan/file_metadata.rb create mode 100644 spec/factories/packages/conan/metadata.rb create mode 100644 spec/factories/packages/dependencies.rb create mode 100644 spec/factories/packages/dependency_links.rb create mode 100644 spec/factories/packages/maven/maven_metadata.rb create mode 100644 spec/factories/packages/nuget/dependency_link_metadata.rb create mode 100644 spec/factories/packages/nuget/metadata.rb rename spec/factories/packages/{package_file.rb => package_files.rb} (100%) create mode 100644 spec/factories/packages/package_tags.rb create mode 100644 spec/factories/packages/packages.rb create mode 100644 spec/factories/packages/pypi/metadata.rb delete mode 100644 spec/features/admin/admin_builds_spec.rb create mode 100644 spec/features/admin/admin_jobs_spec.rb delete mode 100644 spec/features/admin/admin_serverless_domains_spec.rb create mode 100644 spec/features/groups/dependency_proxy_for_containers_spec.rb create mode 100644 spec/features/groups/import_export/migration_history_spec.rb create mode 100644 spec/finders/clusters/agents_finder_spec.rb create mode 100644 spec/finders/projects/topics_finder_spec.rb rename spec/fixtures/api/schemas/public_api/v4/{service.json => integration.json} (100%) create mode 100644 spec/fixtures/api/schemas/public_api/v4/integrations.json delete mode 100644 spec/fixtures/api/schemas/public_api/v4/services.json create mode 100644 spec/fixtures/ssl/letsencrypt_expired_x3.pem create mode 100644 spec/frontend/__helpers__/flush_promises.js create mode 100644 spec/frontend/blob/file_template_mediator_spec.js create mode 100644 spec/frontend/boards/components/board_add_new_column_trigger_spec.js create mode 100644 spec/frontend/clusters/agents/components/show_spec.js create mode 100644 spec/frontend/clusters/agents/components/token_table_spec.js create mode 100644 spec/frontend/clusters_list/components/agent_empty_state_spec.js create mode 100644 spec/frontend/clusters_list/components/agent_table_spec.js create mode 100644 spec/frontend/clusters_list/components/agents_spec.js create mode 100644 spec/frontend/clusters_list/components/available_agents_dropwdown_spec.js create mode 100644 spec/frontend/clusters_list/components/install_agent_modal_spec.js create mode 100644 spec/frontend/clusters_list/components/mock_data.js create mode 100644 spec/frontend/clusters_list/mocks/apollo.js create mode 100644 spec/frontend/clusters_list/stubs.js delete mode 100644 spec/frontend/comment_type_toggle_spec.js create mode 100644 spec/frontend/content_editor/components/wrappers/details_spec.js create mode 100644 spec/frontend/content_editor/components/wrappers/frontmatter_spec.js create mode 100644 spec/frontend/content_editor/extensions/color_chip_spec.js create mode 100644 spec/frontend/content_editor/extensions/details_content_spec.js create mode 100644 spec/frontend/content_editor/extensions/details_spec.js create mode 100644 spec/frontend/content_editor/extensions/math_inline_spec.js create mode 100644 spec/frontend/content_editor/extensions/table_of_contents_spec.js delete mode 100644 spec/frontend/diffs/mock_data/diff_with_commit.js create mode 100644 spec/frontend/diffs/utils/tree_worker_utils_spec.js delete mode 100644 spec/frontend/diffs/utils/workers_spec.js rename spec/frontend/{ => filtered_search}/droplab/constants_spec.js (94%) rename spec/frontend/{ => filtered_search}/droplab/drop_down_spec.js (99%) rename spec/frontend/{ => filtered_search}/droplab/hook_spec.js (92%) rename spec/frontend/{ => filtered_search}/droplab/plugins/ajax_filter_spec.js (96%) rename spec/frontend/{ => filtered_search}/droplab/plugins/ajax_spec.js (94%) rename spec/frontend/{ => filtered_search}/droplab/plugins/input_setter_spec.js (99%) create mode 100644 spec/frontend/header_search/components/header_search_autocomplete_items_spec.js create mode 100644 spec/frontend/import_entities/components/pagination_bar_spec.js create mode 100644 spec/frontend/issues_list/components/new_issue_dropdown_spec.js create mode 100644 spec/frontend/lib/apollo/suppress_network_errors_during_navigation_link_spec.js create mode 100644 spec/frontend/lib/utils/is_navigating_away_spec.js delete mode 100644 spec/frontend/members/components/table/expires_at_spec.js delete mode 100644 spec/frontend/namespace_select_spec.js delete mode 100644 spec/frontend/packages/details/components/__snapshots__/conan_installation_spec.js.snap delete mode 100644 spec/frontend/packages/details/components/__snapshots__/dependency_row_spec.js.snap delete mode 100644 spec/frontend/packages/details/components/__snapshots__/maven_installation_spec.js.snap delete mode 100644 spec/frontend/packages/details/components/__snapshots__/npm_installation_spec.js.snap delete mode 100644 spec/frontend/packages/details/components/__snapshots__/nuget_installation_spec.js.snap delete mode 100644 spec/frontend/packages/details/components/__snapshots__/package_title_spec.js.snap delete mode 100644 spec/frontend/packages/details/components/__snapshots__/pypi_installation_spec.js.snap delete mode 100644 spec/frontend/packages/details/components/additional_metadata_spec.js delete mode 100644 spec/frontend/packages/details/components/app_spec.js delete mode 100644 spec/frontend/packages/details/components/composer_installation_spec.js delete mode 100644 spec/frontend/packages/details/components/conan_installation_spec.js delete mode 100644 spec/frontend/packages/details/components/dependency_row_spec.js delete mode 100644 spec/frontend/packages/details/components/installation_title_spec.js delete mode 100644 spec/frontend/packages/details/components/installations_commands_spec.js delete mode 100644 spec/frontend/packages/details/components/maven_installation_spec.js delete mode 100644 spec/frontend/packages/details/components/npm_installation_spec.js delete mode 100644 spec/frontend/packages/details/components/nuget_installation_spec.js delete mode 100644 spec/frontend/packages/details/components/package_title_spec.js delete mode 100644 spec/frontend/packages/details/components/pypi_installation_spec.js delete mode 100644 spec/frontend/packages/details/store/actions_spec.js delete mode 100644 spec/frontend/packages/details/store/getters_spec.js create mode 100644 spec/frontend/packages_and_registries/dependency_proxy/app_spec.js create mode 100644 spec/frontend/packages_and_registries/dependency_proxy/mock_data.js rename spec/frontend/{packages => packages_and_registries/infrastructure_registry/components}/details/components/__snapshots__/file_sha_spec.js.snap (100%) rename spec/frontend/packages_and_registries/infrastructure_registry/components/{ => details/components}/__snapshots__/terraform_installation_spec.js.snap (100%) create mode 100644 spec/frontend/packages_and_registries/infrastructure_registry/components/details/components/app_spec.js rename spec/frontend/packages_and_registries/infrastructure_registry/components/{ => details/components}/details_title_spec.js (98%) rename spec/frontend/{packages => packages_and_registries/infrastructure_registry/components}/details/components/file_sha_spec.js (86%) rename spec/frontend/{packages => packages_and_registries/infrastructure_registry/components}/details/components/package_files_spec.js (97%) rename spec/frontend/{packages => packages_and_registries/infrastructure_registry/components}/details/components/package_history_spec.js (94%) rename spec/frontend/packages_and_registries/infrastructure_registry/components/{ => details/components}/terraform_installation_spec.js (95%) rename spec/frontend/{packages => packages_and_registries/infrastructure_registry/components}/details/mock_data.js (100%) create mode 100644 spec/frontend/packages_and_registries/infrastructure_registry/components/details/store/actions_spec.js create mode 100644 spec/frontend/packages_and_registries/infrastructure_registry/components/details/store/getters_spec.js rename spec/frontend/{packages => packages_and_registries/infrastructure_registry/components}/details/store/mutations_spec.js (76%) create mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/app_spec.js.snap create mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/package_list_row_spec.js.snap delete mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/packages_list_app_spec.js.snap create mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/publish_method_spec.js.snap create mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/app_spec.js create mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/package_list_row_spec.js delete mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/packages_list_app_spec.js create mode 100644 spec/frontend/packages_and_registries/package_registry/components/list/publish_method_spec.js create mode 100644 spec/frontend/packages_and_registries/settings/group/components/dependency_proxy_settings_spec.js create mode 100644 spec/frontend/packages_and_registries/settings/group/components/package_settings_spec.js create mode 100644 spec/frontend/pages/admin/projects/components/namespace_select_spec.js create mode 100644 spec/frontend/pages/import/bulk_imports/history/components/bulk_imports_history_app_spec.js create mode 100644 spec/frontend/pages/profiles/password_prompt/password_prompt_modal_spec.js delete mode 100644 spec/frontend/pages/projects/new/components/app_spec.js delete mode 100644 spec/frontend/pages/projects/new/components/new_project_url_select_spec.js create mode 100644 spec/frontend/pipeline_editor/components/header/pipline_editor_mini_graph_spec.js create mode 100644 spec/frontend/pipelines/components/pipelines_list/pipieline_stop_modal_spec.js create mode 100644 spec/frontend/projects/new/components/app_spec.js rename spec/frontend/{pages => }/projects/new/components/new_project_push_tip_popover_spec.js (95%) create mode 100644 spec/frontend/projects/new/components/new_project_url_select_spec.js create mode 100644 spec/frontend/projects/settings/components/new_access_dropdown_spec.js create mode 100644 spec/frontend/repository/commits_service_spec.js create mode 100644 spec/frontend/repository/components/blob_viewers/video_viewer_spec.js create mode 100644 spec/frontend/repository/components/fork_suggestion_spec.js create mode 100644 spec/frontend/repository/components/new_directory_modal_spec.js delete mode 100644 spec/frontend/runner/components/cells/runner_name_cell_spec.js create mode 100644 spec/frontend/runner/components/cells/runner_summary_cell_spec.js create mode 100644 spec/frontend/runner/components/runner_state_locked_badge_spec.js create mode 100644 spec/frontend/runner/components/runner_state_paused_badge_spec.js delete mode 100644 spec/frontend/runner/components/runner_type_help_spec.js create mode 100644 spec/frontend/tracking/tracking_initialization_spec.js create mode 100644 spec/frontend/tracking/tracking_spec.js create mode 100644 spec/frontend/tracking/utils_spec.js delete mode 100644 spec/frontend/tracking_spec.js create mode 100644 spec/frontend/vue_mr_widget/components/extensions/actions_spec.js create mode 100644 spec/frontend/vue_mr_widget/components/extensions/status_icon_spec.js create mode 100644 spec/frontend/vue_mr_widget/test_extension.js create mode 100644 spec/frontend/vue_shared/components/dropdown_keyboard_navigation_spec.js create mode 100644 spec/frontend/vue_shared/components/user_deletion_obstacles/user_deletion_obstacles_list_spec.js create mode 100644 spec/frontend/vue_shared/components/user_deletion_obstacles/utils_spec.js delete mode 100644 spec/frontend/vue_shared/oncall_schedules_list_spec.js create mode 100644 spec/frontend_integration/fixture_generators.yml create mode 100644 spec/graphql/mutations/clusters/agent_tokens/create_spec.rb create mode 100644 spec/graphql/mutations/clusters/agent_tokens/delete_spec.rb create mode 100644 spec/graphql/mutations/clusters/agents/create_spec.rb create mode 100644 spec/graphql/mutations/clusters/agents/delete_spec.rb create mode 100644 spec/graphql/mutations/customer_relations/contacts/create_spec.rb create mode 100644 spec/graphql/mutations/customer_relations/contacts/update_spec.rb create mode 100644 spec/graphql/mutations/dependency_proxy/group_settings/update_spec.rb create mode 100644 spec/graphql/resolvers/board_list_resolver_spec.rb create mode 100644 spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb create mode 100644 spec/graphql/resolvers/clusters/agents_resolver_spec.rb create mode 100644 spec/graphql/resolvers/kas/agent_configurations_resolver_spec.rb create mode 100644 spec/graphql/resolvers/kas/agent_connections_resolver_spec.rb create mode 100644 spec/graphql/types/clusters/agent_token_type_spec.rb create mode 100644 spec/graphql/types/clusters/agent_type_spec.rb create mode 100644 spec/graphql/types/kas/agent_configuration_type_spec.rb create mode 100644 spec/graphql/types/kas/agent_connection_type_spec.rb create mode 100644 spec/graphql/types/kas/agent_metadata_type_spec.rb create mode 100644 spec/graphql/types/permission_types/ci/runner_spec.rb create mode 100644 spec/helpers/one_trust_helper_spec.rb create mode 100644 spec/helpers/projects/cluster_agents_helper_spec.rb delete mode 100644 spec/initializers/zz_metrics_spec.rb create mode 100644 spec/lib/api/base_spec.rb create mode 100644 spec/lib/api/validations/validators/project_portable_spec.rb create mode 100644 spec/lib/atlassian/jira_connect/asymmetric_jwt_spec.rb create mode 100644 spec/lib/bulk_imports/common/pipelines/boards_pipeline_spec.rb rename spec/lib/bulk_imports/{groups => common}/pipelines/labels_pipeline_spec.rb (97%) delete mode 100644 spec/lib/bulk_imports/groups/pipelines/boards_pipeline_spec.rb create mode 100644 spec/lib/bulk_imports/network_error_spec.rb create mode 100644 spec/lib/bulk_imports/projects/graphql/get_repository_query_spec.rb create mode 100644 spec/lib/bulk_imports/projects/pipelines/issues_pipeline_spec.rb create mode 100644 spec/lib/bulk_imports/projects/pipelines/repository_pipeline_spec.rb create mode 100644 spec/lib/gitlab/background_migration/fix_first_mentioned_in_commit_at_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/migrate_null_private_profile_to_false_spec.rb create mode 100644 spec/lib/gitlab/background_migration/populate_topics_total_projects_count_cache_spec.rb create mode 100644 spec/lib/gitlab/ci/trace/archive_spec.rb create mode 100644 spec/lib/gitlab/ci/trace/remote_checksum_spec.rb delete mode 100644 spec/lib/gitlab/database/load_balancing/active_record_proxy_spec.rb create mode 100644 spec/lib/gitlab/database/load_balancing/setup_spec.rb create mode 100644 spec/lib/gitlab/database/migrations/runner_spec.rb create mode 100644 spec/lib/gitlab/database/partitioning/multi_database_partition_dropper_spec.rb create mode 100644 spec/lib/gitlab/endpoint_attributes_spec.rb create mode 100644 spec/lib/gitlab/feature_categories_spec.rb create mode 100644 spec/lib/gitlab/github_import/representation/diff_notes/suggestion_formatter_spec.rb create mode 100644 spec/lib/gitlab/github_import/representation/lfs_object_spec.rb create mode 100644 spec/lib/gitlab/health_checks/redis/rate_limiting_check_spec.rb create mode 100644 spec/lib/gitlab/health_checks/redis/sessions_check_spec.rb create mode 100644 spec/lib/gitlab/merge_requests/mergeability/check_result_spec.rb create mode 100644 spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb create mode 100644 spec/lib/gitlab/merge_requests/mergeability/results_store_spec.rb delete mode 100644 spec/lib/gitlab/metrics/instrumentation_spec.rb create mode 100644 spec/lib/gitlab/metrics/rails_slis_spec.rb create mode 100644 spec/lib/gitlab/metrics/sli_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/order_values_loader_strategy_spec.rb create mode 100644 spec/lib/gitlab/pagination/keyset/in_operator_optimization/strategies/record_loader_strategy_spec.rb create mode 100644 spec/lib/gitlab/redis/rate_limiting_spec.rb create mode 100644 spec/lib/gitlab/redis/sessions_spec.rb create mode 100644 spec/lib/gitlab/request_endpoints_spec.rb delete mode 100644 spec/lib/gitlab/sidekiq_versioning/manager_spec.rb delete mode 100644 spec/lib/gitlab/tracking/docs/helper_spec.rb delete mode 100644 spec/lib/gitlab/tracking/docs/renderer_spec.rb create mode 100644 spec/lib/gitlab/usage/metrics/instrumentations/active_user_count_metric_spec.rb create mode 100644 spec/lib/gitlab/usage/metrics/instrumentations/count_users_associating_milestones_to_releases_metric_spec.rb create mode 100644 spec/lib/gitlab/utils/delegator_override/error_spec.rb create mode 100644 spec/lib/gitlab/utils/delegator_override/validator_spec.rb create mode 100644 spec/lib/gitlab/utils/delegator_override_spec.rb delete mode 100644 spec/lib/gitlab/with_feature_category_spec.rb rename spec/lib/gitlab/{email/smime => x509}/certificate_spec.rb (98%) create mode 100644 spec/lib/sidebars/groups/menus/scope_menu_spec.rb delete mode 100644 spec/migrations/20190924152703_migrate_issue_trackers_data_spec.rb delete mode 100644 spec/migrations/20191015154408_drop_merge_requests_require_code_owner_approval_from_projects_spec.rb delete mode 100644 spec/migrations/20191125114345_add_admin_mode_protected_path_spec.rb delete mode 100644 spec/migrations/20191204114127_delete_legacy_triggers_spec.rb create mode 100644 spec/migrations/20210906130643_drop_temporary_columns_and_triggers_for_taggings_spec.rb create mode 100644 spec/migrations/20210907013944_cleanup_bigint_conversion_for_ci_builds_metadata_spec.rb create mode 100644 spec/migrations/20210910194952_update_report_type_for_existing_approval_project_rules_spec.rb create mode 100644 spec/migrations/20210915022415_cleanup_bigint_conversion_for_ci_builds_spec.rb create mode 100644 spec/migrations/20210918201050_remove_old_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb create mode 100644 spec/migrations/20210918202855_reschedule_pending_jobs_for_recalculate_vulnerabilities_occurrences_uuid_spec.rb create mode 100644 spec/migrations/20210922021816_drop_int4_columns_for_ci_job_artifacts_spec.rb create mode 100644 spec/migrations/20210922025631_drop_int4_column_for_ci_sources_pipelines_spec.rb create mode 100644 spec/migrations/20210922082019_drop_int4_column_for_events_spec.rb create mode 100644 spec/migrations/20210922091402_drop_int4_column_for_push_event_payloads_spec.rb create mode 100644 spec/migrations/20211006060436_schedule_populate_topics_total_projects_count_cache_spec.rb delete mode 100644 spec/migrations/add_default_and_free_plans_spec.rb delete mode 100644 spec/migrations/add_unique_constraint_to_approvals_user_id_and_merge_request_id_spec.rb delete mode 100644 spec/migrations/backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table_spec.rb delete mode 100644 spec/migrations/backfill_operations_feature_flags_active_spec.rb delete mode 100644 spec/migrations/backfill_releases_table_updated_at_and_add_not_null_constraints_to_timestamps_spec.rb delete mode 100644 spec/migrations/backport_enterprise_schema_spec.rb delete mode 100644 spec/migrations/change_outbound_local_requests_whitelist_default_spec.rb delete mode 100644 spec/migrations/change_packages_size_defaults_in_project_statistics_spec.rb delete mode 100644 spec/migrations/clean_up_noteable_id_for_notes_on_commits_spec.rb delete mode 100644 spec/migrations/cleanup_legacy_artifact_migration_spec.rb delete mode 100644 spec/migrations/drop_project_ci_cd_settings_merge_trains_enabled_spec.rb delete mode 100644 spec/migrations/encrypt_feature_flags_clients_tokens_spec.rb delete mode 100644 spec/migrations/encrypt_plaintext_attributes_on_application_settings_spec.rb delete mode 100644 spec/migrations/enqueue_reset_merge_status_second_run_spec.rb delete mode 100644 spec/migrations/enqueue_reset_merge_status_spec.rb delete mode 100644 spec/migrations/fill_productivity_analytics_start_date_spec.rb delete mode 100644 spec/migrations/fix_max_pages_size_spec.rb delete mode 100644 spec/migrations/fix_null_type_labels_spec.rb delete mode 100644 spec/migrations/fix_pool_repository_source_project_id_spec.rb delete mode 100644 spec/migrations/fix_wrong_pages_access_level_spec.rb delete mode 100644 spec/migrations/generate_lets_encrypt_private_key_spec.rb delete mode 100644 spec/migrations/insert_project_hooks_plan_limits_spec.rb delete mode 100644 spec/migrations/migrate_auto_dev_ops_domain_to_cluster_domain_spec.rb delete mode 100644 spec/migrations/migrate_code_owner_approval_status_to_protected_branches_in_batches_spec.rb delete mode 100644 spec/migrations/migrate_discussion_id_on_promoted_epics_spec.rb delete mode 100644 spec/migrations/migrate_k8s_service_integration_spec.rb delete mode 100644 spec/migrations/migrate_legacy_managed_clusters_to_unmanaged_spec.rb delete mode 100644 spec/migrations/migrate_managed_clusters_with_no_token_to_unmanaged_spec.rb delete mode 100644 spec/migrations/migrate_ops_feature_flags_scopes_target_user_ids_spec.rb delete mode 100644 spec/migrations/migrate_storage_migrator_sidekiq_queue_spec.rb delete mode 100644 spec/migrations/move_limits_from_plans_spec.rb delete mode 100644 spec/migrations/nullify_users_role_spec.rb delete mode 100644 spec/migrations/populate_project_statistics_packages_size_spec.rb delete mode 100644 spec/migrations/populate_rule_type_on_approval_merge_request_rules_spec.rb create mode 100644 spec/migrations/recreate_index_security_ci_builds_on_name_and_id_parser_features_spec.rb delete mode 100644 spec/migrations/remove_empty_github_service_templates_spec.rb create mode 100644 spec/migrations/remove_schedule_and_status_from_pending_alert_escalations_spec.rb delete mode 100644 spec/migrations/schedule_fill_valid_time_for_pages_domain_certificates_spec.rb delete mode 100644 spec/migrations/schedule_pages_metadata_migration_spec.rb delete mode 100644 spec/migrations/schedule_populate_merge_request_assignees_table_spec.rb create mode 100644 spec/migrations/schedule_populate_status_column_of_security_scans_spec.rb delete mode 100644 spec/migrations/schedule_sync_issuables_state_id_spec.rb delete mode 100644 spec/migrations/schedule_sync_issuables_state_id_where_nil_spec.rb delete mode 100644 spec/migrations/set_issue_id_for_all_versions_spec.rb delete mode 100644 spec/migrations/sync_issuables_state_id_spec.rb delete mode 100644 spec/migrations/truncate_user_fullname_spec.rb delete mode 100644 spec/migrations/update_minimum_password_length_spec.rb create mode 100644 spec/models/concerns/vulnerability_finding_helpers_spec.rb delete mode 100644 spec/models/integrations/open_project_spec.rb delete mode 100644 spec/models/integrations/open_project_tracker_data_spec.rb delete mode 100644 spec/models/loose_foreign_keys/deleted_record_spec.rb create mode 100644 spec/models/namespaces/user_namespace_spec.rb delete mode 100644 spec/models/preloaders/merge_requests_preloader_spec.rb create mode 100644 spec/policies/clusters/agent_policy_spec.rb create mode 100644 spec/policies/clusters/agent_token_policy_spec.rb delete mode 100644 spec/policies/namespace_policy_spec.rb create mode 100644 spec/policies/namespaces/project_namespace_policy_spec.rb create mode 100644 spec/policies/namespaces/user_namespace_policy_spec.rb create mode 100644 spec/requests/api/ci/resource_groups_spec.rb create mode 100644 spec/requests/api/error_tracking/client_keys_spec.rb create mode 100644 spec/requests/api/error_tracking/collector_spec.rb create mode 100644 spec/requests/api/error_tracking/project_settings_spec.rb delete mode 100644 spec/requests/api/error_tracking_client_keys_spec.rb delete mode 100644 spec/requests/api/error_tracking_collector_spec.rb delete mode 100644 spec/requests/api/error_tracking_spec.rb create mode 100644 spec/requests/api/graphql/boards/board_list_query_spec.rb create mode 100644 spec/requests/api/graphql/group/issues_spec.rb create mode 100644 spec/requests/api/graphql/mutations/clusters/agent_tokens/agent_tokens/create_spec.rb create mode 100644 spec/requests/api/graphql/mutations/clusters/agents/create_spec.rb create mode 100644 spec/requests/api/graphql/mutations/clusters/agents/delete_spec.rb create mode 100644 spec/requests/api/graphql/mutations/dependency_proxy/group_settings/update_spec.rb create mode 100644 spec/requests/api/graphql/project/cluster_agents_spec.rb create mode 100644 spec/requests/api/integrations_spec.rb delete mode 100644 spec/requests/api/services_spec.rb create mode 100644 spec/requests/import/url_controller_spec.rb create mode 100644 spec/requests/projects/cluster_agents_controller_spec.rb create mode 100644 spec/requests/projects/google_cloud_controller_spec.rb delete mode 100644 spec/routing/admin/serverless/domains_controller_routing_spec.rb create mode 100644 spec/serializers/merge_request_metrics_helper_spec.rb delete mode 100644 spec/services/bulk_import_service_spec.rb create mode 100644 spec/services/bulk_imports/create_service_spec.rb create mode 100644 spec/services/bulk_imports/file_export_service_spec.rb create mode 100644 spec/services/bulk_imports/get_importable_data_service_spec.rb create mode 100644 spec/services/bulk_imports/tree_export_service_spec.rb create mode 100644 spec/services/ci/pipelines/hook_service_spec.rb create mode 100644 spec/services/ci/stuck_builds/drop_pending_service_spec.rb create mode 100644 spec/services/ci/stuck_builds/drop_running_service_spec.rb create mode 100644 spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb delete mode 100644 spec/services/ci/stuck_builds/drop_service_spec.rb create mode 100644 spec/services/clusters/agent_tokens/create_service_spec.rb create mode 100644 spec/services/clusters/agents/create_service_spec.rb create mode 100644 spec/services/clusters/agents/delete_service_spec.rb create mode 100644 spec/services/concerns/rate_limited_service_spec.rb create mode 100644 spec/services/customer_relations/contacts/create_service_spec.rb create mode 100644 spec/services/customer_relations/contacts/update_service_spec.rb create mode 100644 spec/services/dependency_proxy/group_settings/update_service_spec.rb create mode 100644 spec/services/feature_flags/hook_service_spec.rb create mode 100644 spec/services/import/validate_remote_git_endpoint_service_spec.rb create mode 100644 spec/services/merge_requests/mergeability/check_base_service_spec.rb create mode 100644 spec/services/merge_requests/mergeability/check_ci_status_service_spec.rb create mode 100644 spec/services/merge_requests/mergeability/run_checks_service_spec.rb create mode 100644 spec/services/projects/container_repository/cache_tags_created_at_service_spec.rb create mode 100644 spec/support/database/cross-database-modification-allowlist.yml create mode 100644 spec/support/matchers/be_request_urgency.rb create mode 100644 spec/support/redis/redis_new_instance_shared_examples.rb create mode 100644 spec/support/shared_contexts/bulk_imports_requests_shared_context.rb create mode 100644 spec/support/shared_examples/ci/stuck_builds_shared_examples.rb create mode 100644 spec/support/shared_examples/features/container_registry_shared_examples.rb create mode 100644 spec/support/shared_examples/lib/gitlab/import_export/attributes_permitter_shared_examples.rb create mode 100644 spec/support/shared_examples/models/concerns/analytics/cycle_analytics/stage_event_model_examples.rb create mode 100644 spec/support/shared_examples/models/concerns/ttl_expirable_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/issuable_search_shared_examples.rb create mode 100644 spec/support/shared_examples/services/dependency_proxy_settings_shared_examples.rb create mode 100644 spec/support/shared_examples/workers/concerns/dependency_proxy/cleanup_worker_shared_examples.rb create mode 100644 spec/support_specs/database/multiple_databases_spec.rb delete mode 100644 spec/tasks/gitlab/packages/composer_rake_spec.rb create mode 100644 spec/tooling/danger/specs_spec.rb create mode 100644 spec/views/projects/branches/index.html.haml_spec.rb create mode 100644 spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb create mode 100644 spec/workers/ci/create_downstream_pipeline_worker_spec.rb create mode 100644 spec/workers/ci/stuck_builds/drop_running_worker_spec.rb create mode 100644 spec/workers/ci/stuck_builds/drop_scheduled_worker_spec.rb create mode 100644 spec/workers/dependency_proxy/cleanup_blob_worker_spec.rb create mode 100644 spec/workers/dependency_proxy/cleanup_manifest_worker_spec.rb create mode 100644 spec/workers/dependency_proxy/image_ttl_group_policy_worker_spec.rb delete mode 100644 spec/workers/pages_remove_worker_spec.rb create mode 100644 tooling/danger/specs.rb delete mode 100644 vendor/project_templates/learn_gitlab.tar.gz delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/LICENSE delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/NOTICE delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/auth/extract_test.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/auth/rpccredentials.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/auth/token.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/address_parser.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/address_parser_test.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/dial.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/dial_test.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/pool.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/pool_darwin.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/receive_pack.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/std_stream.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/testdata/gitalycert.pem delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/testdata/gitalykey.pem delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/upload_archive.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/client/upload_pack.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/blob.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/cleanup.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/commit.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/conflicts.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/diff.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/hook.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/namespace.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/objectpool.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/operations.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/praefect.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/protolist.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/ref.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/remote.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/repository-service.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/server.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/shared.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/smarthttp.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/ssh.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/proto/go/gitalypb/wiki.pb.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/streamio/stream.go delete mode 100644 workhorse-vendor/gitlab.com/gitlab-org/gitaly/streamio/stream_test.go create mode 100644 workhorse/internal/dependencyproxy/dependencyproxy.go create mode 100644 workhorse/internal/dependencyproxy/dependencyproxy_test.go create mode 100644 workhorse/internal/git/info-refs_test.go diff --git a/.eslintrc.yml b/.eslintrc.yml index 6b9a1ce62c..cd3cd82d4e 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -88,7 +88,7 @@ rules: - pattern: test_fixtures/** group: internal alphabetize: - order: asc + order: ignore overrides: - files: - '**/spec/**/*' @@ -100,6 +100,8 @@ overrides: - 'scripts/**/*' - '*.config.js' - '*.config.*.js' + - 'jest_resolver.js' + - storybook/config/*.js rules: '@gitlab/require-i18n-strings': off import/no-extraneous-dependencies: off diff --git a/.gitignore b/.gitignore index f753a24756..5152ef2057 100644 --- a/.gitignore +++ b/.gitignore @@ -40,10 +40,7 @@ eslint-report.html /config/initializers/smtp_settings.rb /config/initializers/relative_url.rb /config/resque.yml -/config/redis.cache.yml -/config/redis.queues.yml -/config/redis.shared_state.yml -/config/redis.trace_chunks.yml +/config/redis.*.yml /config/unicorn.rb /config/puma.rb /config/secrets.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 891551cd41..b72ad35953 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,9 +5,7 @@ stages: - fixtures - test - post-test - - review-prepare - review - - dast - qa - post-qa - pages @@ -89,11 +87,12 @@ variables: REVIEW_APPS_GCP_REGION: "us-central1" BUILD_ASSETS_IMAGE: "true" # Set it to "false" to disable assets image building, used in `build-assets-image` - RSPEC_FAIL_FAST_ENABLED: "true" # Set it to "false" to disable RSpec fail-fast SIMPLECOV: "true" # For the default QA image, we use $CI_COMMIT_SHA as tag since it's always available and we override it for specific workflow.rules (see above) QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_SHA}" + # Default latest tag for particular branch + QA_IMAGE_BRANCH: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" # Preparing custom clone path to reduce space used by all random forks # on GitLab.com's Shared Runners. Our main forks - especially the security diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 095601ba82..64e74dd12e 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -11,39 +11,40 @@ /doc/.markdownlint @marcel.amirault @eread @aqualls @cnorris /doc/ @gl-docsteam /doc/.vale/ @marcel.amirault @eread @aqualls @cnorris -/doc/administration/geo/ @axil +/doc/administration/geo/ @marcel.amirault /doc/administration/gitaly/ @eread /doc/administration/lfs/ @aqualls /doc/administration/monitoring/ @ngaskill -/doc/administration/operations/ @axil @eread @marcia +/doc/administration/operations/ @marcel.amirault @eread @marcia /doc/administration/packages/ @ngaskill -/doc/administration/pages/ @axil @kpaizee +/doc/administration/pages/ @rdickenson @kpaizee /doc/administration/postgresql/ @marcia -/doc/administration/raketasks/ @axil @eread -/doc/administration/redis/ @axil -/doc/administration/reference_architectures/ @axil +/doc/administration/raketasks/ @marcel.amirault @eread +/doc/administration/redis/ @marcel.amirault +/doc/administration/reference_architectures/ @marcel.amirault /doc/administration/snippets/ @aqualls -/doc/administration/troubleshooting @axil @marcia @eread +/doc/administration/troubleshooting @marcel.amirault @marcia @eread /doc/api/graphql/ @msedlakjakubowski @kpaizee /doc/api/graphql/reference/ @kpaizee /doc/api/group_activity_analytics.md @msedlakjakubowski /doc/ci/ @marcel.amirault @sselhorn -/doc/ci/environments/ @axil +/doc/ci/environments/ @rdickenson /doc/ci/services/ @sselhorn /doc/ci/test_cases/ @msedlakjakubowski /doc/development/ @marcia -/doc/development/documentation/ @cnorris +/doc/development/documentation/ @cnorris @dianalogan /doc/development/i18n/ @ngaskill /doc/development/value_stream_analytics.md @msedlakjakubowski /doc/gitlab-basics/ @aqualls -/doc/install/ @axil -/doc/operations/ @ngaskill @axil +/doc/install/ @marcel.amirault +/doc/operations/ @ngaskill @rdickenson /doc/push_rules/ @aqualls +/doc/security/ @eread /doc/ssh/ @eread /doc/subscriptions/ @sselhorn /doc/topics/autodevops/ @marcia /doc/topics/git/ @aqualls -/doc/update/ @axil @marcia +/doc/update/ @marcel.amirault @marcia /doc/user/analytics/ @msedlakjakubowski @ngaskill /doc/user/application_security/ @rdickenson /doc/user/application_security/container_scanning/ @ngaskill @@ -62,13 +63,13 @@ /doc/user/packages/infrastructure_registry/ @marcia /doc/user/packages/terraform_module_registry/ @marcia /doc/user/profile/ @msedlakjakubowski @eread -/doc/user/project/ @aqualls @axil @eread @msedlakjakubowski @ngaskill +/doc/user/project/ @aqualls @rdickenson @eread @msedlakjakubowski @ngaskill /doc/user/project/clusters/ @marcia /doc/user/project/import/ @ngaskill @msedlakjakubowski /doc/user/project/issues/ @msedlakjakubowski /doc/user/project/merge_requests/ @aqualls @eread /doc/user/project/milestones/ @msedlakjakubowski -/doc/user/project/pages/ @axil +/doc/user/project/pages/ @rdickenson /doc/user/project/repository/ @aqualls /doc/user/project/settings/ @aqualls @eread /doc/user/project/static_site_editor/index.md @aqualls @@ -151,8 +152,8 @@ /doc/api/invitations.md @kpaizee /doc/api/experiments.md @kpaizee /doc/development/experiment_guide/ @kpaizee -/doc/development/snowplow/ @kpaizee -/doc/development/service_ping/ @kpaizee +/doc/development/snowplow/ @fneill +/doc/development/service_ping/ @fneill /doc/user/admin_area/license.md @kpaizee [Frontend] @@ -241,7 +242,7 @@ Dangerfile @gl-quality/eng-prod /ee/lib/gitlab/ci/reports/dependency_list/ @gitlab-org/secure/composition-analysis-be /ee/lib/gitlab/ci/reports/license_scanning/ @gitlab-org/secure/composition-analysis-be /ee/lib/gitlab/ci/reports/security/ @gitlab-org/secure/composition-analysis-be @gitlab-org/secure/dynamic-analysis-be @gitlab-org/secure/static-analysis-be @gitlab-org/secure/fuzzing-be -/ee/app/services/ci/run_dast_scan_service.rb @gitlab-org/secure/dynamic-analysis-be +/ee/app/services/app_sec/dast/ @gitlab-org/secure/dynamic-analysis-be [Container Security] /ee/app/views/projects/threat_monitoring/** @gitlab-org/protect/container-security-frontend diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml index 0169f01706..6a222d8937 100644 --- a/.gitlab/ci/build-images.gitlab-ci.yml +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -28,7 +28,8 @@ build-qa-image: script: - !reference [.base-image-build, script] - echo $QA_IMAGE - - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true + - echo $QA_IMAGE_BRANCH + - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --destination=${QA_IMAGE_BRANCH} --cache=true # This image is used by: # - The `CNG` pipelines (via the `review-build-cng` job): https://gitlab.com/gitlab-org/build/CNG/-/blob/cfc67136d711e1c8c409bf8e57427a644393da2f/.gitlab-ci.yml#L335 diff --git a/.gitlab/ci/dast.gitlab-ci.yml b/.gitlab/ci/dast.gitlab-ci.yml deleted file mode 100644 index 309714f873..0000000000 --- a/.gitlab/ci/dast.gitlab-ci.yml +++ /dev/null @@ -1,205 +0,0 @@ -.dast_conf: - tags: - - prm - # For scheduling dast job - extends: - - .reports:rules:schedule-dast - image: - name: "registry.gitlab.com/gitlab-org/security-products/dast:$DAST_VERSION" - resource_group: dast_scan - variables: - DAST_USERNAME_FIELD: "user[login]" - DAST_PASSWORD_FIELD: "user[password]" - DAST_FULL_SCAN_ENABLED: "true" - DAST_SPIDER_MINS: 0 - # TBD pin to a version - DAST_VERSION: 1.22.1 - # -Xmx is used to set the JVM memory to 6GB to prevent DAST OutOfMemoryError. - DAST_ZAP_CLI_OPTIONS: "-Xmx6144m" - DAST_RULES: "41,42,43,10027,10032,10041,10042,10045,10047,10052,10053,10057,10061,10096,10097,10104,10106,20012,20014,20015,20016,20017,20018,40019,40020,40021,40024,40025,40027,40029,40032,90001,90019,10109,10026,10028,10029,10030,10031,10033,10034,10035,10036,10038,10039,10043,10044,10048,10050,10051,10058,10062,10095,10107,10108,30003,40013,40022,40023,40028,90021,90023,90024,90025,90027,90028,10003,50003,0,2,3,6,7,10010,10011,10015,10017,10019,10020,10021,10023,10024,10025,10037,10040,10054,10055,10056,10098,10105,10202,20019,30001,30002,40003,40008,40009,40012,40014,40016,40017,40018,50000,50001,90011,90020,90022,90033" - before_script: - - 'export DAST_WEBSITE="${DAST_WEBSITE:-$(cat environment_url.txt)}"' - - 'export DAST_AUTH_URL="${DAST_WEBSITE}/users/sign_in"' - - 'export DAST_PASSWORD="${REVIEW_APPS_ROOT_PASSWORD}"' - # Below three lines can be removed once https://gitlab.com/gitlab-org/gitlab/-/issues/230687 is fixed - - mkdir -p /zap/xml - - 'sed -i "84 s/true/false/" /zap/xml/config.xml' - - cat /zap/xml/config.xml - # Help pages are excluded from scan as they are static pages. - # profile/two_factor_auth is excluded from scan to prevent 2FA from being turned on from user profile, which will reduce coverage. - - 'export DAST_AUTH_EXCLUDE_URLS="${DAST_WEBSITE}/help/.*,${DAST_WEBSITE}/profile/two_factor_auth,${DAST_WEBSITE}/users/sign_out"' - # Exclude the automatically generated monitoring project from being tested due to https://gitlab.com/gitlab-org/gitlab/-/issues/260362 - - 'DAST_AUTH_EXCLUDE_URLS="${DAST_AUTH_EXCLUDE_URLS},https://.*\.gitlab-review\.app/gitlab-instance-(administrators-)?[a-zA-Z0-9]{8}/.*"' - - enable_rule () { read all_rules; rule=$1; echo $all_rules | sed -r "s/(,)?$rule(,)?/\1-1\2/" ; } - # Sort ids in DAST_RULES ascendingly, which is required when using DAST_RULES as argument to enable_rule - - 'DAST_RULES=$(echo $DAST_RULES | tr "," "\n" | sort -n | paste -sd ",")' - needs: ["review-deploy"] - stage: dast - # Default job timeout set to 90m and dast rules needs 2h to so that it won't timeout. - timeout: 2h - # Add retry because of intermittent connection problems. See https://gitlab.com/gitlab-org/gitlab/-/issues/244313 - retry: 1 - artifacts: - paths: - - gl-dast-report.json # GitLab-specific - reports: - dast: gl-dast-report.json - expire_in: 1 week # GitLab-specific - -# DAST scan with a subset of Release scan rules. -DAST-fullscan-ruleset1: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user1" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 10019 | enable_rule 10020 | enable_rule 10021 | enable_rule 10023 | enable_rule 10024 | enable_rule 10025 | enable_rule 10037 | enable_rule 10040 | enable_rule 10054 | enable_rule 10055 | enable_rule 10056) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with a subset of Release scan rules. -DAST-fullscan-ruleset2: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user2" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 90011 | enable_rule 90020 | enable_rule 90022 | enable_rule 90033) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with a subset of Release scan rules. -DAST-fullscan-ruleset3: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user3" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 40016 | enable_rule 40017 | enable_rule 50000 | enable_rule 50001) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with a subset of Release scan rules. -DAST-fullscan-ruleset4: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user4" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 0 | enable_rule 2 | enable_rule 3 | enable_rule 7 ) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with a subset of Release scan rules. -DAST-fullscan-ruleset5: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user5" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 10010 | enable_rule 10011 | enable_rule 10017 | enable_rule 10019) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with a subset of Release scan rules. -DAST-fullscan-ruleset6: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user6" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 30001 | enable_rule 40009) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# Enable when https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39749 is fixed -# DAST scan with a subset of Beta scan rules. -# DAST-fullscan-ruleset7: -# extends: -# - .dast_conf -# variables: -# DAST_USERNAME: "user7" -# script: -# - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 10098 | enable_rule 10105 | enable_rule 10202 | enable_rule 30002 | enable_rule 40003 | enable_rule 40008 | enable_rule 40009) -# - echo $DAST_EXCLUDE_RULES -# - /analyze -t $DAST_WEBSITE -d - -# Enable when https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39749 is fixed -# Below jobs runs DAST scans with one time consuming scan rule. These scan rules are disabled in above jobs so that those jobs won't timeout. -# DAST scan with rule - 20019 External Redirect -# DAST-fullscan-rule-20019: -# extends: -# - .dast_conf -# variables: -# DAST_USERNAME: "user8" -# script: -# - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 20019) -# - echo $DAST_EXCLUDE_RULES -# - /analyze -t $DAST_WEBSITE -d - -# Enable when https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39749 is fixed -# DAST scan with rule - 10107 Httpoxy - Proxy Header Misuse - Active/beta -# DAST-fullscan-rule-10107: -# extends: -# - .dast_conf -# variables: -# DAST_USERNAME: "user9" -# script: -# - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 10107) -# - echo $DAST_EXCLUDE_RULES -# - /analyze -t $DAST_WEBSITE -d - -# DAST scan with rule - 90020 Remote OS Command Injection -DAST-fullscan-rule-90020: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user10" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 90020) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with rule - 40018 SQL Injection - Active/release -DAST-fullscan-rule-40018: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user11" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 40018) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with rule - 40014 Cross Site Scripting (Persistent) - Active/release -DAST-fullscan-rule-40014: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user12" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 40014) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with rule - 6 Path travesal -DAST-fullscan-rule-6: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user13" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 6) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d - -# DAST scan with rule - 40012 Cross Site Scripting (Reflected) -DAST-fullscan-rule-40012: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user14" - script: - - export DAST_EXCLUDE_RULES=$(echo $DAST_RULES | enable_rule 40012) - - echo $DAST_EXCLUDE_RULES - - /analyze -t $DAST_WEBSITE -d diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index c585047f91..f4d8698f22 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -75,17 +75,3 @@ ui-docs-links lint: needs: [] script: - bundle exec haml-lint -i DocumentationLinks - -deprecations-doc check: - variables: - SETUP_DB: "false" - extends: - - .default-retry - - .rails-cache - - .default-before_script - - .docs:rules:deprecations - stage: test - needs: [] - script: - - bundle exec rake gitlab:docs:check_deprecations - allow_failure: true diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 48f85219ff..6974d63a49 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -71,6 +71,12 @@ compile-test-assets as-if-foss: - .frontend:rules:compile-test-assets-as-if-foss - .as-if-foss +compile-test-assets as-if-jh: + extends: + - compile-test-assets + - .frontend:rules:compile-test-assets-as-if-jh + needs: ["add-jh-folder"] + update-assets-compile-production-cache: extends: - compile-production-assets @@ -112,7 +118,7 @@ update-storybook-yarn-cache: - .rails-cache - .use-pg12 stage: fixtures - needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets"] + needs: ["setup-test-env", "retrieve-tests-metadata"] variables: WEBPACK_VENDOR_DLL: "true" script: @@ -128,23 +134,38 @@ update-storybook-yarn-cache: - tmp/tests/frontend/ - knapsack/ -rspec frontend_fixture: +# Builds FOSS, and EE fixtures in the EE project. +# Builds FOSS fixtures in the FOSS project. +rspec-all frontend_fixture: extends: - .frontend-fixtures-base - .frontend:rules:default-frontend-jobs - parallel: 2 + needs: + - !reference [.frontend-fixtures-base, needs] + - "compile-test-assets" + parallel: 5 -rspec frontend_fixture as-if-foss: +# Builds FOSS fixtures in the EE project, with the `ee/` folder removed (due to `as-if-foss`). +rspec-all frontend_fixture as-if-foss: extends: - .frontend-fixtures-base - .frontend:rules:default-frontend-jobs-as-if-foss - .as-if-foss + needs: + - !reference [.frontend-fixtures-base, needs] + - "compile-test-assets as-if-foss" -rspec-ee frontend_fixture: +# Builds FOSS, EE, and JH fixtures in the EE project, with the `jh/` folder added (due to `as-if-jh`). +rspec-all frontend_fixture as-if-jh: extends: - .frontend-fixtures-base - - .frontend:rules:default-frontend-jobs-ee - parallel: 3 + - .frontend:rules:default-frontend-jobs-as-if-jh + needs: + - !reference [.frontend-fixtures-base, needs] + - "compile-test-assets as-if-jh" + - "add-jh-folder" + script: + - echo "This job is currently doing nothing since there's no specific JH fixtures yet. To enable this job, remove this line." graphql-schema-dump: variables: @@ -172,7 +193,9 @@ graphql-schema-dump: # Disable warnings in browserslist which can break on backports # https://github.com/browserslist/browserslist/blob/a287ec6/node.js#L367-L384 BROWSERSLIST_IGNORE_OLD_DATA: "true" + SETUP_DB: "false" before_script: + - !reference [.default-before_script, before_script] - *yarn-install stage: test @@ -194,11 +217,7 @@ jest: extends: - .jest-base - .frontend:rules:jest - needs: - - job: "detect-tests" - - job: "rspec frontend_fixture" - - job: "rspec-ee frontend_fixture" - optional: true + needs: ["rspec-all frontend_fixture"] artifacts: name: coverage-frontend expire_in: 31d @@ -215,6 +234,9 @@ jest minimal: extends: - jest - .frontend:rules:jest:minimal + needs: + - !reference [jest, needs] + - "detect-tests" script: - run_timed_command "yarn jest:ci:minimal" @@ -225,9 +247,7 @@ jest-integration: script: - run_timed_command "yarn jest:integration --ci" needs: - - job: "rspec frontend_fixture" - - job: "rspec-ee frontend_fixture" - optional: true + - job: "rspec-all frontend_fixture" - job: "graphql-schema-dump" jest-as-if-foss: @@ -235,9 +255,17 @@ jest-as-if-foss: - .jest-base - .frontend:rules:default-frontend-jobs-as-if-foss - .as-if-foss - needs: ["rspec frontend_fixture as-if-foss"] + needs: ["rspec-all frontend_fixture as-if-foss"] parallel: 2 +jest-as-if-jh: + extends: + - .jest-base + - .frontend:rules:default-frontend-jobs-as-if-jh + needs: ["rspec-all frontend_fixture as-if-jh", "add-jh-folder"] + script: + - echo "This job is currently doing nothing since there's no specific JH Jest tests yet. To enable this job, remove this line." + coverage-frontend: extends: - .default-retry @@ -341,9 +369,7 @@ startup-css-check: - .frontend:rules:default-frontend-jobs needs: - job: "compile-test-assets" - - job: "rspec frontend_fixture" - - job: "rspec-ee frontend_fixture" - optional: true + - job: "rspec-all frontend_fixture" startup-css-check as-if-foss: extends: @@ -352,7 +378,7 @@ startup-css-check as-if-foss: - .frontend:rules:default-frontend-jobs-as-if-foss needs: - job: "compile-test-assets as-if-foss" - - job: "rspec frontend_fixture as-if-foss" + - job: "rspec-all frontend_fixture as-if-foss" .compile-storybook-base: extends: @@ -361,11 +387,15 @@ startup-css-check as-if-foss: script: - *storybook-yarn-install - yarn run storybook:build + needs: ["graphql-schema-dump"] compile-storybook: extends: - .compile-storybook-base - .frontend:rules:default-frontend-jobs + needs: + - !reference [.compile-storybook-base, needs] + - job: "rspec-all frontend_fixture" artifacts: name: storybook expire_in: 31d @@ -378,3 +408,6 @@ compile-storybook as-if-foss: - .compile-storybook-base - .as-if-foss - .frontend:rules:default-frontend-jobs-as-if-foss + needs: + - !reference [.compile-storybook-base, needs] + - job: "rspec-all frontend_fixture as-if-foss" diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index d9978a44ff..d0c26d6006 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -10,6 +10,7 @@ .default-before_script: before_script: + - echo $FOSS_ONLY - '[ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb' - export GOPATH=$CI_PROJECT_DIR/.go - mkdir -p $GOPATH @@ -193,10 +194,12 @@ .storybook-yarn-cache: cache: + - *node-modules-cache - *storybook-node-modules-cache .storybook-yarn-cache-push: cache: + - *node-modules-cache # We don't push this cache as it's already rebuilt by `update-yarn-cache` - *storybook-node-modules-cache-push .use-pg11: diff --git a/.gitlab/ci/memory.gitlab-ci.yml b/.gitlab/ci/memory.gitlab-ci.yml index f3ad8f81da..9234b116ff 100644 --- a/.gitlab/ci/memory.gitlab-ci.yml +++ b/.gitlab/ci/memory.gitlab-ci.yml @@ -4,6 +4,12 @@ - .rails-cache - .default-before_script - .memory:rules + variables: + METRICS_FILE: "metrics.txt" + artifacts: + reports: + metrics: "${METRICS_FILE}" + expire_in: 31d memory-static: extends: .only-code-memory-job-base @@ -11,24 +17,25 @@ memory-static: needs: ["setup-test-env"] variables: SETUP_DB: "false" + MEMORY_BUNDLE_MEM_FILE: "tmp/memory_bundle_mem.txt" + MEMORY_BUNDLE_OBJECTS_FILE: "tmp/memory_bundle_objects.txt" script: # Uses two different reports from the 'derailed_benchmars' gem. # Loads each of gems in the Gemfile and checks how much memory they consume when they are required. # 'derailed_benchmarks' internally uses 'get_process_mem' - - bundle exec derailed bundle:mem > tmp/memory_bundle_mem.txt - - scripts/generate-gems-size-metrics-static tmp/memory_bundle_mem.txt >> 'tmp/memory_metrics.txt' + - bundle exec derailed bundle:mem > "${MEMORY_BUNDLE_MEM_FILE}" + - scripts/generate-gems-size-metrics-static "${MEMORY_BUNDLE_MEM_FILE}" >> "${METRICS_FILE}" # Outputs detailed information about objects created while gems are loaded. # 'derailed_benchmarks' internally uses 'memory_profiler' - - bundle exec derailed bundle:objects > tmp/memory_bundle_objects.txt - - scripts/generate-gems-memory-metrics-static tmp/memory_bundle_objects.txt >> 'tmp/memory_metrics.txt' + - bundle exec derailed bundle:objects > "${MEMORY_BUNDLE_OBJECTS_FILE}" + - scripts/generate-gems-memory-metrics-static "${MEMORY_BUNDLE_OBJECTS_FILE}" >> "${METRICS_FILE}" artifacts: paths: - - tmp/memory_*.txt - reports: - metrics: tmp/memory_metrics.txt - expire_in: 31d + - "${METRICS_FILE}" + - "${MEMORY_BUNDLE_MEM_FILE}" + - "${MEMORY_BUNDLE_OBJECTS_FILE}" # Show memory usage caused by invoking require per gem. # Unlike `memory-static`, it hits the app with one request to ensure that any last minute require-s have been called. @@ -44,12 +51,11 @@ memory-on-boot: NODE_ENV: "production" RAILS_ENV: "production" SETUP_DB: "true" + MEMORY_ON_BOOT_FILE: "tmp/memory_on_boot.txt" script: - - PATH_TO_HIT="/users/sign_in" CUT_OFF=0.3 bundle exec derailed exec perf:mem >> 'tmp/memory_on_boot.txt' - - scripts/generate-memory-metrics-on-boot tmp/memory_on_boot.txt >> 'tmp/memory_on_boot_metrics.txt' + - PATH_TO_HIT="/users/sign_in" CUT_OFF=0.3 bundle exec derailed exec perf:mem >> "${MEMORY_ON_BOOT_FILE}" + - scripts/generate-memory-metrics-on-boot "${MEMORY_ON_BOOT_FILE}" >> "${METRICS_FILE}" artifacts: paths: - - tmp/memory_*.txt - reports: - metrics: tmp/memory_on_boot_metrics.txt - expire_in: 31d + - "${METRICS_FILE}" + - "${MEMORY_ON_BOOT_FILE}" diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index a5403073e1..b581cf83d5 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -1,7 +1,7 @@ include: - template: Jobs/Code-Quality.gitlab-ci.yml - - template: Security/SAST.gitlab-ci.yml - - template: Security/Secret-Detection.gitlab-ci.yml + - template: Jobs/SAST.gitlab-ci.yml + - template: Jobs/Secret-Detection.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml - template: Security/License-Scanning.gitlab-ci.yml @@ -13,6 +13,7 @@ code_quality: paths: - gl-code-quality-report.json # GitLab-specific rules: !reference [".reports:rules:code_quality", rules] + allow_failure: true .sast-analyzer: # We need to re-`extends` from `sast` as the `extends` here overrides the one from the template. @@ -27,16 +28,13 @@ code_quality: variables: SAST_BRAKEMAN_LEVEL: 2 # GitLab-specific SAST_EXCLUDED_PATHS: "qa, spec, doc, ee/spec, config/gitlab.yml.example, tmp" # GitLab-specific - SAST_EXCLUDED_ANALYZERS: bandit, flawfinder, phpcs-security-audit, pmd-apex, security-code-scan, spotbugs, eslint + SAST_EXCLUDED_ANALYZERS: bandit, flawfinder, phpcs-security-audit, pmd-apex, security-code-scan, spotbugs, eslint, nodejs-scan brakeman-sast: - rules: !reference [".reports:rules:sast", rules] - -nodejs-scan-sast: - rules: !reference [".reports:rules:sast", rules] + rules: !reference [".reports:rules:brakeman-sast", rules] semgrep-sast: - rules: !reference [".reports:rules:sast", rules] + rules: !reference [".reports:rules:semgrep-sast", rules] gosec-sast: variables: @@ -52,7 +50,7 @@ gosec-sast: cache: paths: - vendor/go - rules: !reference [".reports:rules:sast", rules] + rules: !reference [".reports:rules:gosec-sast", rules] .secret-analyzer: extends: .default-retry @@ -73,6 +71,7 @@ secret_detection: needs: [] variables: DS_EXCLUDED_PATHS: "qa/qa/ee/fixtures/secure_premade_reports, spec, ee/spec, tmp" # GitLab-specific + DS_EXCLUDED_ANALYZERS: "gemnasium-maven" artifacts: paths: - gl-dependency-scanning-report.json # GitLab-specific @@ -82,11 +81,6 @@ gemnasium-dependency_scanning: before_script: # git-lfs is needed for auto-remediation - apk add git-lfs - after_script: - # Post-processing - - apk add jq - # Lower execa severity based on https://gitlab.com/gitlab-org/gitlab/-/issues/223859#note_452922390 - - jq '(.vulnerabilities[] | select (.cve == "yarn.lock:execa:gemnasium:05cfa2e8-2d0c-42c1-8894-638e2f12ff3d")).severity = "Medium"' gl-dependency-scanning-report.json > temp.json && mv temp.json gl-dependency-scanning-report.json rules: !reference [".reports:rules:gemnasium-dependency_scanning", rules] bundler-audit-dependency_scanning: @@ -101,8 +95,7 @@ gemnasium-python-dependency_scanning: # Analyze dependencies for malicious behavior # See https://gitlab.com/gitlab-com/gl-security/security-research/package-hunter .package_hunter-base: - extends: - - .default-retry + extends: .default-retry stage: test image: name: registry.gitlab.com/gitlab-com/gl-security/security-research/package-hunter-cli:1.1.0 @@ -116,6 +109,8 @@ gemnasium-python-dependency_scanning: before_script: - rm -r spec locale .git app/assets/images doc/ - cd .. && tar -I "gzip --best" -cf gitlab.tgz gitlab/ + script: + - node /usr/src/app/cli.js analyze --format gitlab --manager ${PACKAGE_MANAGER} gitlab.tgz | tee ${CI_PROJECT_DIR}/gl-dependency-scanning-report.json artifacts: paths: - gl-dependency-scanning-report.json @@ -127,15 +122,15 @@ package_hunter-yarn: extends: - .package_hunter-base - .reports:rules:package_hunter-yarn - script: - - node /usr/src/app/cli.js analyze --format gitlab --manager yarn gitlab.tgz | tee $CI_PROJECT_DIR/gl-dependency-scanning-report.json + variables: + PACKAGE_MANAGER: yarn package_hunter-bundler: extends: - .package_hunter-base - .reports:rules:package_hunter-bundler - script: - - node /usr/src/app/cli.js analyze --format gitlab --manager bundler gitlab.tgz | tee $CI_PROJECT_DIR/gl-dependency-scanning-report.json + variables: + PACKAGE_MANAGER: bundler license_scanning: extends: .default-retry diff --git a/.gitlab/ci/review-apps/dast.gitlab-ci.yml b/.gitlab/ci/review-apps/dast.gitlab-ci.yml new file mode 100644 index 0000000000..512c850b7d --- /dev/null +++ b/.gitlab/ci/review-apps/dast.gitlab-ci.yml @@ -0,0 +1,191 @@ +.dast_conf: + tags: + - prm + # For scheduling dast job + extends: + - .reports:rules:schedule-dast + image: + name: "registry.gitlab.com/gitlab-org/security-products/dast:$DAST_VERSION" + resource_group: dast_scan + variables: + DAST_USERNAME_FIELD: "user[login]" + DAST_PASSWORD_FIELD: "user[password]" + DAST_SUBMIT_FIELD: "commit" + DAST_FULL_SCAN_ENABLED: "true" + DAST_VERSION: 2 + GIT_STRATEGY: none + # -Xmx is used to set the JVM memory to 6GB to prevent DAST OutOfMemoryError. + DAST_ZAP_CLI_OPTIONS: "-Xmx6144m" + before_script: + - 'export DAST_WEBSITE="${DAST_WEBSITE:-$(cat environment_url.txt)}"' + - 'export DAST_AUTH_URL="${DAST_WEBSITE}/users/sign_in"' + - 'export DAST_PASSWORD="${REVIEW_APPS_ROOT_PASSWORD}"' + # Help pages are excluded from scan as they are static pages. + # profile/two_factor_auth is excluded from scan to prevent 2FA from being turned on from user profile, which will reduce coverage. + - 'DAST_EXCLUDE_URLS="${DAST_WEBSITE}/help/.*,${DAST_WEBSITE}/-/profile/two_factor_auth,${DAST_WEBSITE}/users/sign_out"' + # Exclude the automatically generated monitoring project from being tested due to https://gitlab.com/gitlab-org/gitlab/-/issues/260362 + - 'export DAST_EXCLUDE_URLS="${DAST_EXCLUDE_URLS},${DAST_WEBSITE}/gitlab-instance-.*"' + needs: ["review-deploy"] + stage: dast + # Default job timeout set to 90m and dast rules needs 2h to so that it won't timeout. + timeout: 2h + # Add retry because of intermittent connection problems. See https://gitlab.com/gitlab-org/gitlab/-/issues/244313 + retry: 1 + artifacts: + paths: + - gl-dast-report.json # GitLab-specific + reports: + dast: gl-dast-report.json + expire_in: 1 week # GitLab-specific + allow_failure: true + +# DAST scan with a subset of Release scan rules. +# ZAP rule details can be found at https://www.zaproxy.org/docs/alerts/ + +# 10019, 10021 Missing security headers +# 10023, 10024, 10025, 10037 Information Disclosure +# 10040 Secure Pages Include Mixed Content +# 10055 CSP +# 10056 X-Debug-Token Information Leak +# Duration: 14 minutes 20 seconds + +dast:secureHeaders-csp-infoLeak: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user1" + DAST_ONLY_INCLUDE_RULES: "10019,10021,10023,10024,10025,10037,10040,10055,10056" + script: + - /analyze + +# 90023 XML External Entity Attack +# Duration: 41 minutes 20 seconds +# 90019 Server Side Code Injection +# Duration: 34 minutes 31 seconds +dast:XXE-SrvSideInj: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user2" + DAST_ONLY_INCLUDE_RULES: "90023,90019" + script: + - /analyze + +# 0 Directory Browsing +# 2 Private IP Disclosure +# 3 Session ID in URL Rewrite +# 7 Remote File Inclusion +# Duration: 63 minutes 43 seconds +# 90034 Cloud Metadata Potentially Exposed +# Duration: 13 minutes 48 seconds +# 90022 Application Error Disclosure +# Duration: 12 minutes 7 seconds +dast:infoLeak-fileInc-DirBrowsing: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user3" + DAST_ONLY_INCLUDE_RULES: "0,2,3,7,90034,90022" + script: + - /analyze + +# 10010 Cookie No HttpOnly Flag +# 10011 Cookie Without Secure Flag +# 10017 Cross-Domain JavaScript Source File Inclusion +# 10029 Cookie Poisoning +# 90033 Loosely Scoped Cookie +# 10054 Cookie Without SameSite Attribute +# Duration: 13 minutes 23 seconds +dast:insecureCookie: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user4" + DAST_ONLY_INCLUDE_RULES: "10010,10011,10017,10029,90033,10054" + script: + - /analyze + + +# 20012 Anti-CSRF Tokens Check +# 10202 Absence of Anti-CSRF Tokens +# https://gitlab.com/gitlab-com/gl-security/appsec/appsec-team/-/issues/192 + +# Commented because of lot of FP's +# dast:csrfTokenCheck: +# extends: +# - .dast_conf +# variables: +# DAST_USERNAME: "user6" +# DAST_ONLY_INCLUDE_RULES: "20012,10202" +# script: +# - /analyze + +# 10098 Cross-Domain Misconfiguration +# 10105 Weak Authentication Method +# 40003 CRLF Injection +# 40008 Parameter Tampering +# Duration: 71 minutes 15 seconds +dast:corsMisconfig-weakauth-crlfInj: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user5" + DAST_ONLY_INCLUDE_RULES: "10098,10105,40003,40008" + script: + - /analyze + +# 20019 External Redirect +# 20014 HTTP Parameter Pollution +# Duration: 46 minutes 12 seconds +dast:extRedirect-paramPollution: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user6" + DAST_ONLY_INCLUDE_RULES: "20019,20014" + script: + - /analyze + +# 40022 SQL Injection - PostgreSQL +# Duration: 53 minutes 59 seconds +dast:sqlInjection: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user7" + DAST_ONLY_INCLUDE_RULES: "40022" + script: + - /analyze + +# 40014 Cross Site Scripting (Persistent) +# Duration: 21 minutes 50 seconds +dast:xss-persistent: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user8" + DAST_ONLY_INCLUDE_RULES: "40014" + script: + - /analyze + +# 40012 Cross Site Scripting (Reflected) +# Duration: 73 minutes 15 seconds +dast:xss-reflected: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user9" + DAST_ONLY_INCLUDE_RULES: "40012" + script: + - /analyze + +# 40013 Session Fixation +# Duration: 44 minutes 25 seconds +dast:sessionFixation: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user10" + DAST_ONLY_INCLUDE_RULES: "40013" + script: + - /analyze diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml new file mode 100644 index 0000000000..6fe9e39cb8 --- /dev/null +++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml @@ -0,0 +1,106 @@ +stages: + - prepare + - deploy + - qa + - post-qa + - dast + +include: + - local: .gitlab/ci/global.gitlab-ci.yml + - local: .gitlab/ci/rules.gitlab-ci.yml + - local: .gitlab/ci/review-apps/qa.gitlab-ci.yml + - local: .gitlab/ci/review-apps/dast.gitlab-ci.yml + +.base-before_script: &base-before_script + - source ./scripts/utils.sh + - source ./scripts/review_apps/review-apps.sh + - install_api_client_dependencies_with_apk + +review-build-cng: + extends: + - .default-retry + - .review:rules:review-build-cng + image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13 + stage: prepare + variables: + CNG_PROJECT_ACCESS_TOKEN: "${CNG_MIRROR_PROJECT_ACCESS_TOKEN}" # "Multi-pipeline (from 'gitlab-org/gitlab' 'review-build-cng' job)" at https://gitlab.com/gitlab-org/build/CNG-mirror/-/settings/access_tokens + CNG_PROJECT_PATH: "gitlab-org/build/CNG-mirror" + before_script: + - source ./scripts/utils.sh + - install_gitlab_gem + script: + - ./scripts/trigger-build cng + +.review-workflow-base: + extends: + - .default-retry + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3.5-kubectl1.17 + variables: + HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" + DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" + GITLAB_HELM_CHART_REF: "v5.2.1" + environment: + name: review/${CI_COMMIT_REF_SLUG}${FREQUENCY} + url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} + on_stop: review-stop + auto_stop_in: 48 hours + +review-deploy: + extends: + - .review-workflow-base + - .review:rules:review-deploy + stage: deploy + needs: ["review-build-cng"] + resource_group: "review/${CI_COMMIT_REF_NAME}" + before_script: + - export GITLAB_SHELL_VERSION=$( environment_url.txt + - *base-before_script + script: + - check_kube_domain + - download_chart + - date + - deploy || (display_deployment_debug && exit 1) + - verify_deploy || exit 1 + - disable_sign_ups || (delete_release && exit 1) + after_script: + # Run seed-dast-test-data.sh only when DAST_RUN is set to true. This is to pupulate review app with data for DAST scan. + # Set DAST_RUN to true when jobs are manually scheduled. + - if [ "$DAST_RUN" == "true" ]; then source scripts/review_apps/seed-dast-test-data.sh; TRACE=1 trigger_proj_user_creation; fi + artifacts: + paths: + - environment_url.txt + - curl_output.txt + expire_in: 7 days + when: always + +.review-stop-base: + extends: .review-workflow-base + environment: + action: stop + dependencies: [] + variables: + # We're cloning the repo instead of downloading the script for now + # because some repos are private and CI_JOB_TOKEN cannot access files. + # See https://gitlab.com/gitlab-org/gitlab/issues/191273 + GIT_DEPTH: 1 + before_script: + - *base-before_script + +review-delete-deployment: + extends: + - .review-stop-base + - .review:rules:review-delete-deployment + stage: prepare + script: + - delete_release + +review-stop: + extends: + - .review-stop-base + - .review:rules:review-stop + stage: post-qa + script: + - delete_k8s_release_namespace diff --git a/.gitlab/ci/review-apps/qa.gitlab-ci.yml b/.gitlab/ci/review-apps/qa.gitlab-ci.yml new file mode 100644 index 0000000000..6b9d4feb3c --- /dev/null +++ b/.gitlab/ci/review-apps/qa.gitlab-ci.yml @@ -0,0 +1,128 @@ +.review-qa-base: + extends: + - .use-docker-in-docker + image: + name: ${QA_IMAGE} + entrypoint: [""] + stage: qa + needs: ["review-deploy"] + variables: + QA_DEBUG: "true" + QA_CAN_TEST_GIT_PROTOCOL_V2: "false" + QA_GENERATE_ALLURE_REPORT: "true" + GITLAB_USERNAME: "root" + GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" + GITLAB_ADMIN_USERNAME: "root" + GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" + GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}" + EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}" + SIGNUP_DISABLED: "true" + before_script: + # Use $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA so that GitLab image built in omnibus-gitlab-mirror and QA image are in sync. + - if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_SHA" ]; then + git checkout -f ${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}; + fi + - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" + - echo "${CI_ENVIRONMENT_URL}" + - cd qa + artifacts: + paths: + - qa/tmp + expire_in: 7 days + when: always + +.allure-report-base: + image: + name: ${GITLAB_DEPENDENCY_PROXY}andrcuns/allure-report-publisher:0.3.6 + entrypoint: [""] + stage: post-qa + variables: + GIT_STRATEGY: none + STORAGE_CREDENTIALS: $QA_ALLURE_REPORT_GCS_CREDENTIALS + GITLAB_AUTH_TOKEN: $GITLAB_QA_MR_ALLURE_REPORT_TOKEN + ALLURE_PROJECT_PATH: $CI_PROJECT_PATH + ALLURE_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID + allow_failure: true + script: + - | + allure-report-publisher upload gcs \ + --results-glob="qa/tmp/allure-results/*" \ + --bucket="gitlab-qa-allure-reports" \ + --prefix="$ALLURE_REPORT_PATH_PREFIX/$CI_COMMIT_REF_SLUG" \ + --update-pr="comment" \ + --copy-latest \ + --ignore-missing-results \ + --color + +review-qa-smoke: + extends: + - .review-qa-base + - .review:rules:review-qa-smoke + retry: 1 # This is confusing but this means "2 runs at max". + variables: + QA_RUN_TYPE: review-qa-smoke + script: + - bin/test Test::Instance::Smoke "${CI_ENVIRONMENT_URL}" + +review-qa-all: + extends: + - .review-qa-base + - .review:rules:review-qa-all + variables: + QA_RUN_TYPE: review-qa-all + parallel: 5 + script: + - export KNAPSACK_REPORT_PATH=knapsack/master_report.json + - export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb + - | + bin/test Test::Instance::All "${CI_ENVIRONMENT_URL}" \ + -- \ + --color --format documentation \ + --format RspecJunitFormatter --out tmp/rspec.xml + artifacts: + reports: + junit: qa/tmp/rspec.xml + +review-performance: + extends: + - .default-retry + - .review:rules:review-performance + image: + name: sitespeedio/sitespeed.io + entrypoint: [""] + stage: qa + needs: ["review-deploy"] + before_script: + - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" + - echo "${CI_ENVIRONMENT_URL}" + - mkdir -p gitlab-exporter + - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js + - mkdir -p sitespeed-results + script: + - /start.sh --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" + after_script: + - mv sitespeed-results/data/performance.json performance.json + artifacts: + paths: + - sitespeed-results/ + reports: + performance: performance.json + expire_in: 31d + +allure-report-qa-smoke: + extends: + - .allure-report-base + - .review:rules:review-qa-smoke-report + needs: ["review-qa-smoke"] + variables: + ALLURE_REPORT_PATH_PREFIX: gitlab-review-smoke + ALLURE_JOB_NAME: review-qa-smoke + +allure-report-qa-all: + extends: + - .allure-report-base + - .review:rules:review-qa-all-report + needs: ["review-qa-all"] + variables: + ALLURE_REPORT_PATH_PREFIX: gitlab-review-all + ALLURE_JOB_NAME: review-qa-all diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index f20f327686..b2b8c456ae 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -16,225 +16,25 @@ review-cleanup: - ruby -rrubygems scripts/review_apps/automated_cleanup.rb - gcp_cleanup -.base-before_script: &base-before_script - - source ./scripts/utils.sh - - source ./scripts/review_apps/review-apps.sh - - install_api_client_dependencies_with_apk - -review-build-cng: +start-review-app-pipeline: extends: - - .default-retry - - .review:rules:review-build-cng - image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13 - stage: review-prepare - needs: - - job: compile-production-assets - artifacts: false - variables: - CNG_PROJECT_ACCESS_TOKEN: "${CNG_MIRROR_PROJECT_ACCESS_TOKEN}" # "Multi-pipeline (from 'gitlab-org/gitlab' 'review-build-cng' job)" at https://gitlab.com/gitlab-org/build/CNG-mirror/-/settings/access_tokens - CNG_PROJECT_PATH: "gitlab-org/build/CNG-mirror" - before_script: - - source ./scripts/utils.sh - - install_gitlab_gem - script: - - ./scripts/trigger-build cng - -.review-workflow-base: - extends: - - .default-retry - image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3.5-kubectl1.17 - variables: - HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" - DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "v5.2.1" - environment: - name: review/${CI_COMMIT_REF_SLUG}${FREQUENCY} - url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} - on_stop: review-stop - auto_stop_in: 48 hours - -review-deploy: - extends: - - .review-workflow-base - - .review:rules:review-deploy + - .review:rules:review-app-pipeline stage: review - needs: ["review-build-cng"] - resource_group: "review/${CI_COMMIT_REF_NAME}" - before_script: - - export GITLAB_SHELL_VERSION=$( environment_url.txt - - *base-before_script - script: - - check_kube_domain - - download_chart - - date - - deploy || (display_deployment_debug && exit 1) - - verify_deploy || exit 1 - - disable_sign_ups || (delete_release && exit 1) - after_script: - # Run seed-dast-test-data.sh only when DAST_RUN is set to true. This is to pupulate review app with data for DAST scan. - # Set DAST_RUN to true when jobs are manually scheduled. - - if [ "$DAST_RUN" == "true" ]; then source scripts/review_apps/seed-dast-test-data.sh; TRACE=1 trigger_proj_user_creation; fi - artifacts: - paths: - - environment_url.txt - - curl_output.txt - expire_in: 7 days - when: always - -.review-stop-base: - extends: .review-workflow-base - environment: - action: stop - dependencies: [] + needs: + - job: build-assets-image + artifacts: false + - job: build-qa-image + artifacts: false + # These variables are set in the pipeline schedules. + # They need to be explicitly passed on to the child pipeline. + # https://docs.gitlab.com/ee/ci/pipelines/multi_project_pipelines.html#pass-cicd-variables-to-a-downstream-pipeline-by-using-the-variables-keyword variables: - # We're cloning the repo instead of downloading the script for now - # because some repos are private and CI_JOB_TOKEN cannot access files. - # See https://gitlab.com/gitlab-org/gitlab/issues/191273 - GIT_DEPTH: 1 - before_script: - - *base-before_script - -review-delete-deployment: - extends: - - .review-stop-base - - .review:rules:review-delete-deployment - stage: prepare - script: - - delete_release - -review-stop: - extends: - - .review-stop-base - - .review:rules:review-stop - stage: post-qa - script: - - delete_k8s_release_namespace - -.review-qa-base: - extends: - - .use-docker-in-docker - image: - name: ${QA_IMAGE} - entrypoint: [""] - stage: qa - needs: ["build-qa-image", "review-deploy"] - variables: - QA_DEBUG: "true" - QA_CAN_TEST_GIT_PROTOCOL_V2: "false" - QA_GENERATE_ALLURE_REPORT: "true" - GITLAB_USERNAME: "root" - GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" - GITLAB_ADMIN_USERNAME: "root" - GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" - GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}" - EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}" - SIGNUP_DISABLED: "true" - before_script: - # Use $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA so that GitLab image built in omnibus-gitlab-mirror and QA image are in sync. - - if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_SHA" ]; then - git checkout -f ${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}; - fi - - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" - - echo "${CI_ENVIRONMENT_URL}" - - cd qa - artifacts: - paths: - - qa/tmp - expire_in: 7 days - when: always - -.allure-report-base: - image: - name: ${GITLAB_DEPENDENCY_PROXY}andrcuns/allure-report-publisher:0.3.4 - entrypoint: [""] - stage: post-qa - variables: - GIT_STRATEGY: none - STORAGE_CREDENTIALS: $QA_ALLURE_REPORT_GCS_CREDENTIALS - GITLAB_AUTH_TOKEN: $GITLAB_QA_MR_ALLURE_REPORT_TOKEN - allow_failure: true - script: - - | - allure-report-publisher upload gcs \ - --results-glob="qa/tmp/allure-results/*" \ - --bucket="gitlab-qa-allure-reports" \ - --prefix="$ALLURE_REPORT_PATH_PREFIX/$CI_COMMIT_REF_SLUG" \ - --update-pr="comment" \ - --copy-latest \ - --ignore-missing-results \ - --color - -review-qa-smoke: - extends: - - .review-qa-base - - .review:rules:review-qa-smoke - retry: 1 # This is confusing but this means "2 runs at max". - script: - - bin/test Test::Instance::Smoke "${CI_ENVIRONMENT_URL}" - -review-qa-all: - extends: - - .review-qa-base - - .review:rules:review-qa-all - parallel: 5 - script: - - export KNAPSACK_REPORT_PATH=knapsack/master_report.json - - export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb - - | - bin/test Test::Instance::All "${CI_ENVIRONMENT_URL}" \ - -- \ - --color --format documentation \ - --format RspecJunitFormatter --out tmp/rspec.xml - artifacts: - reports: - junit: qa/tmp/rspec.xml - -review-performance: - extends: - - .default-retry - - .review:rules:review-performance - image: - name: sitespeedio/sitespeed.io - entrypoint: [""] - stage: qa - needs: ["review-deploy"] - before_script: - - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" - - echo "${CI_ENVIRONMENT_URL}" - - mkdir -p gitlab-exporter - - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js - - mkdir -p sitespeed-results - script: - - /start.sh --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" - after_script: - - mv sitespeed-results/data/performance.json performance.json - artifacts: - paths: - - sitespeed-results/ - reports: - performance: performance.json - expire_in: 31d - -allure-report-qa-smoke: - extends: - - .allure-report-base - - .review:rules:review-qa-smoke-report - needs: ["review-qa-smoke"] - variables: - ALLURE_REPORT_PATH_PREFIX: gitlab-review-smoke - ALLURE_JOB_NAME: review-qa-smoke - -allure-report-qa-all: - extends: - - .allure-report-base - - .review:rules:review-qa-all-report - needs: ["review-qa-all"] - variables: - ALLURE_REPORT_PATH_PREFIX: gitlab-review-all - ALLURE_JOB_NAME: review-qa-all + FREQUENCY: $FREQUENCY + DAST_RUN: $DAST_RUN + trigger: + include: + - local: .gitlab/ci/review-apps/main.gitlab-ci.yml + strategy: depend danger-review: extends: diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index a4a932c7dd..8ddcf9c209 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -10,6 +10,9 @@ .if-not-foss: &if-not-foss if: '$CI_PROJECT_NAME != "gitlab-foss" && $CI_PROJECT_NAME != "gitlab-ce" && $CI_PROJECT_NAME != "gitlabhq"' +.if-jh: &if-jh + if: '$CI_PROJECT_PATH == "gitlab-jh/gitlab"' + .if-default-refs: &if-default-refs if: '$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH || $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' @@ -37,19 +40,22 @@ .if-automated-merge-request: &if-automated-merge-request if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "release-tools/update-gitaly" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /stable-ee$/' -.if-merge-request-title-as-if-foss: &if-merge-request-title-as-if-foss +.if-merge-request-labels-as-if-foss: &if-merge-request-labels-as-if-foss if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-as-if-foss/' -.if-merge-request-title-update-caches: &if-merge-request-title-update-caches +.if-merge-request-labels-as-if-jh: &if-merge-request-labels-as-if-jh + if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-as-if-jh/' + +.if-merge-request-labels-update-caches: &if-merge-request-labels-update-caches if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:update-cache/' -.if-merge-request-title-run-all-rspec: &if-merge-request-title-run-all-rspec +.if-merge-request-labels-run-all-rspec: &if-merge-request-labels-run-all-rspec if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-all-rspec/' -.if-merge-request-title-run-all-jest: &if-merge-request-title-run-all-jest +.if-merge-request-labels-run-all-jest: &if-merge-request-labels-run-all-jest if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-all-jest/' -.if-merge-request-run-decomposed: &if-merge-request-run-decomposed +.if-merge-request-labels-run-decomposed: &if-merge-request-labels-run-decomposed if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-decomposed/' .if-security-merge-request: &if-security-merge-request @@ -67,15 +73,24 @@ .if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"' +.if-dot-com-gitlab-org-schedule-child-pipeline: &if-dot-com-gitlab-org-schedule-child-pipeline + if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $FREQUENCY' + .if-dot-com-ee-schedule: &if-dot-com-ee-schedule if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule"' +.if-dot-com-ee-schedule-child-pipeline: &if-dot-com-ee-schedule-child-pipeline + if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $FREQUENCY' + .if-dot-com-ee-2-hourly-schedule: &if-dot-com-ee-2-hourly-schedule if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"' .if-dot-com-ee-nightly-schedule: &if-dot-com-ee-nightly-schedule if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "nightly"' +.if-dot-com-ee-nightly-schedule-child-pipeline: &if-dot-com-ee-nightly-schedule-child-pipeline + if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab" && $CI_PIPELINE_SOURCE == "parent_pipeline" && $FREQUENCY == "nightly"' + .if-cache-credentials-schedule: &if-cache-credentials-schedule if: '$CI_REPO_CACHE_CREDENTIALS && $CI_PIPELINE_SOURCE == "schedule"' @@ -91,13 +106,6 @@ .if-dot-com-gitlab-org-and-security-tag: &if-dot-com-gitlab-org-and-security-tag if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE =~ /^gitlab-org($|\/security$)/ && $CI_COMMIT_TAG' - -.if-rspec-fail-fast-disabled: &if-rspec-fail-fast-disabled - if: '$RSPEC_FAIL_FAST_ENABLED != "true"' - -.if-rspec-fail-fast-skipped: &if-rspec-fail-fast-skipped - if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:skip-rspec-fail-fast/' - # For Security merge requests, the gitlab-release-tools-bot triggers a new # pipeline for the "Pipelines for merged results" feature. If the pipeline # fails, we notify release managers. @@ -120,6 +128,7 @@ - ".gitlab/ci/frontend.gitlab-ci.yml" - ".gitlab/ci/build-images.gitlab-ci.yml" - ".gitlab/ci/review.gitlab-ci.yml" + - ".gitlab/ci/review-apps/**/*" - "scripts/review_apps/base-config.yaml" - "scripts/review_apps/review-apps.sh" - "scripts/trigger-build" @@ -150,13 +159,6 @@ - ".markdownlint.yml" - "scripts/lint-doc.sh" -.docs-deprecations-patterns: &docs-deprecations-patterns - - "doc/deprecations/index.md" - - "data/deprecations/*.yml" - - "data/deprecations/templates/_deprecation_template.md.erb" - - "lib/tasks/gitlab/docs/compile_deprecations.rake" - - "tooling/deprecations/docs.rb" - .bundler-patterns: &bundler-patterns - '{Gemfile.lock,*/Gemfile.lock,*/*/Gemfile.lock}' @@ -368,13 +370,16 @@ - "danger/**/*" - "tooling/danger/**/*" +.core-backend-patterns: &core-backend-patterns + - "{,jh/}Gemfile{,.lock}" + - "{,ee/,jh/}config/**/*.rb" + .core-frontend-patterns: &core-frontend-patterns - "{package.json,yarn.lock}" - "babel.config.js" - "jest.config.{base,integration,unit}.js" - "config/helpers/**/*.js" - "vendor/assets/javascripts/**/*" - - "{,ee/,jh/}app/assets/**/*.graphql" ################ # Shared rules # @@ -383,11 +388,11 @@ rules: - <<: *if-default-branch-schedule-2-hourly - <<: *if-security-schedule - - <<: *if-merge-request-title-update-caches + - <<: *if-merge-request-labels-update-caches .shared:rules:update-gitaly-binaries-cache: rules: - - <<: *if-merge-request-title-update-caches + - <<: *if-merge-request-labels-update-caches - changes: *gitaly-patterns ###################### @@ -471,12 +476,6 @@ changes: *docs-patterns when: on_success -.docs:rules:deprecations: - rules: - - <<: *if-default-refs - changes: *docs-deprecations-patterns - when: on_success - ################## # GraphQL rules # ################## @@ -502,24 +501,30 @@ .frontend:rules:compile-test-assets: rules: - changes: *code-backstage-qa-patterns - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec .frontend:rules:compile-test-assets-as-if-foss: rules: - <<: *if-not-ee when: never + - <<: *if-merge-request-labels-as-if-foss + - <<: *if-merge-request-labels-run-all-rspec - changes: *code-backstage-qa-patterns - - <<: *if-merge-request-title-run-all-rspec + - changes: *startup-css-patterns -.frontend:rules:default-frontend-jobs: - rules: - - <<: *if-default-refs - changes: *code-backstage-patterns - -.frontend:rules:default-frontend-jobs-ee: +.frontend:rules:compile-test-assets-as-if-jh: rules: - <<: *if-not-ee when: never + - <<: *if-jh + when: never + - <<: *if-merge-request-labels-as-if-jh + - <<: *if-merge-request-labels-run-all-rspec + - changes: *code-backstage-qa-patterns + - changes: *startup-css-patterns + +.frontend:rules:default-frontend-jobs: + rules: - <<: *if-default-refs changes: *code-backstage-patterns @@ -527,10 +532,27 @@ rules: - <<: *if-not-ee when: never + - <<: *if-jh + when: never - <<: *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-labels-as-if-foss + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *startup-css-patterns + - <<: *if-merge-request + changes: *ci-patterns + +.frontend:rules:default-frontend-jobs-as-if-jh: + rules: + - <<: *if-not-ee + when: never + - <<: *if-jh + when: never + - <<: *if-security-merge-request + changes: *code-backstage-patterns + - <<: *if-merge-request-labels-as-if-jh + - <<: *if-merge-request-labels-run-all-rspec - <<: *if-merge-request changes: *startup-css-patterns - <<: *if-merge-request @@ -538,7 +560,7 @@ .frontend:rules:jest: rules: - - <<: *if-merge-request-title-run-all-jest + - <<: *if-merge-request-labels-run-all-jest - <<: *if-default-refs changes: *core-frontend-patterns - <<: *if-merge-request @@ -558,7 +580,7 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-jest + - <<: *if-merge-request-labels-run-all-jest when: never - <<: *if-default-refs changes: *core-frontend-patterns @@ -576,7 +598,10 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-as-if-foss + - <<: *if-jh + when: never + # We already have `static-analysis as-if-foss` which already runs `lint:eslint:all` if the `pipeline:run-as-if-foss` label is set. + - <<: *if-merge-request-labels-as-if-foss when: never - <<: *if-merge-request changes: *frontend-patterns @@ -644,10 +669,12 @@ rules: - <<: *if-not-ee when: never + - <<: *if-jh + when: never - <<: *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-labels-as-if-foss + - <<: *if-merge-request-labels-run-all-rspec - <<: *if-merge-request changes: *ci-patterns @@ -673,12 +700,13 @@ ############### .rails:rules:decomposed-databases: rules: - - <<: *if-merge-request-run-decomposed - allow_failure: true + - <<: *if-merge-request-labels-run-decomposed .rails:rules:ee-and-foss-migration: rules: - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-merge-request @@ -695,7 +723,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -708,7 +739,7 @@ rules: - <<: *if-merge-request changes: *db-patterns - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec .rails:rules:db:gitlabcom-database-testing: rules: @@ -720,7 +751,9 @@ .rails:rules:ee-and-foss-unit: rules: - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -735,7 +768,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -745,7 +781,9 @@ .rails:rules:ee-and-foss-integration: rules: - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -760,7 +798,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -770,7 +811,9 @@ .rails:rules:ee-and-foss-system: rules: - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -785,7 +828,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -795,7 +841,9 @@ .rails:rules:ee-and-foss-fast_spec_helper: rules: - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -810,7 +858,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -821,13 +872,15 @@ .rails:rules:code-backstage-qa: rules: - changes: *code-backstage-qa-patterns - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec .rails:rules:ee-only-migration: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-merge-request @@ -846,7 +899,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -859,7 +915,9 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -876,7 +934,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -888,7 +949,9 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -905,7 +968,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -917,7 +983,9 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -934,7 +1002,10 @@ when: never - <<: *if-automated-merge-request when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + when: never + - <<: *if-merge-request + changes: *core-backend-patterns when: never - <<: *if-merge-request changes: *ci-patterns @@ -946,12 +1017,14 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-security-merge-request changes: *db-patterns - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *db-patterns - <<: *if-automated-merge-request changes: *db-patterns @@ -966,13 +1039,16 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never - <<: *if-security-merge-request changes: *db-patterns when: never - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *db-patterns when: never @@ -980,7 +1056,9 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -989,7 +1067,7 @@ when: never - <<: *if-security-merge-request changes: *backend-patterns - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *backend-patterns .rails:rules:as-if-foss-unit:minimal: @@ -1000,19 +1078,24 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never - <<: *if-security-merge-request changes: *backend-patterns - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *backend-patterns .rails:rules:as-if-foss-integration: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -1021,7 +1104,7 @@ when: never - <<: *if-security-merge-request changes: *backend-patterns - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *backend-patterns .rails:rules:as-if-foss-integration:minimal: @@ -1032,19 +1115,24 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never - <<: *if-security-merge-request changes: *backend-patterns - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *backend-patterns .rails:rules:as-if-foss-system: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -1053,7 +1141,7 @@ when: never - <<: *if-security-merge-request changes: *code-backstage-patterns - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *code-backstage-patterns .rails:rules:as-if-foss-system:minimal: @@ -1064,24 +1152,27 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never - <<: *if-security-merge-request changes: *code-backstage-patterns - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *code-backstage-patterns .rails:rules:ee-and-foss-db-library-code: rules: - changes: *db-library-patterns - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec .rails:rules:ee-mr-and-default-branch-only: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec - <<: *if-merge-request changes: *code-backstage-patterns - <<: *if-default-branch-refs @@ -1090,13 +1181,13 @@ .rails:rules:detect-tests: rules: - changes: *code-backstage-patterns - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec .rails:rules:rspec-foss-impact: rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss when: never - <<: *if-security-merge-request changes: *code-backstage-patterns @@ -1105,10 +1196,6 @@ .rails:rules:rspec fail-fast: rules: - - <<: *if-rspec-fail-fast-disabled - when: never - - <<: *if-rspec-fail-fast-skipped - when: never - <<: *if-not-ee when: never - <<: *if-security-merge-request @@ -1118,10 +1205,6 @@ .rails:rules:fail-pipeline-early: rules: - - <<: *if-rspec-fail-fast-disabled - when: never - - <<: *if-rspec-fail-fast-skipped - when: never - <<: *if-not-ee when: never - <<: *if-security-merge-request @@ -1136,7 +1219,7 @@ - <<: *if-not-ee when: never - <<: *if-default-branch-schedule-nightly - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec .rails:rules:rspec-coverage: rules: @@ -1146,7 +1229,7 @@ changes: *code-backstage-patterns when: always - <<: *if-default-branch-schedule-2-hourly - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec when: always .rails:rules:default-branch-schedule-nightly--code-backstage: @@ -1181,7 +1264,7 @@ rules: - <<: *if-not-ee when: never - - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request-labels-as-if-foss changes: *code-backstage-qa-patterns - <<: *if-security-merge-request changes: *code-backstage-qa-patterns @@ -1196,7 +1279,7 @@ rules: - <<: *if-merge-request changes: ["vendor/gems/mail-smtp_pool/**/*"] - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec ################## # Releases rules # @@ -1222,75 +1305,76 @@ when: never - <<: *if-default-refs changes: *code-backstage-patterns - allow_failure: true -.reports:rules:sast: +.reports:rules:brakeman-sast: rules: - - if: '$SAST_DISABLED || $GITLAB_FEATURES !~ /\bsast\b/' + - if: $SAST_DISABLED when: never - - <<: *if-default-refs - changes: *code-backstage-qa-patterns - allow_failure: true + - if: $SAST_EXCLUDED_ANALYZERS =~ /brakeman/ + when: never + - changes: + - '**/*.rb' + - '**/Gemfile' + +.reports:rules:gosec-sast: + rules: + - if: $SAST_DISABLED + when: never + - if: $SAST_EXCLUDED_ANALYZERS =~ /gosec/ + when: never + - changes: + - '**/*.go' + +.reports:rules:semgrep-sast: + rules: + - if: $SAST_DISABLED + when: never + - if: $SAST_EXCLUDED_ANALYZERS =~ /semgrep/ + when: never + - changes: + - '**/*.py' + - '**/*.js' + - '**/*.jsx' + - '**/*.ts' + - '**/*.tsx' + - '**/*.c' + - '**/*.go' .reports:rules:secret_detection: rules: - if: '$SECRET_DETECTION_DISABLED' when: never - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # The Secret-Detection template already has a `secret_detection_default_branch` job - when: never - changes: *code-backstage-qa-patterns - allow_failure: true .reports:rules:gemnasium-dependency_scanning: rules: - - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /gemnasium([^-]|$)/' + - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /gemnasium([^-]|$)/ || $DS_DEFAULT_ANALYZERS !~ /gemnasium([^-]|$)/' when: never - - <<: *if-default-refs - changes: *dependency-patterns - allow_failure: true + - changes: *dependency-patterns .reports:rules:bundler-audit-dependency_scanning: rules: - - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /bundler-audit/' + - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /bundler-audit/ || $DS_DEFAULT_ANALYZERS !~ /bundler-audit/' when: never - - <<: *if-default-refs - changes: *bundler-patterns - allow_failure: true + - changes: *bundler-patterns .reports:rules:retire-js-dependency_scanning: rules: - - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /retire.js/' + - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /retire.js/ || $DS_DEFAULT_ANALYZERS !~ /retire.js/' when: never - - <<: *if-default-refs - changes: *nodejs-patterns - allow_failure: true + - changes: *nodejs-patterns .reports:rules:gemnasium-python-dependency_scanning: rules: - - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /gemnasium-python/' + - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/ || $DS_EXCLUDED_ANALYZERS =~ /gemnasium-python/ || $DS_DEFAULT_ANALYZERS !~ /gemnasium-python/' when: never - - <<: *if-default-refs - changes: *python-patterns - allow_failure: true - -.reports:rules:dast: - rules: - - if: '$DAST_DISABLED || $GITLAB_FEATURES !~ /\bdast\b/' - when: never - - <<: *if-dot-com-gitlab-org-merge-request - changes: *frontend-patterns - allow_failure: true - - <<: *if-dot-com-gitlab-org-merge-request - changes: *code-qa-patterns - when: manual - allow_failure: true + - changes: *python-patterns .reports:rules:schedule-dast: rules: - if: '$DAST_DISABLED || $GITLAB_FEATURES !~ /\bdast\b/' when: never - - <<: *if-dot-com-ee-nightly-schedule - allow_failure: true + - <<: *if-dot-com-ee-nightly-schedule-child-pipeline .reports:rules:package_hunter-yarn: rules: @@ -1310,16 +1394,14 @@ .reports:rules:license_scanning: rules: - - if: '$LICENSE_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\blicense_scanning\b/' + - if: '$LICENSE_MANAGEMENT_DISABLED || $GITLAB_FEATURES !~ /\blicense_scanning\b/' when: never - - <<: *if-default-refs - changes: *code-backstage-qa-patterns - allow_failure: true + - changes: *code-backstage-qa-patterns ################ # Review rules # ################ -.review:rules:review-build-cng: +.review:rules:review-app-pipeline: rules: - <<: *if-not-ee when: never @@ -1336,6 +1418,22 @@ allow_failure: true - <<: *if-dot-com-gitlab-org-schedule +.review:rules:review-build-cng: + rules: + - <<: *if-not-ee + when: never + - <<: *if-dot-com-gitlab-org-merge-request + changes: *ci-review-patterns + - <<: *if-dot-com-gitlab-org-merge-request + changes: *frontend-patterns + - <<: *if-dot-com-gitlab-org-merge-request + changes: *code-patterns + allow_failure: true + - <<: *if-dot-com-gitlab-org-merge-request + changes: *qa-patterns + allow_failure: true + - <<: *if-dot-com-gitlab-org-schedule-child-pipeline + .review:rules:review-deploy: rules: - <<: *if-not-ee @@ -1351,7 +1449,7 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *qa-patterns allow_failure: true - - <<: *if-dot-com-gitlab-org-schedule + - <<: *if-dot-com-gitlab-org-schedule-child-pipeline allow_failure: true .review:rules:review-performance: @@ -1368,7 +1466,7 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *code-qa-patterns allow_failure: true - - <<: *if-dot-com-gitlab-org-schedule + - <<: *if-dot-com-gitlab-org-schedule-child-pipeline allow_failure: true .review:rules:review-delete-deployment: @@ -1390,7 +1488,7 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *code-qa-patterns allow_failure: true - - <<: *if-dot-com-ee-schedule + - <<: *if-dot-com-ee-schedule-child-pipeline allow_failure: true # The rule needs to be duplicated between `on_success` and `on_failure` @@ -1418,9 +1516,9 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *code-qa-patterns when: on_failure - - <<: *if-dot-com-ee-schedule + - <<: *if-dot-com-ee-schedule-child-pipeline when: on_success - - <<: *if-dot-com-ee-schedule + - <<: *if-dot-com-ee-schedule-child-pipeline when: on_failure .review:rules:review-qa-all: @@ -1434,7 +1532,7 @@ - <<: *if-dot-com-gitlab-org-merge-request changes: *qa-patterns allow_failure: true - - <<: *if-dot-com-ee-nightly-schedule + - <<: *if-dot-com-ee-nightly-schedule-child-pipeline allow_failure: true # The rule needs to be duplicated between `on_success` and `on_failure` @@ -1456,10 +1554,10 @@ changes: *qa-patterns when: on_failure allow_failure: true - - <<: *if-dot-com-ee-nightly-schedule + - <<: *if-dot-com-ee-nightly-schedule-child-pipeline when: on_success allow_failure: true - - <<: *if-dot-com-ee-nightly-schedule + - <<: *if-dot-com-ee-nightly-schedule-child-pipeline when: on_failure allow_failure: true @@ -1471,7 +1569,7 @@ changes: *code-qa-patterns when: manual allow_failure: true - - <<: *if-dot-com-gitlab-org-schedule + - <<: *if-dot-com-gitlab-org-schedule-child-pipeline allow_failure: true .review:rules:review-stop: @@ -1534,6 +1632,17 @@ changes: *code-backstage-patterns when: on_success +.setup:rules:add-jh-folder: + rules: + - <<: *if-not-ee + when: never + - <<: *if-jh + when: never + - <<: *if-merge-request-labels-as-if-jh + - <<: *if-merge-request-labels-run-all-rspec + - changes: *code-backstage-qa-patterns + - changes: *startup-css-patterns + ####################### # Test metadata rules # ####################### @@ -1541,7 +1650,7 @@ rules: - changes: *code-backstage-patterns when: on_success - - <<: *if-merge-request-title-run-all-rspec + - <<: *if-merge-request-labels-run-all-rspec .test-metadata:rules:update-tests-metadata: rules: diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index 60a1ad54cf..eb7a5afad3 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -101,3 +101,19 @@ detect-tests as-if-foss: MATCHED_TESTS_FILE: tmp/matching_foss_tests.txt before_script: - '[ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb' + +add-jh-folder: + extends: .setup:rules:add-jh-folder + image: ${GITLAB_DEPENDENCY_PROXY}alpine:edge + stage: prepare + before_script: + - apk add --no-cache --update curl bash + script: + - curl --location -o "jh-folder.tar.gz" "https://gitlab.com/gitlab-jh/gitlab/-/archive/main-jh/gitlab-main-jh.tar.gz?path=jh" + - tar -xf "jh-folder.tar.gz" + - mv gitlab-main-jh-jh/jh/ ./ + - ls -l jh/ + artifacts: + expire_in: 2d + paths: + - jh/ diff --git a/.gitlab/ci/static-analysis.gitlab-ci.yml b/.gitlab/ci/static-analysis.gitlab-ci.yml index 1394085b6e..85df68e903 100644 --- a/.gitlab/ci/static-analysis.gitlab-ci.yml +++ b/.gitlab/ci/static-analysis.gitlab-ci.yml @@ -35,6 +35,17 @@ static-analysis: paths: - tmp/feature_flags/ +static-analysis-with-database: + extends: + - .static-analysis-base + - .static-analysis:rules:ee-and-foss + - .use-pg12 + stage: test + script: + - bundle exec rake lint:static_verification_with_database + variables: + SETUP_DB: "true" + static-analysis as-if-foss: extends: - static-analysis diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml index ac71997797..2d96fb6d4b 100644 --- a/.gitlab/ci/test-metadata.gitlab-ci.yml +++ b/.gitlab/ci/test-metadata.gitlab-ci.yml @@ -29,8 +29,7 @@ update-tests-metadata: - retrieve-tests-metadata - setup-test-env - rspec migration pg12 - - rspec frontend_fixture - - rspec-ee frontend_fixture + - rspec-all frontend_fixture - rspec unit pg12 - rspec integration pg12 - rspec system pg12 diff --git a/.gitlab/issue_templates/Feature Flag Roll Out.md b/.gitlab/issue_templates/Feature Flag Roll Out.md index 1576f6e8f5..00b396bac4 100644 --- a/.gitlab/issue_templates/Feature Flag Roll Out.md +++ b/.gitlab/issue_templates/Feature Flag Roll Out.md @@ -24,26 +24,6 @@ Are there any other stages or teams involved that need to be kept in the loop? - The Delivery Team --> -## The Rollout Plan - -- Partial Rollout on GitLab.com with testing groups -- Rollout on GitLab.com for a certain period (How long) -- Percentage Rollout on GitLab.com -- Rollout Feature for everyone as soon as it's ready - - - -## Testing Groups/Projects/Users - - - -- `gitlab-org/gitlab` project -- `gitlab-org/gitlab-foss` project -- `gitlab-com/www-gitlab-com` project -- `gitlab-org`/`gitlab-com` groups -- ... - - ## Expectations ### What are we expecting to happen? @@ -62,17 +42,30 @@ Are there any other stages or teams involved that need to be kept in the loop? ### Rollout on non-production environments -- [ ] Ensure that the feature MRs have been deployed to non-production environments. +- Ensure that the feature MRs have been deployed to non-production environments. - [ ] `/chatops run auto_deploy status ` - [ ] Enable the feature globally on non-production environments. - [ ] `/chatops run feature set true --dev` - [ ] `/chatops run feature set true --staging` - [ ] Verify that the feature works as expected. Posting the QA result in this issue is preferable. -### Preparation before production rollout +### Specific rollout on production -- [ ] Ensure that the feature MRs have been deployed to both production and canary. +- Ensure that the feature MRs have been deployed to both production and canary. - [ ] `/chatops run auto_deploy status ` +- If you're using [project-actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), you must enable the feature on these entries: + - [ ] `/chatops run feature set --project=gitlab-org/gitlab true` + - [ ] `/chatops run feature set --project=gitlab-org/gitlab-foss true` + - [ ] `/chatops run feature set --project=gitlab-com/www-gitlab-com true` +- If you're using [group-actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), you must enable the feature on these entries: + - [ ] `/chatops run feature set --group=gitlab-org true` + - [ ] `/chatops run feature set --group=gitlab-com true` +- If you're using [user-actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), you must enable the feature on these entries: + - [ ] `/chatops run feature set --user= true` +- [ ] Verify that the feature works on the specific entries. Posting the QA result in this issue is preferable. + +### Preparation before global rollout + - [ ] Check if the feature flag change needs to be accompanied with a [change management issue](https://about.gitlab.com/handbook/engineering/infrastructure/change-management/#feature-flags-and-the-change-management-process). Cross link the issue here if it does. @@ -86,19 +79,13 @@ Are there any other stages or teams involved that need to be kept in the loop? All `/chatops` commands that target production should be done in the `#production` slack channel for visibility. -- [ ] Confirm the feature flag is enabled on `staging` without incident -- [ ] Roll out the feature to targeted testing projects/groups first - - [ ] `/chatops run feature set --project=gitlab-org/gitlab true` - - [ ] `/chatops run feature set --project=gitlab-org/gitlab-foss true` - - [ ] `/chatops run feature set --project=gitlab-com/www-gitlab-com true` - - [ ] [Incrementally roll out](https://docs.gitlab.com/ee/development/feature_flags/controls.html#process) the feature. - If the feature flag in code has [an actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), perform **actor-based** rollout. - [ ] `/chatops run feature set --actors` - If the feature flag in code does **NOT** have [an actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), perform time-based rollout (**random** rollout). - [ ] `/chatops run feature set ` -- [ ] Verify the change has the desired outcome with the limited rollout before enabling the feature globally on production. -- [ ] Enable the feature globally on production environment. `/chatops run feature set true` + - Enable the feature globally on production environment. + - [ ] `/chatops run feature set true` - [ ] Announce on [the feature issue](ISSUE LINK) that the feature has been globally enabled. - [ ] Wait for [at least one day for the verification term](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#including-a-feature-behind-feature-flag-in-the-final-release). diff --git a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md index 476ee14a63..0d82294579 100644 --- a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md +++ b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md @@ -109,7 +109,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org bin/rake geo:db:migrate ``` -- [ ] Be sure to commit the relevant changes in `ee/db/geo/schema.rb` +- [ ] Be sure to commit the relevant changes in `ee/db/geo/structure.sql` ### Add verification state fields on the Geo primary site diff --git a/.gitlab/issue_templates/Geo Replicate a new blob type.md b/.gitlab/issue_templates/Geo Replicate a new blob type.md index aef983f649..00a71fa406 100644 --- a/.gitlab/issue_templates/Geo Replicate a new blob type.md +++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md @@ -110,7 +110,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org bin/rake geo:db:migrate ``` -- [ ] Be sure to commit the relevant changes in `ee/db/geo/schema.rb` +- [ ] Be sure to commit the relevant changes in `ee/db/geo/structure.sql` ### Add verification state fields on the Geo primary site diff --git a/.gitlab/issue_templates/Navigation - Left Sidebar Proposals.md b/.gitlab/issue_templates/Navigation - Left Sidebar Proposals.md index 57d6d12267..e9e510da11 100644 --- a/.gitlab/issue_templates/Navigation - Left Sidebar Proposals.md +++ b/.gitlab/issue_templates/Navigation - Left Sidebar Proposals.md @@ -8,8 +8,7 @@ - [ ] If your proposal includes changes to the top-level menu items within the left sidebar, engage the [Foundations Product Design Manager](https://about.gitlab.com/handbook/product/categories/#foundations-group) for approval. The Foundations DRI will work with UX partners in product design, research, and technical writing, as applicable. - [ ] Follow the [product development workflow](https://about.gitlab.com/handbook/product-development-flow/#validation-phase-2-problem-validation) validation process to ensure you are solving a well understood problem and that the proposed change is understandable and non-disruptive to users. Navigation-specific research is strongly encouraged. -- [ ] Engage the [Editor](https://about.gitlab.com/handbook/engineering/development/dev/create-editor/) team to ensure your proposal is in alignment with holistic changes happening to the left side bar. +- [ ] Engage the [Foundations](https://about.gitlab.com/handbook/product/categories/#foundations-group) team to ensure your proposal is in alignment with holistic changes happening to the left side bar. - [ ] Consider whether you need to communicate the change somehow, or if you will have an interim period in the UI where your nav item will live in more than one place. -- [ ] Once implemented, update this [navigation map in Mural](https://app.mural.co/t/gitlab2474/m/gitlab2474/1589571490215/261462d0beb3043979374623710d3f2d6cfec1cb) with your navigation change. /label ~UX ~"UI text" ~"documentation" ~"documentation" ~"Category:Navigation & Settings" ~"Category:Foundations" ~navigation diff --git a/.gitlab/merge_request_templates/Deprecations.md b/.gitlab/merge_request_templates/Deprecations.md new file mode 100644 index 0000000000..8431e9ca39 --- /dev/null +++ b/.gitlab/merge_request_templates/Deprecations.md @@ -0,0 +1,82 @@ + + +/label ~"release post" ~"release post item" ~"Technical Writing" ~"devops::" ~"group::" +/milestone % +/assign `@PM` + +**Be sure to link this MR to the relevant deprecation issue(s).** + +**By the 10th**: Assign this MR to these team members as Reviewer and for Approval (optional unless noted as required): + +- Product Marketing: `@PMM` +- Product Designer(s): `@ProductDesigners` +- Group Manager or Director: `@manager` +- Engineering Manager: `@EM` - Required + +**By 8:00 AM PDT 15th**: PM will assign this MR to the TW reviewer: `@PM` + +**By 11:59 PM PDT 15th**: TW Reviewer will perform final review and merge this MR to Master: `@TW` + +--- + +Please review the [guidelines for deprecations](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations), +as well as the process for [creating a deprecation entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry). +They are frequently updated, and everyone should make sure they are aware of the current standards (PM, PMM, EM, and TW). + +## Links + +- Deprecation Issue: +- Deprecation MR (optional): + +## PM release post item checklist + +- [ ] Set yourself as the Assignee. +- [ ] Follow the process to [create a deprecation YAML file](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry). +- [ ] Add reviewers by the 10th +- [ ] When ready to be merged and not later than the 15th, add the ~ready label and @ message the TW for final review and merge. + +## Reviewers + +When the content is ready for review, it must be reviewed by Technical Writer and Engineering Manager, but can also be reviewed by +Product Marketing, Product Design, and the Product Leaders for this area. Please use the +[Reviewers for Merge Requests](https://docs.gitlab.com/ee/user/project/merge_requests/getting_started#reviewer) +feature for all reviews. Reviewers will then `approve` the MR and remove themselves from Reviewers when their review is complete. + +- [ ] (Recommended) PMM +- [ ] (Optional) Product Designer +- [ ] (Optional) Group Manager or Director +- [ ] Required review and approval: [Technical Writer designated to the corresponding DevOps stage/group](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments). + +### Tech writer review + +After being added as a Reviewer to this merge request, the TW performs their review +according to the criteria described below. + +Review deprecation MRs with a similar process as regular docs MRs. Add suggestions +as needed, @ message the PM to inform them the first review is complete, and remove +yourself as a reviewer if it's not ready for merge yet. + +
+Expand for Details + +- [ ] Title: + - Length limit: 7 words (not including articles or prepositions). + - Capitalization: ensure the title is [sentence cased](https://design.gitlab.com/content/punctuation#case). + - No Markdown `` `code` `` formatting in the title, as it doesn't render correctly in the release post. +- [ ] Consistency: + - Ensure that all resources (docs, deprecation, etc.) refer to the feature with the same term / feature name. +- [ ] Content: + - Make sure the deprecation is accurate based on your understanding. Look for typos or grammar mistakes. Work with PM and PMM to ensure a consistent GitLab style and tone for messaging, based on other features and deprecations. + - Review use of whitespace and bullet lists. Will the deprecation item be easily scannable when published? Consider adding line breaks or breaking content into bullets if you have more than a few sentences. + - Make sure there aren't acronyms readers may not understand per . +- [ ] Links: + - All links must be full URLs, as the deprecation YAML files are used in two different projects. Do not use relative links. The generated doc is an exception to the relative link rule and currently uses absolute links only. + - Make sure all links and anchors are correct. Do not link to the H1 (top) anchor on a docs page. +- [ ] Code. Make sure any included code is wrapped in code blocks. +- [ ] Capitalization. Make sure to capitalize feature names. Stay consistent with the Documentation Style Guidance on [Capitalization](https://docs.gitlab.com/ee/development/documentation/styleguide.html#capitalization). +- [ ] Blank spaces. Remove unnecessary spaces (end of line spaces, double spaces, extra blank lines, and lines with only spaces). + +
+ +When the PM indicates it is ready for merge, all issues have been addressed merge this MR. + - You must merge this MR by the 15th so the Release Post TW lead can run the [deprecations in Docs rake task](https://about.gitlab.com/handbook/marketing/blog/release-posts/#update-the-deprecations-doc) on the 16th diff --git a/.gitpod.yml b/.gitpod.yml index e9cc798ed1..d546cc7f64 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -16,8 +16,7 @@ tasks: # GitLab [[ -d /workspace/gitlab ]] && ln -fs /workspace/gitlab /workspace/gitlab-development-kit/gitlab mv /workspace/gitlab-development-kit/secrets.yml /workspace/gitlab-development-kit/gitlab/config - # update gdk.yml - gdk config set gitlab.rails.hostname $(gp url 3000 | sed -e 's+^http[s]*://++') + # ensure gdk.yml has correct instance settings gdk config set gitlab.rails.port 443 gdk config set gitlab.rails.https.enabled true # reconfigure GDK @@ -42,6 +41,13 @@ tasks: echo "$(date) – Updating GDK" | tee -a /workspace/startup.log gdk update fi + # ensure gdk.yml has correct instance settings + gdk config set gitlab.rails.hostname $(gp url 3000 | sed -e 's+^http[s]*://++') + gdk config set gitlab.rails.port 443 + gdk config set gitlab.rails.https.enabled true + # reconfigure GDK + echo "$(date) – Reconfiguring GDK" | tee -a /workspace/startup.log + gdk reconfigure # start GDK echo "$(date) – Starting GDK" | tee -a /workspace/startup.log export DEV_SERVER_PUBLIC_ADDR=$(gp url 3808) diff --git a/.rubocop.yml b/.rubocop.yml index 141ba874b2..4bf2392867 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -28,7 +28,6 @@ AllCops: - 'node_modules/**/*' - 'db/fixtures/**/*' - 'db/schema.rb' - - 'ee/db/geo/schema.rb' - 'tmp/**/*' - 'bin/**/*' - 'generator_templates/**/*' diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 2cbfeec104..a646f6ec95 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -296,7 +296,6 @@ Rails/TimeZone: - 'spec/lib/gitlab/graphql_logger_spec.rb' - 'spec/lib/gitlab/graphs/commits_spec.rb' - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb' - - 'spec/lib/gitlab/instrumentation_helper_spec.rb' - 'spec/lib/gitlab/json_logger_spec.rb' - 'spec/lib/gitlab/lfs_token_spec.rb' - 'spec/lib/gitlab/log_timestamp_formatter_spec.rb' @@ -384,10 +383,8 @@ RSpec/TimecopFreeze: - 'spec/lib/gitlab/checks/timed_logger_spec.rb' - 'spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb' - 'spec/lib/gitlab/cycle_analytics/usage_data_spec.rb' - - 'spec/lib/gitlab/instrumentation_helper_spec.rb' - 'spec/lib/gitlab/omniauth_logging/json_formatter_spec.rb' - '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/tooling/rspec_flaky/flaky_example_spec.rb' - 'spec/tooling/rspec_flaky/listener_spec.rb' @@ -744,7 +741,6 @@ RSpec/AnyInstanceOf: - 'spec/policies/ci/pipeline_policy_spec.rb' - 'spec/presenters/gitlab/blame_presenter_spec.rb' - 'spec/presenters/merge_request_presenter_spec.rb' - - 'spec/requests/api/api_spec.rb' - 'spec/requests/api/ci/runner/jobs_artifacts_spec.rb' - 'spec/requests/api/ci/runner/jobs_put_spec.rb' - 'spec/requests/api/ci/runner/jobs_request_post_spec.rb' @@ -1769,7 +1765,6 @@ Gitlab/NamespacedClass: - 'app/workers/pages_domain_ssl_renewal_worker.rb' - 'app/workers/pages_domain_verification_cron_worker.rb' - 'app/workers/pages_domain_verification_worker.rb' - - 'app/workers/pages_remove_worker.rb' - 'app/workers/pages_transfer_worker.rb' - 'app/workers/pages_update_configuration_worker.rb' - 'app/workers/pages_worker.rb' @@ -2589,13 +2584,9 @@ Rails/IncludeUrlHelper: - 'app/models/integrations/youtrack.rb' - 'app/presenters/alert_management/alert_presenter.rb' - 'app/presenters/ci/pipeline_presenter.rb' - - 'app/presenters/clusters/cluster_presenter.rb' - 'app/presenters/environment_presenter.rb' - 'app/presenters/gitlab/blame_presenter.rb' - - 'app/presenters/group_clusterable_presenter.rb' - - 'app/presenters/instance_clusterable_presenter.rb' - 'app/presenters/merge_request_presenter.rb' - - 'app/presenters/project_clusterable_presenter.rb' - 'app/presenters/project_presenter.rb' - 'app/presenters/prometheus_alert_presenter.rb' - 'app/presenters/release_presenter.rb' @@ -2607,7 +2598,6 @@ Rails/IncludeUrlHelper: - 'ee/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb' - 'ee/spec/lib/banzai/filter/issuable_state_filter_spec.rb' - 'lib/gitlab/ci/badge/metadata.rb' - - 'lib/gitlab/email/message/in_product_marketing/helper.rb' - 'spec/helpers/merge_requests_helper_spec.rb' - 'spec/helpers/nav/top_nav_helper_spec.rb' - 'spec/helpers/notify_helper_spec.rb' diff --git a/.stylelintrc b/.stylelintrc index a4331811eb..488e34dd7d 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -13,6 +13,7 @@ "./scripts/frontend/stylelint/stylelint-utility-classes.js", ], "rules":{ + "at-rule-disallowed-list": ["extend"], "max-nesting-depth": [ 3, { diff --git a/CHANGELOG.md b/CHANGELOG.md index ab9f3dd35e..dad5599a28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,23 +2,428 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 14.3.4 (2021-10-28) +## 14.4.2 (2021-11-08) + +### Fixed (3 changes) + +- [Skip retrying for reads on connection errors if primary only](gitlab-org/gitlab@8e1976ed75bd6c606d49c83863cf46bf3c4d5070) ([merge request](gitlab-org/gitlab!73919)) +- [Fix error 500 loading branch with UTF-8 characters with performance bar](gitlab-org/gitlab@67ddc428472d57bb3d8a4a84eb0750487a175f75) ([merge request](gitlab-org/gitlab!73919)) +- [Skip st_diff callback setting on LegacyDiffNote when importing](gitlab-org/gitlab@84f5c66321473cd702b3b671584054fcf3d141ae) ([merge request](gitlab-org/gitlab!73919)) + +### Changed (1 change) + +- [Remove skip_legacy_diff_note_callback_on_import from legacy diff note](gitlab-org/gitlab@547a2ec29ea9e9299eab727899c3d90886ffc21c) ([merge request](gitlab-org/gitlab!73919)) + +### Performance (1 change) + +- [Prevent Sidekiq size limiter middleware from running multiple times on the same job](gitlab-org/gitlab@294c01be38d400607536fb20a2038e098c0f0e28) ([merge request](gitlab-org/gitlab!73919)) + +## 14.4.1 (2021-10-28) ### Security (13 changes) -- [Highlight usage of unicode bidi characters](gitlab-org/security/gitlab@0b9bcafa73bc12ad873f75584b993f7b94f1f2e7) ([merge request](gitlab-org/security/gitlab!1938)) -- [Fix dompurify.js to prevent path traversal attacks](gitlab-org/security/gitlab@6599afd4d7357ab356fcb773af19f8388978b3ed) ([merge request](gitlab-org/security/gitlab!1930)) -- [Refresh authorizations on transfer of groups having project shares](gitlab-org/security/gitlab@faad71f44a1b1048b73897d450c923a18ec18c0b) ([merge request](gitlab-org/security/gitlab!1917)) -- [Do not allow Applications API to create apps with blank scopes](gitlab-org/security/gitlab@293931500c84ef7ea9a2117d3ddf094f8ac15dcf) ([merge request](gitlab-org/security/gitlab!1923)) -- [Don't allow author to resolve discussions when MR is locked via GraphQL](gitlab-org/security/gitlab@5027cb2b0303645a921b95d324d3d55dcf7632e4) ([merge request](gitlab-org/security/gitlab!1920)) -- [Workhorse: Allow uploading only a single file](gitlab-org/security/gitlab@c18c2ddfa34a4c3e476136ab3eba9be7f265ad59) ([merge request](gitlab-org/security/gitlab!1914)) -- [Group owners should see SCIM token only once](gitlab-org/security/gitlab@3d6664461da720fb256d8e139961b383e33a3b90) ([merge request](gitlab-org/security/gitlab!1907)) **GitLab Enterprise Edition** -- [Respect visibility level settings when updating project via API](gitlab-org/security/gitlab@124ca62c02bfa8ef6f7de7b328f80756fd01c052) ([merge request](gitlab-org/security/gitlab!1904)) -- [Avoid decoding the whole tiff image on isTIFF check](gitlab-org/security/gitlab@8e6ffd52f50170a5cf2761e50a3d6efaca5fe64f) ([merge request](gitlab-org/security/gitlab!1900)) -- [Adding a '[redacted]' to mask private email addresses](gitlab-org/security/gitlab@6f2a2b2240eb7590bbc773f35d3927d4854a31b5) ([merge request](gitlab-org/security/gitlab!1894)) -- [Do not display the root password by default](gitlab-org/security/gitlab@87893548183fc4a111e12c0bdb3e409175a41668) ([merge request](gitlab-org/security/gitlab!1803)) -- [Set PipelineSchedules to inactive](gitlab-org/security/gitlab@0e77e1cd938f876f3e9c049a84486c8c90cd0f3f) ([merge request](gitlab-org/security/gitlab!1879)) -- [Remove external_webhook_token from exported project](gitlab-org/security/gitlab@1362f7481aad5e4295da11f0db53e31600c7c7b5) ([merge request](gitlab-org/security/gitlab!1866)) +- [Highlight usage of unicode bidi characters](gitlab-org/security/gitlab@cef762a270783780112c7bf318e353a39de1aa1e) ([merge request](gitlab-org/security/gitlab!1937)) +- [Fix dompurify.js to prevent path traversal attacks](gitlab-org/security/gitlab@9a891cbe465a302f260f0f81fc490cacb9e8c70e) ([merge request](gitlab-org/security/gitlab!1929)) +- [Refresh authorizations on transfer of groups having project shares](gitlab-org/security/gitlab@bdf8b6e90d0a1f719c0f389f29ea5dc41c22f119) ([merge request](gitlab-org/security/gitlab!1916)) +- [Adding a '[redacted]' to mask private email addresses](gitlab-org/security/gitlab@324fe6286b266c3990676bc93b3f6ab03eea5f6b) ([merge request](gitlab-org/security/gitlab!1927)) +- [Do not allow Applications API to create apps with blank scopes](gitlab-org/security/gitlab@4e2c4d2a88acf7167e1078e8a27679545ab90c9c) ([merge request](gitlab-org/security/gitlab!1922)) +- [Don't allow author to resolve discussions when MR is locked via GraphQL](gitlab-org/security/gitlab@34ffcb55a70ad6db38292f79fe73c05fb2655738) ([merge request](gitlab-org/security/gitlab!1919)) +- [Workhorse: Allow uploading only a single file](gitlab-org/security/gitlab@0aee710db4bbab84c78b9e38f459bfca606aaf80) ([merge request](gitlab-org/security/gitlab!1913)) +- [Set PipelineSchedules to inactive](gitlab-org/security/gitlab@de405edc9de4519656675ed6825534aac6b738da) ([merge request](gitlab-org/security/gitlab!1911)) +- [Do not display the root password by default](gitlab-org/security/gitlab@138a62f89ce6616d63e3cf18eeda291a380b9ebc) ([merge request](gitlab-org/security/gitlab!1909)) +- [Group owners should see SCIM token only once](gitlab-org/security/gitlab@43d19f580543d0203b1d841f921536474ca4be38) ([merge request](gitlab-org/security/gitlab!1906)) **GitLab Enterprise Edition** +- [Respect visibility level settings when updating project via API](gitlab-org/security/gitlab@f96258f3622cf72b46158f22c4660ff60a2c25ae) ([merge request](gitlab-org/security/gitlab!1903)) +- [Avoid decoding the whole tiff image on isTIFF check](gitlab-org/security/gitlab@b93683df51ce85f909d5072ec2a0e7756d64038e) ([merge request](gitlab-org/security/gitlab!1899)) +- [Remove external_webhook_token from exported project](gitlab-org/security/gitlab@874aa74a23fc3c44f390500bc8379c30ebc51452) ([merge request](gitlab-org/security/gitlab!1872)) + +## 14.4.0 (2021-10-21) + +### Added (79 changes) + +- [Upgrade GitLab Pages to 1.46.0](gitlab-org/gitlab@e606ddc078a2fe55658abb33924fac5699376953) ([merge request](gitlab-org/gitlab!72383)) +- [Support math expressions in the Content Editor](gitlab-org/gitlab@3e60388da219b0b33fa032f50bf087fd5b7845c0) ([merge request](gitlab-org/gitlab!72153)) +- [Add Reviewer names](gitlab-org/gitlab@925c1246984a33b4c408848298dc544757656499) ([merge request](gitlab-org/gitlab!72244)) +- [Geo: Enable Upload replication using SSF by default](gitlab-org/gitlab@99543ee585f7f35f84f19e08b2ccba6428341a2b) ([merge request](gitlab-org/gitlab!72199)) **GitLab Enterprise Edition** +- [Add username attribute support for GitLab.com Group SAML SSO](gitlab-org/gitlab@085254b32ebdb6269636c774de9d88cbabc5bed9) ([merge request](gitlab-org/gitlab!72134)) **GitLab Enterprise Edition** +- [Expose issue contacts via GraphQL](gitlab-org/gitlab@2dc68a486afeffd1b64b78fcbeae537c030d7dfa) by @leetickett ([merge request](gitlab-org/gitlab!71889)) +- [Add source instance version validation for project](gitlab-org/gitlab@44c33c0ceb7c4507c94f1c7fda5811d81d5fdf9c) ([merge request](gitlab-org/gitlab!71423)) +- [Add top-level GraphQL query for single board list](gitlab-org/gitlab@2740bda696e362f7fd92f567b3e13f063b6677cf) ([merge request](gitlab-org/gitlab!67909)) +- [Allow to setup Documentation pages URL for help pages redirects](gitlab-org/gitlab@3f3566ab09ce35ac3a636a22e65e40927e63cab9) ([merge request](gitlab-org/gitlab!71737)) +- [DevOps Adoption: Add "trend over time" graph](gitlab-org/gitlab@ef874e312ca65ed14101c41d09e69bfa9869a19e) ([merge request](gitlab-org/gitlab!70518)) **GitLab Enterprise Edition** +- [Improve data zoom on contribution analytics](gitlab-org/gitlab@13d202a2f08fb7c45ebfa475ab258d20b68bc982) ([merge request](gitlab-org/gitlab!72004)) **GitLab Enterprise Edition** +- [Add cluster_image_scanning CI parser to update location data](gitlab-org/gitlab@c28d8ab7e6367258ddfbbeb25e0492c0a324c6f7) ([merge request](gitlab-org/gitlab!71794)) **GitLab Enterprise Edition** +- [Enable on-demand scans scheduler](gitlab-org/gitlab@fff487ba8404497c28f547c13f6322adf05ea6b5) ([merge request](gitlab-org/gitlab!72097)) **GitLab Enterprise Edition** +- [Add EE variant of Resolvers::ProjectPipelinesResolver](gitlab-org/gitlab@a463cdfb92c0b65fcbf1f88ac5fe967fb8dd8458) ([merge request](gitlab-org/gitlab!69983)) **GitLab Enterprise Edition** +- [Implement PostUploadPackWithSidechannel client in Workhorse](gitlab-org/gitlab@c82a66e14df6a61d7a72a5c91e63ec3829f9f1f2) ([merge request](gitlab-org/gitlab!71047)) +- [Introduce status column for the security_scans table and populate it](gitlab-org/gitlab@82ca4611de10d84e3f71d5a53e2adb0f56600308) ([merge request](gitlab-org/gitlab!71944)) +- [Add contact update mutation to GraphQL](gitlab-org/gitlab@36e00a538964c38997cc4ead8e6e405bfde60237) by @leetickett ([merge request](gitlab-org/gitlab!71866)) +- [Add support for load balancing multiple databases](gitlab-org/gitlab@771f94fc7fac48a353c66eab22bc25ccd6f18d54) ([merge request](gitlab-org/gitlab!67773)) +- [Admin: listing matching card details of an user](gitlab-org/gitlab@74e3fc25beeb3bbc142864df192acad845d73407) ([merge request](gitlab-org/gitlab!71533)) **GitLab Enterprise Edition** +- [Import repository with project migration](gitlab-org/gitlab@a6d2a4297a26c72f1168c9713085d8b324487648) ([merge request](gitlab-org/gitlab!70326)) +- [Graceful degradation for Branches controller](gitlab-org/gitlab@ac36712c9e89441b21fbdf391d70a2ae31df384f) ([merge request](gitlab-org/gitlab!70970)) +- [Add ability to set iteration on issue creation via GraphQL API](gitlab-org/gitlab@8821ec56982cbec2503d862f2684231048666647) ([merge request](gitlab-org/gitlab!71689)) **GitLab Enterprise Edition** +- [Avoid cross-joins in PipelinesForMergeRequestFinder](gitlab-org/gitlab@4e95bcd85840bda5a60a93096eec2235a10f0677) ([merge request](gitlab-org/gitlab!68549)) +- [Remove ci_resource_group_process_modes feature flag](gitlab-org/gitlab@7eb40a877b386f3c2f097e0fe22e592763b61d9b) ([merge request](gitlab-org/gitlab!71365)) +- [Add customer relations contact create mutation](gitlab-org/gitlab@78cd670bfc5605de4ee906e5074b25c8f10e4e75) by @leetickett ([merge request](gitlab-org/gitlab!70733)) +- [Sync requirement and requirement issues state](gitlab-org/gitlab@5b06b0d63227ebf8f7ba8e59ba4f4af3c528037a) ([merge request](gitlab-org/gitlab!70607)) **GitLab Enterprise Edition** +- [Keep credit card non-sensitive info](gitlab-org/gitlab@b5381bcab8271401dda80323ef44a8f18887d159) ([merge request](gitlab-org/gitlab!71171)) **GitLab Enterprise Edition** +- [Subscriptions hand raise lead API client](gitlab-org/gitlab@cd0ad142152f07acd5d50439ac7b58a89a84f8b4) ([merge request](gitlab-org/gitlab!71723)) **GitLab Enterprise Edition** +- [Add metric for users associating milestones to releases](gitlab-org/gitlab@bf999ff05c4d3f47aea31fd87a6bd1d6dcda0a0a) ([merge request](gitlab-org/gitlab!71287)) +- [Add meta data in user_credit_card_validations](gitlab-org/gitlab@0d08d597a30d1cd8e73f78fc3b64ad79418aa3e3) ([merge request](gitlab-org/gitlab!71032)) +- [Link to a search for feature flag name in project](gitlab-org/gitlab@8d1c153c04b54f1710596d523ea46880a9851eb2) ([merge request](gitlab-org/gitlab!70417)) **GitLab Enterprise Edition** +- [Add includeSubepics argument to issue filters in GraphQL](gitlab-org/gitlab@5a913e8455e9881be20c73c095bb077c7655acfb) ([merge request](gitlab-org/gitlab!71610)) **GitLab Enterprise Edition** +- [Warn users of impacted escalation policies on leave/delete](gitlab-org/gitlab@de25310c6c6a987003bb1c3948f7713960af917a) ([merge request](gitlab-org/gitlab!69411)) **GitLab Enterprise Edition** +- [Add confidential issues filtering for GraphQL API](gitlab-org/gitlab@733862877c48d3666d85922b956de186f6d93305) ([merge request](gitlab-org/gitlab!71355)) +- [Measure Sidekiq enqueue latency for scheduled jobs](gitlab-org/gitlab@c4c42d29cf4c33d913479ebcb916a4fdf45ab002) ([merge request](gitlab-org/gitlab!71615)) +- [Add ability to set iteration on issue creation via GraphQL API](gitlab-org/gitlab@25b287bfee614a0b8844a5ecf62ac26173327ea2) ([merge request](gitlab-org/gitlab!70007)) **GitLab Enterprise Edition** +- [Add issue_customer_relations_contacts linking table](gitlab-org/gitlab@3f6597a9aa88e023223d0f91e633be2d54ca99e9) by @leetickett ([merge request](gitlab-org/gitlab!71007)) +- [Add config field gitlab_kas.external_k8s_proxy_url](gitlab-org/gitlab@e0137111fbbd28316f38da30075aba641e702b98) ([merge request](gitlab-org/gitlab!71512)) +- [Add DependencyProxySettings mutation](gitlab-org/gitlab@e2d7d722887c8a6edc2b52a1e8871bce4781c4a2) ([merge request](gitlab-org/gitlab!71274)) +- [Added feature flag to show terraform banner](gitlab-org/gitlab@361e943b17924bbc14b26a2d8e1864d9c234c670) ([merge request](gitlab-org/gitlab!71462)) +- [Promote jobs_to_be_done experiment](gitlab-org/gitlab@26781e4305c97d64a9dc9bf2c1dd31702bff9daf) ([merge request](gitlab-org/gitlab!71122)) +- [Feat(Cloud Activation Form Modal): loading button](gitlab-org/gitlab@67403800753894384f77f603a2b0bc5587ccd77f) ([merge request](gitlab-org/gitlab!71385)) **GitLab Enterprise Edition** +- [Return runner webUrl via GraphQL API](gitlab-org/gitlab@f708096867cabf5829119cd4d83c902fa24b5c8b) ([merge request](gitlab-org/gitlab!70692)) +- [Add option of 60 days to container image expiration policy](gitlab-org/gitlab@c7be549c5f1727b474ff91212a42216f3115181f) by @pataar ([merge request](gitlab-org/gitlab!70148)) +- [Add missing keywords to CI schema](gitlab-org/gitlab@f1d0f6edadb5c20ab20efe0637e3698adc5ba2b5) ([merge request](gitlab-org/gitlab!70779)) +- [BulkImports: Handle network errors](gitlab-org/gitlab@337e284574a89bfb67d82a567152d7651814a976) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68582)) +- [Add sorting to DA overview table](gitlab-org/gitlab@87145f1c815d2c5f6e46270e108dbdda0c45b80a) ([merge request](gitlab-org/gitlab!70937)) **GitLab Enterprise Edition** +- [Document how to migrate off Gitaly Cluster](gitlab-org/gitlab@855db4a1816db79cd3d48c75597a48e3f55ac6b5) ([merge request](gitlab-org/gitlab!71223)) +- [Make it possible to define custom request duration thresholds](gitlab-org/gitlab@5c52eddb1487a2876f0589affaf8a746ff84b3e9) ([merge request](gitlab-org/gitlab!69877)) +- [Implement rate-limiting for a deprecated API endpoint](gitlab-org/gitlab@5b9e642e5b591fa0cc5bbbddc18530cafa4e1c22) ([merge request](gitlab-org/gitlab!70310)) +- [Extend EE::Types::Ci::PipelineType with dast_profile](gitlab-org/gitlab@ea048ea3ab508a3d7f573adb0ee978f0cf1325fe) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/69808)) **GitLab Enterprise Edition** +- [Add `links` and `message` field to VulnerabilityType](gitlab-org/gitlab@3360a18c7fa4ae8a4b452b86ca8adb21454f73d1) ([merge request](gitlab-org/gitlab!71207)) **GitLab Enterprise Edition** +- [Allow relate quick action on issue create](gitlab-org/gitlab@763d5577565ce9b14d99b87577a9ac17b95fbb7f) ([merge request](gitlab-org/gitlab!71193)) +- [Allow plus character in project names](gitlab-org/gitlab@22714f512393017b538b8995ecb270c12deeddbd) by @lzampier ([merge request](gitlab-org/gitlab!67997)) +- [Render frontmatter codeblock in the Content Editor](gitlab-org/gitlab@d84bcddf3a3c6c0b188a5a7a09ba49ae347c1eaa) ([merge request](gitlab-org/gitlab!70854)) +- [Add support for wbr in content editor](gitlab-org/gitlab@772f061eac6bd4cca2c3511f9978d0d246c3cd2a) ([merge request](gitlab-org/gitlab!69365)) +- [Enable live tracking and enforcement of CI minutes](gitlab-org/gitlab@55adb3a7e1fabb9a20bf4dcd7a08dcd5ad09097e) ([merge request](gitlab-org/gitlab!71072)) **GitLab Enterprise Edition** +- [Send "setup for company" in trial form to CustomersDot](gitlab-org/gitlab@b7e4d09eeb8f83194032e1463d126a4a9d2a4a6d) ([merge request](gitlab-org/gitlab!70569)) +- [Perform validations on the parent of a namespace/group by default](gitlab-org/gitlab@5dd7051f880f01a5ee0d43e7472c46c0de824352) ([merge request](gitlab-org/gitlab!70365)) +- [Added support for test coverage badge color configuration](gitlab-org/gitlab@13ca69c7e4cf42c47a8c99f33a5e8bc7ed511357) by @szaboi ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/69164)) +- [Move cluster agent GraphQL mutations and supporting services to core](gitlab-org/gitlab@8e45ef80d137f4b76008ac1e1044d6f38cf61823) ([merge request](gitlab-org/gitlab!70887)) +- [Move cluster agent GraphQL types and resolvers to core](gitlab-org/gitlab@5f54a7c09133de4a833390b1b510af02744da9f8) ([merge request](gitlab-org/gitlab!70759)) +- [Address the PK Overflow risk for the taggins - Step 3](gitlab-org/gitlab@f9b8e8d7c55b8959468b6f1594ea83c965b9e5c3) ([merge request](gitlab-org/gitlab!69639)) +- [Remove i_testing_metrics_report_artifact_uploaders feature flag](gitlab-org/gitlab@1a4f15be1a8c12c96a70463b8e1b2c3e01cfcd1d) ([merge request](gitlab-org/gitlab!70957)) +- [Remove usage_data_i_testing_test_case_parsed feature flag](gitlab-org/gitlab@af7d2e9f6926914fc6fee750c466b15e44e1a9f3) ([merge request](gitlab-org/gitlab!70953)) +- [Enable FF "paginated_tree_graphql_query" by default](gitlab-org/gitlab@ade0b92eb1736575e4e6530db5920cd1222a8bed) ([merge request](gitlab-org/gitlab!70913)) +- [Add user permissions for runners in GraphQL API](gitlab-org/gitlab@8d9c658cb4a2b952407779f7a64b0dc11960195f) ([merge request](gitlab-org/gitlab!70809)) +- [Always enable the database load balancer](gitlab-org/gitlab@f38900c90d7ff75eaeaf15265d177e4b1fae5c22) ([merge request](gitlab-org/gitlab!68042)) +- [Add endpoints for project relations exports](gitlab-org/gitlab@5e9ebbd16ea73d22f41e3aa9f005cb532fe5f0cc) ([merge request](gitlab-org/gitlab!70330)) +- [Upgrade Pages to 1.45.0](gitlab-org/gitlab@8853ba52e3a2bd66051b845f47b67b6eef9916b3) ([merge request](gitlab-org/gitlab!70752)) +- [Support FIFO/LIFO process modes to Resource Group](gitlab-org/gitlab@a100cb945bc9bcd4c531c1889059f8a8f6e29e61) ([merge request](gitlab-org/gitlab!67015)) +- [Add documentation to Files API Rate Limits](gitlab-org/gitlab@3da4af85c9bbf210b8adde556ebb255700fc2983) ([merge request](gitlab-org/gitlab!68645)) +- [Add security_orchestration_policy to pipeline source filter](gitlab-org/gitlab@b5a6dfec3faf5c7df11e3a68c30ce642aeabf49b) ([merge request](gitlab-org/gitlab!69985)) **GitLab Enterprise Edition** +- [Add sign-in count to external pipeline validation](gitlab-org/gitlab@838d1f55a83cdbf00b7d99206156fac351115aaf) ([merge request](gitlab-org/gitlab!70668)) +- [Add negated issueType filter to issue resolver (group and project)](gitlab-org/gitlab@4cca803a06aad048f7478b8eb51c6934958b3bc6) ([merge request](gitlab-org/gitlab!70635)) +- [Add clone issue to REST API](gitlab-org/gitlab@33e9e55a35631392ce88f4a4823d11d0ae3cc797) ([merge request](gitlab-org/gitlab!57740)) +- [Add runner_features column to ci_builds_metadata](gitlab-org/gitlab@319d59940117374d3bebf7fa53d55b7bc3c19763) ([merge request](gitlab-org/gitlab!70189)) +- [Extend /help/instance_configuration with Git LFS rate limit](gitlab-org/gitlab@455ad3b28580c1da1f6a5cea6a2f37794e07dd72) by @wwwjon ([merge request](gitlab-org/gitlab!70397)) +- [API: Add endpoint to reset runner authentication token](gitlab-org/gitlab@c2e34204a0b6ef305ac76a68f9f7c9216eb0f379) by @KyleFromKitware ([merge request](gitlab-org/gitlab!69561)) + +### Fixed (96 changes) + +- [Fix Analytics Author filters](gitlab-org/gitlab@17c9eb627e135ce61b51c81a541d844602cb4305) ([merge request](gitlab-org/gitlab!72492)) +- [Allow maintainers to set MR approval settings](gitlab-org/gitlab@de58cb9ca02037b4df2fc2f14040503026ddf5b7) ([merge request](gitlab-org/gitlab!72493)) **GitLab Enterprise Edition** +- [Fix: update links in billing page](gitlab-org/gitlab@c8d6f73497df3080b5080977f3fe03085e1506fe) by @orozot ([merge request](gitlab-org/gitlab!72259)) **GitLab Enterprise Edition** +- [Update onboarding template project](gitlab-org/gitlab@1f5160ad9e8a2dcfcc5f628f525734e423bb75b9) ([merge request](gitlab-org/gitlab!72355)) **GitLab Enterprise Edition** +- [Fix handling Service Ping response DevOps metrics](gitlab-org/gitlab@e06fe59cd272e35a2009f499a006f7da8ae7640f) ([merge request](gitlab-org/gitlab!72344)) +- [Add guard clause to ensure incoming params](gitlab-org/gitlab@0f3b20cde204f1cb28dce6e7c794fac0cd5a0a64) ([merge request](gitlab-org/gitlab!72241)) +- [MR Analytics: Add pipelines sanity check](gitlab-org/gitlab@f204f965a9fbd875b2491ec88d77c9f7558dec49) ([merge request](gitlab-org/gitlab!72210)) **GitLab Enterprise Edition** +- [Replace calls to LoadBalancing with ::Gitlab::Database::LoadBalancing](gitlab-org/gitlab@d54189d088a90daa7f1fda4bea2334acf5b172b5) ([merge request](gitlab-org/gitlab!72205)) +- [Change shared runner settings on import on conflict with group](gitlab-org/gitlab@e5680f9350f863c2ad2e14e5d495ae8df5aa413e) ([merge request](gitlab-org/gitlab!71846)) +- [Fix undefined method `use_primary!' error in GDK](gitlab-org/gitlab@5c3638936934b90049c0bf5a8d9f017fb721e750) by @leetickett ([merge request](gitlab-org/gitlab!72247)) +- [Guard against exceptions from unfound DiffNotes](gitlab-org/gitlab@580072f86097f4156fc01eb16863b7e746c2a4fb) ([merge request](gitlab-org/gitlab!72242)) +- [Replace success button in the add linked issue](gitlab-org/gitlab@7d3d847c76e6dbd7bfcd357ffb31236860419aed) ([merge request](gitlab-org/gitlab!72211)) +- [Ensure correct group for DA chart](gitlab-org/gitlab@0065f5a8db8410868566e58e9c4af31015cf8162) ([merge request](gitlab-org/gitlab!72176)) **GitLab Enterprise Edition** +- [Fix cut-off dropdown in board breadcrumbs](gitlab-org/gitlab@49feed59a9f572f3210e353b5b5816717a414bfe) ([merge request](gitlab-org/gitlab!72168)) +- [Fix non-restarted skipped bridge jobs](gitlab-org/gitlab@ad8ffd504c5898570666a1789ef463c0030196ee) ([merge request](gitlab-org/gitlab!72141)) +- [Don't run WAL queries when not using replicas](gitlab-org/gitlab@9599f8669a9395d5193be1b226b4c136f28f8e90) ([merge request](gitlab-org/gitlab!71736)) +- [Enable syntax highlighting for new files](gitlab-org/gitlab@4d0a4fc7b0cc9ec616a67853b97cd96e731d2ed6) ([merge request](gitlab-org/gitlab!71801)) +- [Add go, nuget, and sbt to Dependencies API filters](gitlab-org/gitlab@1d996aa6ecefeea103fa05f02131000918d08b7c) ([merge request](gitlab-org/gitlab!72022)) **GitLab Enterprise Edition** +- [Present sbt, nuget, and go in Dependency List page](gitlab-org/gitlab@e2907ff57a11be60f3bb1c8dc8157de0a00d8156) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72021)) **GitLab Enterprise Edition** +- [Fix detail page of NuGet package with missing metadata](gitlab-org/gitlab@412acd19f95c5a56699c9cb248afd31e8f0a3476) by @wwwjon ([merge request](gitlab-org/gitlab!72013)) +- [Remove local form errors flash](gitlab-org/gitlab@52ea002f636cae726fb452ad4146919c0f700d4a) ([merge request](gitlab-org/gitlab!71945)) +- [Make CI minutes consumption increment idempotently](gitlab-org/gitlab@f82d4f06987fc7736e0d0fc84c8cfdfd2b7d938f) ([merge request](gitlab-org/gitlab!71840)) **GitLab Enterprise Edition** +- [Boards - Sort closed issues by closedAt date](gitlab-org/gitlab@c89f00d681dab5ff00096913af170f043b052e10) ([merge request](gitlab-org/gitlab!71698)) +- [Gracefully track errors raised by sending CI minutes notifications](gitlab-org/gitlab@2036f9a11fc272cf5cb6e0ecbaae5eeefa454df3) ([merge request](gitlab-org/gitlab!71815)) **GitLab Enterprise Edition** +- [Add IssuesFieldExtension to set relative positions](gitlab-org/gitlab@5c62b8c87c22a8d722c66bdeaf475f01bc1a29f8) ([merge request](gitlab-org/gitlab!71164)) +- [Update strategies used for DB count approximation for read-only DB](gitlab-org/gitlab@09a35759c3de4665cd3b7769eaf82a11de32d03d) ([merge request](gitlab-org/gitlab!71925)) +- [Mark the `created_at` attribute as read-only to prevent updating it](gitlab-org/gitlab@21d7ee36bb6e11fe2d1b51a3ab5cf0734efae0f2) ([merge request](gitlab-org/gitlab!71399)) +- [Disable caching of MergeToRefService call in mergeability check](gitlab-org/gitlab@36f8fbf83cdf7e539165bc73f742bfd2e39a0290) ([merge request](gitlab-org/gitlab!71909)) +- [Return the correct project in job/allowed_agents API response](gitlab-org/gitlab@95364c467bcf2e3765f58fef18b8d759031022af) ([merge request](gitlab-org/gitlab!71876)) +- [Use pessimistic locking when accessing Terraform state](gitlab-org/gitlab@ac3916a5d29d16de4ce8359d0d100dace6e82e24) ([merge request](gitlab-org/gitlab!71873)) +- [Sanitize given scan types before querying the security_scans](gitlab-org/gitlab@a06867f1eb2e7c091be0067eb1b10b7071b2f512) ([merge request](gitlab-org/gitlab!71836)) +- [Fix auto-renew of LetsEncrypt domains for Pages](gitlab-org/gitlab@b3a7e0d5268b90722a372674ad7f0c248a6e9872) ([merge request](gitlab-org/gitlab!71697)) +- [Show hint if input value is invalid](gitlab-org/gitlab@b1b2a440e4afd624559153c697a50a5c1ee37e7c) ([merge request](gitlab-org/gitlab!71582)) **GitLab Enterprise Edition** +- [Fix inline JavaScript HAML linter not working](gitlab-org/gitlab@8f32460266e31bad3f66155df31735a34a756328) ([merge request](gitlab-org/gitlab!71798)) +- [Add ON DELETE constraint to security_policy_management_project_id](gitlab-org/gitlab@402154b0df873e6edb91267980b27ef5a4e231dc) ([merge request](gitlab-org/gitlab!71391)) +- [Fix merge request approvals accordion](gitlab-org/gitlab@016ac9c025e5ed11e208dba86f5af8609e1dc0d1) ([merge request](gitlab-org/gitlab!69252)) **GitLab Enterprise Edition** +- [Fix undefined method error in validate_remote_git_endpoint service](gitlab-org/gitlab@a93a088faecdd667c76790c47e2bae00b6d203dc) ([merge request](gitlab-org/gitlab!71670)) +- [Hide filters UI in Roadmap within epic page](gitlab-org/gitlab@c35f81070d988c0a1c5d337245c1ac20de29761c) ([merge request](gitlab-org/gitlab!71726)) **GitLab Enterprise Edition** +- [Fix storing first_mentioned_in_commit_at attribute](gitlab-org/gitlab@900db121a1e2914656ad8678b00f25e93d076515) ([merge request](gitlab-org/gitlab!71639)) +- [Redirect Geo git push operations to primary external URL](gitlab-org/gitlab@98780b7eb910720fdc4ded20dd7f6ba3f39d8e27) ([merge request](gitlab-org/gitlab!71711)) **GitLab Enterprise Edition** +- [Fix spacing between note badges](gitlab-org/gitlab@f629eb9b3ab799815fb0e6d05dc186840ed6d369) by @TaehyeokKang ([merge request](gitlab-org/gitlab!71208)) +- [Fix project statistics Uploads](gitlab-org/gitlab@7ebd4cb24c56cb8a26082ca06242d5ab5823dfad) by @guillaume.chauvel ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71370)) +- [Move required styles for issue-token to core](gitlab-org/gitlab@297c1112d5cce610f98e1189d13c00465d27949e) by @michael.telgkamp ([merge request](gitlab-org/gitlab!71531)) +- [Fix default values for the deprecated API throttle](gitlab-org/gitlab@86cb92849da9ed37a1f9962613eb4c366f270f8b) ([merge request](gitlab-org/gitlab!71449)) +- [Fix dependency proxy image prefix](gitlab-org/gitlab@f4c9a981b55492c53b9d233846d6364a4e344649) ([merge request](gitlab-org/gitlab!71511)) +- [Upgrade mermaid-js to v8.13.2](gitlab-org/gitlab@0dc2971222642e39b3af5a6832f50a57586dcc94) ([merge request](gitlab-org/gitlab!71415)) +- [Don't retry errors when there are no replicas](gitlab-org/gitlab@0f27854a100931c96d18b79b9d903511c352405c) ([merge request](gitlab-org/gitlab!71489)) +- [Delete issues css](gitlab-org/gitlab@97ffda63a12a951e8a5bce650487ce319b0196b0) ([merge request](gitlab-org/gitlab!71478)) +- [Use GlAlert for external issues list errors](gitlab-org/gitlab@824b40be15edf9744ac06f52f55dcf6ee229b4ff) ([merge request](gitlab-org/gitlab!71256)) **GitLab Enterprise Edition** +- [Fix tabs switching between tree and roadmap](gitlab-org/gitlab@25e066d8364bb7127668bfbdc3f8fbce72dea9a7) ([merge request](gitlab-org/gitlab!71398)) **GitLab Enterprise Edition** +- [Fix: change dropdown background to transparent](gitlab-org/gitlab@87cec043a6eecba6189e61ea4dec5d6295b830b1) by @orozot ([merge request](gitlab-org/gitlab!71264)) +- [Use GlAlert for integrations table errors](gitlab-org/gitlab@14123f51ffd9aa3ad202845f9ef98fbf2822eb3d) ([merge request](gitlab-org/gitlab!71255)) +- [Removes reporting on non-existant failures for import rake task](gitlab-org/gitlab@2c6af766cf1044f730e325b4043e48f187c15ce3) ([merge request](gitlab-org/gitlab!71402)) +- [Fix compliance framework labels readability](gitlab-org/gitlab@645b035a9e2c97e20e6a350d780658a6a93108ff) ([merge request](gitlab-org/gitlab!71301)) **GitLab Enterprise Edition** +- [Fix clipped broadcast message on login page when using custom header](gitlab-org/gitlab@593862859242f4318d935bc3529ee34547fc9f81) ([merge request](gitlab-org/gitlab!71227)) +- [Fix issue search optimization in GraphQL](gitlab-org/gitlab@e0dee49402c289c4a53c16297e2f2da09aa81809) ([merge request](gitlab-org/gitlab!71351)) +- [Expand template names when tracking inclusion](gitlab-org/gitlab@223a3c66bae0af4b233663d0f7cf6cd523229c24) ([merge request](gitlab-org/gitlab!71157)) +- [Fix incorrect date in type of work chart](gitlab-org/gitlab@56ef35edb7d7ab0d68a61676b7f8d24262780713) ([merge request](gitlab-org/gitlab!71350)) **GitLab Enterprise Edition** +- [Fix: translate upload license tips](gitlab-org/gitlab@b5bb563377d941bd8db979242345cc61da1a0c98) by @orozot ([merge request](gitlab-org/gitlab!70640)) **GitLab Enterprise Edition** +- [Reapply table-layout fixed in repository file list](gitlab-org/gitlab@b20c171a54f1414cf5b98e4b1d086ed53e943103) ([merge request](gitlab-org/gitlab!71327)) +- [Global Search - Upvote Tooltip Alignment](gitlab-org/gitlab@08e0e2c0adb067d5cbe8af9ed2786b54ebc2f14d) ([merge request](gitlab-org/gitlab!71226)) +- [Prevent group wiki writes on read-only DBs](gitlab-org/gitlab@900b071936852a0675efd8938115f836284b5709) ([merge request](gitlab-org/gitlab!71314)) **GitLab Enterprise Edition** +- [Fix incorrect trigger of issue/epic autocomplete](gitlab-org/gitlab@09faec22a1ded63f52201d62edc43382161e5f29) ([merge request](gitlab-org/gitlab!71191)) **GitLab Enterprise Edition** +- [Fix Web IDE renaming empty content](gitlab-org/gitlab@04340139969234f992dd69bd0c807b3439afbee1) ([merge request](gitlab-org/gitlab!71130)) +- [Fix milestone references in group context](gitlab-org/gitlab@c91b498592b73039a5d68e43e31359e8e55b6021) ([merge request](gitlab-org/gitlab!71269)) +- [Value of `lock_memberships_to_ldap` should not affect authorizations](gitlab-org/gitlab@deb229258b6e659695dfc5df0de6f378ecc36cad) ([merge request](gitlab-org/gitlab!71253)) +- [Remove file upload type restirction](gitlab-org/gitlab@32563ed72ca7aaca330bd8f8a2d1223127a11453) ([merge request](gitlab-org/gitlab!71082)) +- [Fixed post merge ci status bug](gitlab-org/gitlab@b21dc4140ff30c16c571afdad29a0dba6f639d8e) ([merge request](gitlab-org/gitlab!70719)) +- [Generate startup css as if com_and_canary](gitlab-org/gitlab@64eaa2de7dee16fff0d62b4231cc2b1631f0171f) by @leetickett ([merge request](gitlab-org/gitlab!71134)) +- [Disable form on admin appearance sign-in page preview](gitlab-org/gitlab@4060fbbb578246b9d4acc6d2a534add63cfd397c) ([merge request](gitlab-org/gitlab!70736)) +- [Add connection fallback to ActiveRecordProxy](gitlab-org/gitlab@b1b48aa28b302914c317f51beca546707ffda367) ([merge request](gitlab-org/gitlab!71059)) +- [Update GitLab Shell to v13.21.1](gitlab-org/gitlab@ec1e172b96d2186ec0b914a95850e3ae353ccb0f) ([merge request](gitlab-org/gitlab!71037)) +- [Fix Australian timezone abbreviations in tooltips](gitlab-org/gitlab@5451d41c1586cc83525178734b7c45b0b5234075) ([merge request](gitlab-org/gitlab!70723)) +- [Merge branch 'jswain_combined_registration_auto_trial_params' into 'master'](gitlab-org/gitlab@4d1d5a4bc1dcc7b4c5969cc0c3cebf0dbbd665f3) ([merge request](gitlab-org/gitlab!70823)) **GitLab Enterprise Edition** +- [Provide namespace_id default value](gitlab-org/gitlab@45dfc11d0858e731d1544f98f93a193166e5ad92) ([merge request](gitlab-org/gitlab!70823)) +- [Fix CSV issues import max file size message](gitlab-org/gitlab@f0e9076caeab2a8d786ad06128832c0abf4e41c6) by @JonstonChan ([merge request](gitlab-org/gitlab!68223)) +- [Fix unmet prerequisites help URL](gitlab-org/gitlab@8b798847612a5ce3386d6dfb6df0371d5aea4e4b) ([merge request](gitlab-org/gitlab!70976)) +- [Fix polling on vuln details page](gitlab-org/gitlab@5dd1f8c11e06a61476425db0696e292af09d2407) ([merge request](gitlab-org/gitlab!70961)) **GitLab Enterprise Edition** +- [Fix rule all branches not using monospace font](gitlab-org/gitlab@fe0df34d5f291d7eac1129bc15f5ac722b24c544) ([merge request](gitlab-org/gitlab!70943)) **GitLab Enterprise Edition** +- [Fix sum of LFS objects size with identical value](gitlab-org/gitlab@d2b2d298e41fdf237e40c404c005cea7a0924686) by @guillaume.chauvel ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70610)) +- [Fix project group share setting wording](gitlab-org/gitlab@56cedf5ba1f0437784ced6855922386d770bf4ff) ([merge request](gitlab-org/gitlab!70636)) +- [Fix gitaly-backup TLS connections](gitlab-org/gitlab@e36cf16acc44cb223aee93b4d36c4d0281f3476f) ([merge request](gitlab-org/gitlab!70883)) +- [Fix Content-Disposition header not working in Azure Blob storage](gitlab-org/gitlab@e586b6e3a58d66850ac32924c9ad1342daf24f1b) ([merge request](gitlab-org/gitlab!70874)) +- [Handle ConnectionNotEstablished in the DB LB](gitlab-org/gitlab@cf3a0e3580c8649f1e2abe2f620993f739c3dba9) ([merge request](gitlab-org/gitlab!68042)) +- [MR Analytics: Add yAxis formatter](gitlab-org/gitlab@9d7769a3a90ddd1712d5f1e6633d5f102a2a59e2) ([merge request](gitlab-org/gitlab!70573)) **GitLab Enterprise Edition** +- [Remove unnecessary route](gitlab-org/gitlab@d7b1c4dea176e84c706580806984ffa11753be7f) ([merge request](gitlab-org/gitlab!70277)) +- [Fix address requires string literal i18n helpers](gitlab-org/gitlab@ee4394c4237fcd65a1e9d0597603210034634988) by @elcordova ([merge request](gitlab-org/gitlab!70767)) +- [Fix DB connection check for Geo user routing](gitlab-org/gitlab@f908364d9888fa4cd37c6e5ca2555f1b936a9f39) ([merge request](gitlab-org/gitlab!70621)) **GitLab Enterprise Edition** +- [Update to commonmarker gem 0.23.2](gitlab-org/gitlab@57c5bad16c533bf7937f56bc05cbcc6a3d72004a) ([merge request](gitlab-org/gitlab!70612)) +- [Focus on input when dropdown is shown on issue creation page](gitlab-org/gitlab@00a431b287132f8b833cf10ad99a2e61d50ec9e8) ([merge request](gitlab-org/gitlab!70703)) +- [Replace public_send with send in doctor rake task](gitlab-org/gitlab@386ee2b5f21a5a8184ee78350f11a12803d118e1) ([merge request](gitlab-org/gitlab!69062)) +- [Open sidebar after user creates a new item in boards](gitlab-org/gitlab@a8304104fe5158369354377df8a35001ec576e29) ([merge request](gitlab-org/gitlab!70352)) +- [Geo: Fix maintenance mode causing Unhealthy secondary status](gitlab-org/gitlab@01551e03a1313d3f95dca66b5d27082ec59506b8) ([merge request](gitlab-org/gitlab!70010)) **GitLab Enterprise Edition** +- [Allow BoardListType.issues to filter by negated issueType in GraphQL](gitlab-org/gitlab@9debb183be68909ff7bf61adfaa02fb3a7e1b2e9) ([merge request](gitlab-org/gitlab!70554)) +- [Add additional properties to policy_details helper](gitlab-org/gitlab@5645f93c630fe14fad2c418bc635cedde47c56b2) ([merge request](gitlab-org/gitlab!70553)) **GitLab Enterprise Edition** +- [Persist feedback alert for SAST Configuration](gitlab-org/gitlab@3343c3171a3e6ea202ca5f9db3751799fe8c6222) ([merge request](gitlab-org/gitlab!70517)) **GitLab Enterprise Edition** + +### Changed (80 changes) + +- [Implement Dependency proxy via Workhorse injectors](gitlab-org/gitlab@b3e6d6c37efba1418ecb33f6037582b1f8553f99) ([merge request](gitlab-org/gitlab!71890)) +- [Added v-scrolling to both editors](gitlab-org/gitlab@2802a43f2f97f987ba0ddaeafc36c8c90beaeb6f) by @mehulsharma ([merge request](gitlab-org/gitlab!71136)) +- [Update auto-deploy-image to v2.14.0](gitlab-org/gitlab@354fb973fc32958dd81dd70b5ab516f4ee26d9a8) ([merge request](gitlab-org/gitlab!72027)) +- [Adjust update_runners_registration_token permission](gitlab-org/gitlab@6182eecf3b3a466864c2c192b4fcef9908822eeb) ([merge request](gitlab-org/gitlab!71965)) +- [Remove feature flag member_destroy_async_auth_refresh](gitlab-org/gitlab@edde4d7ffabb30f69691f6bd99e06c82b4dfab8a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72338)) +- [Disable create list button after clicked once](gitlab-org/gitlab@8d8de87a0be0628f23a1cda888a11559a079167c) ([merge request](gitlab-org/gitlab!72048)) +- [Preselect all projects in group coverage analytics](gitlab-org/gitlab@88d4f5793b3d1f05675ca896d7514a7d1deb5243) ([merge request](gitlab-org/gitlab!72051)) **GitLab Enterprise Edition** +- [Allow longer Helm channel names](gitlab-org/gitlab@7e57516919e5cee8ae8c38890d4b8a18d10e54f0) by @sathieu ([merge request](gitlab-org/gitlab!71806)) +- [Enable create_vulnerabilities_via_api by default](gitlab-org/gitlab@1a635aa386c3fb1dd6d6369fbfcbe16015aa85df) ([merge request](gitlab-org/gitlab!72204)) **GitLab Enterprise Edition** +- [Use allowlist of allowed attributes for imported models](gitlab-org/gitlab@3f30823920caef67d589e6f06c1cee2380d3d080) ([merge request](gitlab-org/gitlab!71296)) +- [Refactor the usage of Secret Scanning to Secret Detection](gitlab-org/gitlab@48d35ae9509bc14affc7bd52fdd415f7b21b1434) ([merge request](gitlab-org/gitlab!71824)) +- [Improve Git HTTPS message given when Gitaly unavailable](gitlab-org/gitlab@772df282e60924413931e0b0736fe11d94f4d3de) ([merge request](gitlab-org/gitlab!71120)) +- [Remove `performance_roadmap` ff and legacy code](gitlab-org/gitlab@7be12de8acaa583818cb370f566a8e4d394b4259) ([merge request](gitlab-org/gitlab!71828)) **GitLab Enterprise Edition** +- [Respect security scanner schema](gitlab-org/gitlab@b7ea3dc21229f8c6a59087aca5b2e8c0368645f2) ([merge request](gitlab-org/gitlab!69961)) **GitLab Enterprise Edition** +- [Default enable use_upsert_query_for_mr_metrics FF](gitlab-org/gitlab@37723ac46e66416d1a7cb3e661d51f5525ba3d8b) ([merge request](gitlab-org/gitlab!72120)) +- [Support Jira Connect asymmetric JWTs](gitlab-org/gitlab@e100bd3dfbf08eb27f2ee2c3b84438931144cf00) ([merge request](gitlab-org/gitlab!71080)) +- [Improve translatability of email confirmation page](gitlab-org/gitlab@2809b8bbe0a1b8913ad097473612c17d09951db1) ([merge request](gitlab-org/gitlab!71165)) +- [Remove vulnerability flags feature flag](gitlab-org/gitlab@d80460b160b2fb2f6704c10ea5108dee4785457e) ([merge request](gitlab-org/gitlab!71966)) +- [Styling updates of the protected environments edit access dropdown](gitlab-org/gitlab@6582038a0b3dda66199cc4a309aae6a35ba70e98) ([merge request](gitlab-org/gitlab!71119)) **GitLab Enterprise Edition** +- [Clean up oauth buttons on sign in/up](gitlab-org/gitlab@72e5bf594fed8112539c89f97f77ba5bf81f708a) ([merge request](gitlab-org/gitlab!71263)) +- [Improve merge train help text](gitlab-org/gitlab@c28b6bbd3c78d76f32816c51f006ea1ffb7e150c) ([merge request](gitlab-org/gitlab!71687)) **GitLab Enterprise Edition** +- [Update branch name to use monospace](gitlab-org/gitlab@cd6c3b3ccebb3a18bead8e572e509b7edc863eb2) ([merge request](gitlab-org/gitlab!71393)) **GitLab Enterprise Edition** +- [Remove redundant help text from runners](gitlab-org/gitlab@a0e98ddbd79b557fb97c1a9164bb14f47efc2669) ([merge request](gitlab-org/gitlab!71915)) +- [Proxy Geo secondary HTTP pushes + lfs through Workhorse](gitlab-org/gitlab@f1812b88bd4498051cc2b011127dba8c6448f725) ([merge request](gitlab-org/gitlab!71732)) **GitLab Enterprise Edition** +- [Update compliance report title and navigation](gitlab-org/gitlab@906d78136dd1f7812e4af5c55c7f6ecfe1a438b2) ([merge request](gitlab-org/gitlab!71383)) **GitLab Enterprise Edition** +- [Change MR draft status notification from flash to tast](gitlab-org/gitlab@9aee4d3ef920636c2a0e51331efc796b6e4ae028) ([merge request](gitlab-org/gitlab!71887)) +- [Allow minimal access value for UserHighestRole](gitlab-org/gitlab@a1165f69aaa0e62b9effd0733185ff2bd4fc45ab) ([merge request](gitlab-org/gitlab!71814)) **GitLab Enterprise Edition** +- [Add jsonb field for Finding Evidence](gitlab-org/gitlab@679ebf13709aa8440e58baa05539ad72b6e12e9b) ([merge request](gitlab-org/gitlab!70097)) +- [Geo: Increase reliability of certain one-time jobs](gitlab-org/gitlab@b731a55c30cf8cbfd38fefc46659de1fe6a6d0f4) ([merge request](gitlab-org/gitlab!71419)) **GitLab Enterprise Edition** +- [Geo: Reduce unnecessary resource usage](gitlab-org/gitlab@a3bfd4b6cc11ecae16d9414c8d3337c0383271fa) ([merge request](gitlab-org/gitlab!71419)) **GitLab Enterprise Edition** +- [Geo: Reduce unnecessary resource usage](gitlab-org/gitlab@93127cfc6803616db47b321a826e643c1468d75a) ([merge request](gitlab-org/gitlab!71419)) **GitLab Enterprise Edition** +- [GithubImporter: Format diff note suggestions to the gitlab format](gitlab-org/gitlab@e4f59f2ecb0dd9958ab48c50dcd42ee0c6517ea8) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71411)) +- [system_check: Bump minimum required Git version to v2.33.0](gitlab-org/gitlab@8094ba64d14af82094fbcdcacc3d54c7aecee09f) ([merge request](gitlab-org/gitlab!71813)) +- [Update SAST config primary action button variant](gitlab-org/gitlab@105b5e63a55545868c3a26b8fdfd8ed7939bb2d4) ([merge request](gitlab-org/gitlab!71783)) **GitLab Enterprise Edition** +- [Add rake task to pause or resume elastic indexing](gitlab-org/gitlab@6a60c27a05219d16980c924fffe6231cc1f4ef9d) ([merge request](gitlab-org/gitlab!71426)) **GitLab Enterprise Edition** +- [Changed cluster type badge to gitlab-ui element](gitlab-org/gitlab@f39cda9d1d654f58d379345db0eabfc23290f2a1) ([merge request](gitlab-org/gitlab!71504)) +- [Move advanced_search_multi_project_select FF to user actor](gitlab-org/gitlab@1d43d927e587d3fff1ec94404c442da11033fdee) ([merge request](gitlab-org/gitlab!71416)) **GitLab Enterprise Edition** +- [Implement Dependency proxy via Workhorse injectors](gitlab-org/gitlab@c9c9a36a7decac3a0ee6986d4e42730814ccb250) ([merge request](gitlab-org/gitlab!68157)) +- [Replace namespaces unique index on name and parent_id](gitlab-org/gitlab@db628d9df92faaee0b50bef7a1b525c2c2f974dc) ([merge request](gitlab-org/gitlab!71390)) +- [Remove orchestration policies feature flag](gitlab-org/gitlab@705218f2d9be1d17f70f2dcaa91ac81c18827bb0) ([merge request](gitlab-org/gitlab!71516)) **GitLab Enterprise Edition** +- [Redirect threat_monitoring policies endpoints](gitlab-org/gitlab@a07a65b574471cf6b19a02b39140327455f0e4f5) ([merge request](gitlab-org/gitlab!71517)) **GitLab Enterprise Edition** +- [Add tooltips to runners badges](gitlab-org/gitlab@7e0ab139085e6b3da86b4be1dfafb42b7d043b16) ([merge request](gitlab-org/gitlab!71404)) +- [Remove beta badge from GitLab Migration](gitlab-org/gitlab@b7fb1e66ebc384d67623c5ce3a287c41e9c851cd) ([merge request](gitlab-org/gitlab!71643)) +- [Show author badge in comments](gitlab-org/gitlab@4a90dc4244ad54b9518d1818d2fcf2efb869e93c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40198)) +- [Toggle banner using suggest_pipeline_enabled application setting](gitlab-org/gitlab@fac9b2b23bc60c0a53d7a1b7a950ed46d8b38ab9) ([merge request](gitlab-org/gitlab!71015)) +- [Enable merge requests discussions cache](gitlab-org/gitlab@de3fa103478f104456ccdab85efe752178c03c92) ([merge request](gitlab-org/gitlab!71635)) +- [Edit UI text of Abuse reports settings](gitlab-org/gitlab@2549f52084da0f575d1584b3c0afd73abfe60ffc) ([merge request](gitlab-org/gitlab!71276)) +- [Prevent Workhorse panics when Geo proxy URL is unset](gitlab-org/gitlab@b3d88bdafdcbdf97eebd52596c4cd6967d3a4c26) ([merge request](gitlab-org/gitlab!71285)) **GitLab Enterprise Edition** +- [Improve deployment information on Jira Cloud app](gitlab-org/gitlab@1b0cbfb845f387eaa9e67edfcb1e504592623fb2) by @rbordignon ([merge request](gitlab-org/gitlab!70880)) +- [Migrate branches nav from Bootstrap tabs to GlTabs](gitlab-org/gitlab@2b8a42b251094f9d811a6ba71cb03a4b9deddf55) ([merge request](gitlab-org/gitlab!71461)) +- [Allow dots in Helm channel, but forbid repeated dots](gitlab-org/gitlab@de0602ad3197e37ac0d6a59f0271c3141dd5a04e) by @sathieu ([merge request](gitlab-org/gitlab!69278)) +- [Remove analyzer_pipeline metrics join to ci_builds](gitlab-org/gitlab@f12722fd6c7e0e673c68e138632a6dabe9653039) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71210)) **GitLab Enterprise Edition** +- [Update cluster management project template with new version of Falco](gitlab-org/gitlab@ee66cfee8865be5b1a959097451aa25b1a198fba) ([merge request](gitlab-org/gitlab!71446)) +- [Update UI text in Group general settings](gitlab-org/gitlab@3b2b26758b6b6ea3af890190bf5eabc853c30c76) ([merge request](gitlab-org/gitlab!69869)) +- [Allow removal of cloud licenses](gitlab-org/gitlab@7f7e8de72eea09b7e51eb74c26e73698fed75a0d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71481)) **GitLab Enterprise Edition** +- [Remove default value for time zone user preference](gitlab-org/gitlab@4840ed7f831c7d1fc6fd3a403b575bd0ed103c64) ([merge request](gitlab-org/gitlab!70834)) +- [Exclude secret_detection findings from autoresolution](gitlab-org/gitlab@231545fd4cb47598b21e0bb6fbc364dd749bfec9) ([merge request](gitlab-org/gitlab!71436)) **GitLab Enterprise Edition** +- [Enable repo size limit and ip restriction](gitlab-org/gitlab@30bdbd2a95cd5af7e040116ea447f36e56a0e0a2) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70912)) **GitLab Enterprise Edition** +- [Remove `async_filtering` feature flag](gitlab-org/gitlab@00bbc6810d5ac3099f3ee86c615587f36a7d6af3) ([merge request](gitlab-org/gitlab!71035)) +- [Convert ee/geo/db/schema.rb to ee/geo/db/structure.sql](gitlab-org/gitlab@e900df0bcc90d24bb939de6e247fed9871562d31) ([merge request](gitlab-org/gitlab!71222)) **GitLab Enterprise Edition** +- [Updated the Cluster Agent Token table heading](gitlab-org/gitlab@d59a4d4a385927eb39248a4b75a6fdd2d9353d2e) ([merge request](gitlab-org/gitlab!71197)) **GitLab Enterprise Edition** +- [Fix DB load balance autoloading/code-reloading](gitlab-org/gitlab@91b7cf3e70237cdbd00b4d7ba4a82d21b28dc435) ([merge request](gitlab-org/gitlab!71218)) +- [Remove "files" from end of default commit message in Web IDE](gitlab-org/gitlab@f096a5554a0743955d0706144cfc888c32947363) by @scootergrisen ([merge request](gitlab-org/gitlab!70582)) +- [Ensure merge request header strings are internationalized](gitlab-org/gitlab@60611e55051d2d5614054957ce4e5fae233924c0) ([merge request](gitlab-org/gitlab!71093)) +- [Add namespace_ancestry_ids migration](gitlab-org/gitlab@1fae3ce0c92aa764cdb15cb8438d3975dccb7ef1) ([merge request](gitlab-org/gitlab!70042)) **GitLab Enterprise Edition** +- [Update Copy on License Compliance CTA](gitlab-org/gitlab@c2dbfa7a023a0458008214bed0371b702faed78b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70923)) **GitLab Enterprise Edition** +- [Remove download text from pipeline artifact dropdown items](gitlab-org/gitlab@466b1125e758fdf87bfe3a5944ac659d0dbae8bf) by @fabsrc ([merge request](gitlab-org/gitlab!70982)) +- [Add suggest_pipeline_enabled to application_settings](gitlab-org/gitlab@048800044f3a4d9c01d1977fc14559a1463cc4a1) ([merge request](gitlab-org/gitlab!70756)) +- [Update deprecated GlIcon size in IDE preview navigator](gitlab-org/gitlab@b2b4570795732a0eae4665f03f7f1c064d03e53b) by @jameschensmith ([merge request](gitlab-org/gitlab!70960)) +- [Block move and clone of requirement issues](gitlab-org/gitlab@3c18b544bbc2bb423e1ddc0a5c1944af48baf9d7) ([merge request](gitlab-org/gitlab!70439)) **GitLab Enterprise Edition** +- [Remove owner validation in AdditionalPack transfer](gitlab-org/gitlab@f5a1bcecabee1cc1ce91275026cec8c4f67b0035) ([merge request](gitlab-org/gitlab!70790)) **GitLab Enterprise Edition** +- [Update Rouge syntax highlighting gem](gitlab-org/gitlab@879628c8260b2b5813ce4d90a01a890bd0afe274) ([merge request](gitlab-org/gitlab!70738)) +- [Check anonymous search access in API endpoints](gitlab-org/gitlab@5c2f3a7758cbba21bb229f0680945bb25a08d221) ([merge request](gitlab-org/gitlab!70290)) **GitLab Enterprise Edition** +- [Merge boards Apollo client](gitlab-org/gitlab@32dd42f07bcc37e9ed4d077dd42ba501840bb292) ([merge request](gitlab-org/gitlab!70375)) +- [Bump swagger-ui-dist to 3.52.3](gitlab-org/gitlab@2d5caeba4714fcb860bc96789d2e40e1247bb39f) by @bufferoverflow ([merge request](gitlab-org/gitlab!70740)) +- [Assign trial to only eligible namespace](gitlab-org/gitlab@16e6aeddd380f87fb4b13c38f15d5f4b66f26ae2) ([merge request](gitlab-org/gitlab!70196)) **GitLab Enterprise Edition** +- [Remove cutoff logic for expiration message](gitlab-org/gitlab@6ff13cf0e1217bcd459ef2a7c1d82c70098a6889) ([merge request](gitlab-org/gitlab!70584)) **GitLab Enterprise Edition** +- [Replace "Any branch" with "All branches"](gitlab-org/gitlab@1b256d5a93c9a76b71d07f9ef4a4e7d08bf73a8c) ([merge request](gitlab-org/gitlab!70552)) +- [Re-organize Environment Action Buttons](gitlab-org/gitlab@528a22f0d7b4eda3a40b65c59f85d1b0eda44469) ([merge request](gitlab-org/gitlab!70228)) +- [Fix multiple translation strings](gitlab-org/gitlab@6609b9fa4e3433ffa66a0ebb680a909e1b19071e) by @scootergrisen ([merge request](gitlab-org/gitlab!70182)) + +### Removed (9 changes) + +- [Remove shared runners CTE FF](gitlab-org/gitlab@b47f6a628664b74d4f3aed1a1acf4b3178ac1cb2) ([merge request](gitlab-org/gitlab!72370)) +- [Remove bio-html and cached_markdown_version from user_details](gitlab-org/gitlab@c045bb54932fa708163aa59b65de6ffe598f3fbd) ([merge request](gitlab-org/gitlab!71663)) +- [Remove obsolete column for DevOps analytics](gitlab-org/gitlab@7fb3dcc912ad28fa859614ec099d746c8cd2d9d6) ([merge request](gitlab-org/gitlab!71907)) +- [Drop Delayed Project Removal column from Namespaces](gitlab-org/gitlab@6262b4c53d99eeac2146b919f8cf43264d4ce256) ([merge request](gitlab-org/gitlab!71077)) +- [Remove ignoring framework column for compliance project settings](gitlab-org/gitlab@973da3fc3a4b28a587c24118803d39b2998618d7) ([merge request](gitlab-org/gitlab!71634)) **GitLab Enterprise Edition** +- [Remove unused Debian distribution methods](gitlab-org/gitlab@bde080e16a3743523310c7b6929f26193bee835a) by @sathieu ([merge request](gitlab-org/gitlab!71502)) +- [Remove project_level_issues_analytics FF](gitlab-org/gitlab@deba920fce7df9aed3ddb0ed49c5f899f9ad6d5d) ([merge request](gitlab-org/gitlab!71382)) +- [Removed instance level serverless domains feature](gitlab-org/gitlab@e834417cb802979e6eba8073b5b6736b9168a8dc) ([merge request](gitlab-org/gitlab!71283)) +- [Remove feature flag `ci_parallel_minutes_reset`](gitlab-org/gitlab@e106986cd1349c73347fd83592ebd7d2e876ca8b) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71041)) **GitLab Enterprise Edition** + +### Security (34 changes) + +- [Add autocomplete attribute to most password fields](gitlab-org/gitlab@8a71c388de0e238b3e77e0dad55262023fb03533) ([merge request](gitlab-org/gitlab!72329)) +- [Rename profile password fields so password managers understand](gitlab-org/gitlab@16820a9eea57095918942771c51845972e5cd408) ([merge request](gitlab-org/gitlab!71237)) +- [Fix reverse tabnabbing issue](gitlab-org/gitlab@d133ec2ba23ea87e0bd8270a24341e9403757e01) ([merge request](gitlab-org/gitlab!71756)) +- [Use v-safe-html in project_list_item.vue](gitlab-org/gitlab@14c07dd906f3666119c4cb6b3c4e3c2e338a5e54) by @Fall1ngStar ([merge request](gitlab-org/gitlab!70730)) +- [Require password confirmation when user changes their primary email](gitlab-org/gitlab@086303a7529c480db08ee39173299f2ef4271b37) ([merge request](gitlab-org/gitlab!69439)) +- [Fix XSS in Jira link](gitlab-org/gitlab@406fa2dfc40f5b7c54fd329f88125c37b851c631) **GitLab Enterprise Edition** +- [Return 404 if model id wasn't passed to UploadsController](gitlab-org/gitlab@c5fac89577d5576c570486dab91d7af099043f42) +- [Scrub artifacts signed URL in SendEntry logs](gitlab-org/gitlab@e9d2f771e6ca5d0eb84e90fa1973f90356ffce7c) +- [Prevent double-impersonation and impersonation breakout](gitlab-org/gitlab@780c8592b1e5c9f3ebb25682d22868d3e41d0ff8) +- [Clear session access tokens when starting/stopping impersonation](gitlab-org/gitlab@413f65cf961b9330d4455a3c7c96dbb5c3076593) +- [Require password param for 2FA changes](gitlab-org/gitlab@2fee55910eb9294aac3d096009e18afbf701b2e8) +- [Prevent users from bypassing 2FA on certain pages](gitlab-org/gitlab@5a52554984c540c0211a91169956cc7f3b8e511f) +- [Use validated URL when sending request to Gitea Importer](gitlab-org/gitlab@7af8abd4df9a98f7a1ae7c4ec9840d0a7a8c684d) +- [Fix permissions check on project members import](gitlab-org/gitlab@3b34c4e1e960dabc982c147b996ea4a3228f36fe) +- [Fix fogbugz importer DNS Rebind SSRF](gitlab-org/gitlab@395649cc463054467cfa9265f0f6d8a1a943226d) +- [Require group admin access to list pending invites](gitlab-org/gitlab@f4b8af4e6829d0ccfbf2f34caa0183908d622d66) +- [Do not export and import repository_size_limit](gitlab-org/gitlab@215ac57160a36faa55adfb4069c48a6e993be0f6) +- [Escapes MR approval rule names correctly](gitlab-org/gitlab@a3af82b0f065cbf449c8285db91d8837a7208f17) +- [Disable exporting pipeline triggers on project export](gitlab-org/gitlab@4195b918418786babcc71af51b61ea3fad107a8a) +- [Add pagination to dependencies API](gitlab-org/gitlab@5eeb99760ce78b28e8e77361daec438a1c588d31) **GitLab Enterprise Edition** +- [Filter shared groups autocomplete by permitted](gitlab-org/gitlab@faf9969eb78296e8f20bee8bac6563f6f02ea07a) **GitLab Enterprise Edition** +- [Apply account locking to password reset page](gitlab-org/gitlab@38a3aceb6e20e52d6f2a554dcdf6c4828d2d49a2) +- [Verify state before using errors from OAuth2 OmniAuth providers](gitlab-org/gitlab@79457dafe5558446504e7cdda33f2731e4033d62) +- [Fix GFM autocomplete xss](gitlab-org/gitlab@bd9bc17acd5930c5830f67ae8becdf7b8e7b4550) +- [Remove related project access tokens when a project is deleted](gitlab-org/gitlab@ff76361cba4561a13fca600afe431a50137e4f45) +- [Do not allow status checks to exist with external protected branches](gitlab-org/gitlab@dd5d6c9dda012e3776eddf89ddbc74073b5d40d5) **GitLab Enterprise Edition** +- [Permission check issuable template API data](gitlab-org/gitlab@dbad14b7fac92ed9cae602a3e30676703f406e62) **GitLab Enterprise Edition** +- [Require access token for git when 2fa is required](gitlab-org/gitlab@79c523c3f9ade423ad960f8bd30b686759eda29f) +- [Prohibit anonymous access for specific user API endpoint](gitlab-org/gitlab@635002da5981dc88c0942bb11ae4a14e7601362f) +- [Respect disabled import sources when initiating import via API](gitlab-org/gitlab@0dec589a9811e4ed72002116fcc89ca65447cb72) +- [Prevent showing not allowed subgroup epics](gitlab-org/gitlab@c77693d4154db385a292b1a290598b145ac20a57) **GitLab Enterprise Edition** +- [Prevent moving epic issues to different group hierarchy](gitlab-org/gitlab@eefca514c7716dc7071de8a3de9567f1a97d66df) **GitLab Enterprise Edition** +- [Fix denial-of-service attack in Markdown parser](gitlab-org/gitlab@1315787019130f5e65ef00dc166721dd703a2908) +- [Enforce configured scopes for Oauth applications](gitlab-org/gitlab@31cc65d79b44e43108f7eeac06496c12cf9f8ee3) + +### Performance (27 changes) + +- [Set X-Requested-With for startup JS requests](gitlab-org/gitlab@5b10ead1fc4d7fdf8836f210a70825ba1834cd7b) ([merge request](gitlab-org/gitlab!72360)) +- [Use Group linear ancestor scopes](gitlab-org/gitlab@e2664d387b9e50ea25253044bb6792983dd5992c) ([merge request](gitlab-org/gitlab!70708)) **GitLab Enterprise Edition** +- [Skip secure product metrics in service ping](gitlab-org/gitlab@a7895ff78405735fc0a9be4e9339f45aec7d6023) ([merge request](gitlab-org/gitlab!72198)) **GitLab Enterprise Edition** +- [Clean up failed archive when no more attempts left](gitlab-org/gitlab@22bdd739efbfabc999544aac0c17f6719024237e) ([merge request](gitlab-org/gitlab!71878)) +- [Render gitaly-unavailable error for Tags page](gitlab-org/gitlab@9a20a93028cc1ff4e9191f3204549a2f71393705) ([merge request](gitlab-org/gitlab!71078)) +- [Enable FF "reference_cache_memoization" by default](gitlab-org/gitlab@a1ad071bc5d8bb2a31545c90f02d91d4d78cf045) ([merge request](gitlab-org/gitlab!71731)) +- [Enable FF "tags_finder_gitaly" by default](gitlab-org/gitlab@bf59b0925716dd5342cd9d77396ca0adf74d5ff3) ([merge request](gitlab-org/gitlab!71743)) +- [Quarantine broken security_products_usage metrics](gitlab-org/gitlab@417a1319e87b37aea0b987736d2920e17a50f1b6) ([merge request](gitlab-org/gitlab!71722)) **GitLab Enterprise Edition** +- [Preload user project access in group API](gitlab-org/gitlab@c6bc7f71703844a96e0781da5c1e4d12ac2b0c23) ([merge request](gitlab-org/gitlab!71631)) +- [User ParticipantService linear ancestor scopes](gitlab-org/gitlab@133206812814dbea34ad7c9673bcb8849d2497f3) ([merge request](gitlab-org/gitlab!70684)) +- [Use GroupPlansPreloader linear ancestor scopes](gitlab-org/gitlab@5bffbad5917195c4eff72570a5798e5a5aa81d29) ([merge request](gitlab-org/gitlab!70685)) **GitLab Enterprise Edition** +- [Use specialized worker to refresh authorizations on group-share update](gitlab-org/gitlab@fa1d31ee1f88ba8d659f3d14ef06bc2867ee19ae) ([merge request](gitlab-org/gitlab!70361)) +- [Disable BatchLoader replace_methods by default](gitlab-org/gitlab@cac51506144d441abf74026b788ee5c9fedb0452) ([merge request](gitlab-org/gitlab!71364)) +- [Avoid loading project namespace for id](gitlab-org/gitlab@c5b9c6b5c600827f24b0d97bf30c97644abada19) ([merge request](gitlab-org/gitlab!71051)) +- [Use MembersFinder ancestors linear scopes](gitlab-org/gitlab@ea414318775364ceeecc5d5a9b812fcdc5f7d758) ([merge request](gitlab-org/gitlab!70583)) +- [Use ApplicationSetting ancestors linear scopes](gitlab-org/gitlab@d7aaa809a62bd5a9668f06fe554c1f12c8dbec66) ([merge request](gitlab-org/gitlab!70579)) **GitLab Enterprise Edition** +- [Disable replace_methods in users autocomplete](gitlab-org/gitlab@6d0b7babd98d253fe65153653a8e3ba23372ac7e) ([merge request](gitlab-org/gitlab!71262)) +- [Remove priority sort from board list issues](gitlab-org/gitlab@30820e968005dafccf66be6fc5fe534bd8c05d4a) ([merge request](gitlab-org/gitlab!70674)) +- [Use GroupTree ancestors linear scopes](gitlab-org/gitlab@c1f9f33079d41594f41507f830d90164caecc59d) ([merge request](gitlab-org/gitlab!70503)) +- [Replace Group ancestors scope with linear version](gitlab-org/gitlab@bd908d325f2989e184c016bbf6ffa2f34ac9f7b3) ([merge request](gitlab-org/gitlab!70495)) +- [Add concurrent index for selecting resource_group from ci_builds](gitlab-org/gitlab@f5fb3b4b90e0806453f7ffa418edf904d9c6632f) ([merge request](gitlab-org/gitlab!70911)) +- [Skip keep_around commit callback if `skip_keep_around_commits` is true](gitlab-org/gitlab@7abd7d2d47888ea92459534a42734ac734bc0eef) ([merge request](gitlab-org/gitlab!69910)) +- [Add index for vulnerability_occurrences image location](gitlab-org/gitlab@44e892e7f517e26ec52cdfb9d9b8c7552b20e761) ([merge request](gitlab-org/gitlab!70275)) +- [Improve retrieving default branch of empty repos](gitlab-org/gitlab@c5ccb9261e05c38fbe0956bc563556481e32c783) ([merge request](gitlab-org/gitlab!70116)) +- [Update pending builds namespace traversal ids](gitlab-org/gitlab@9aa02e07af6a936244b88b4c873a866cea4fb65e) ([merge request](gitlab-org/gitlab!70691)) +- [Use specialized worker to refresh authorizations on project transfer](gitlab-org/gitlab@34f5f02a72b710cf97b6ed8526dc42b4c026aa07) ([merge request](gitlab-org/gitlab!70356)) +- [Add a `uniq` filter to SHAs passed to the keep around service](gitlab-org/gitlab@e3b599c5bdcebd15b117e039b58e4c98349ac652) ([merge request](gitlab-org/gitlab!70323)) + +### Other (41 changes) + +- [Remove feature flag for pipeline editor drawer](gitlab-org/gitlab@28f635fffc9f2db4d2c43bff9afac4b2b3f44bdc) ([merge request](gitlab-org/gitlab!72237)) +- [Improve UX of group two factor grace period input](gitlab-org/gitlab@84208b270b1ce7148a1db0caaca50e2111348342) ([merge request](gitlab-org/gitlab!72280)) +- [Remove metrics that keeps count of deleted container images](gitlab-org/gitlab@96806577b479cddf2e0e1b0a8a417702ee5e3865) by @edith007 ([merge request](gitlab-org/gitlab!70983)) **GitLab Enterprise Edition** +- [Remove metric that keeps track of published Debian packages](gitlab-org/gitlab@5193a7f3c2512c05cffab2627ae0a86f9a45a535) by @edith007 ([merge request](gitlab-org/gitlab!70988)) **GitLab Enterprise Edition** +- [Remove the FF ci_idempotent_pipeline_process_worker](gitlab-org/gitlab@30b3172abc9592c640412641f9f420201bcfc019) ([merge request](gitlab-org/gitlab!72297)) +- [Remove metric that keeps track of downloaded container images](gitlab-org/gitlab@460b8f2e3a41a5fbf6e6ecfc83c4ead68c23a28c) by @edith007 ([merge request](gitlab-org/gitlab!70985)) **GitLab Enterprise Edition** +- [Add Google Analytics ID to gitlab_standard schema for snowplow](gitlab-org/gitlab@a9522b5e8afd76353fc9fb0d92d32e46b03b7f6f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71242)) +- [Remove metric that keeps track of published container images](gitlab-org/gitlab@2a4246d2ad491d1f96437a5277a7f0931dd8bf6c) by @edith007 ([merge request](gitlab-org/gitlab!70987)) **GitLab Enterprise Edition** +- [Remove the FF ci_include_rules](gitlab-org/gitlab@53e9d5fb9f1fd021566b1d2f5cd1556207be9194) ([merge request](gitlab-org/gitlab!72122)) +- [Always use rate limiting Redis](gitlab-org/gitlab@5bc8987a710cc84aa399d99f3336523bffbc957f) ([merge request](gitlab-org/gitlab!72113)) +- [Cleanup delete orphaned deployments background migration](gitlab-org/gitlab@233858c7e8e63cc3b3405621ceee8c73d73c8495) ([merge request](gitlab-org/gitlab!66600)) +- [Remove feature flag disable_joins_upstream_downstream_projects](gitlab-org/gitlab@76d008a4d5b5bc4a08760e3d1c863b0668767c6b) ([merge request](gitlab-org/gitlab!71968)) +- [Do not append hash to pseudonymized URL](gitlab-org/gitlab@768d0801050fe83d8e81a6abbf9cbf34bfb6534a) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71335)) +- [Remove test summary widget usage ping feature flag](gitlab-org/gitlab@5d780fc9ec7b0dbfc6df1bed102c5b6006a409c6) ([merge request](gitlab-org/gitlab!71781)) +- [Remove sync_namespace_name_with_cdot flag](gitlab-org/gitlab@467a39884503f3f387760b503943e447e8fa6c7e) ([merge request](gitlab-org/gitlab!71763)) +- [Set `assumeImmutableResults` to `true` in access tokens Apollo config](gitlab-org/gitlab@a2d295513d9ba4a336997388b696302110bf12b5) by @imrishabh18 ([merge request](gitlab-org/gitlab!70873)) +- [Remove unused struct field](gitlab-org/gitlab@916a647334b542ad4b011c28a511bc4a5dd9ac10) ([merge request](gitlab-org/gitlab!71738)) +- [Re Reschedule Delete Orphaned Deployments BG migration](gitlab-org/gitlab@4fc0ad4eebce4f76bad344913cf16c340dfb0d62) ([merge request](gitlab-org/gitlab!71700)) +- [Refactor compliance framework UI and documentation](gitlab-org/gitlab@0b3b96373f0633fd333f87d0446faa9657a9831b) ([merge request](gitlab-org/gitlab!70258)) **GitLab Enterprise Edition** +- [Remove the FF ci_pipeline_add_job_with_lock](gitlab-org/gitlab@7bb475a84b5411dd71cf04d62dc760837af432a6) ([merge request](gitlab-org/gitlab!71652)) +- [Remove project authorizations API FF](gitlab-org/gitlab@6a4e306aa856dc9cbfb31d070f5edc20491ff10d) ([merge request](gitlab-org/gitlab!71638)) +- [Revise UI text for Usage Statistics](gitlab-org/gitlab@6f7df4eabd0fe12bd735562b1c61704f62438d08) ([merge request](gitlab-org/gitlab!71473)) +- [Removes `track_epic_boards_activity` feature flag](gitlab-org/gitlab@3a3c53a19f8e14a11872afc5bfbea9be1ebb7a7e) ([merge request](gitlab-org/gitlab!71552)) +- [Remove pages_smart_check_outdated_sha feature flag](gitlab-org/gitlab@b68e407fe931b4c6c2912926c8a576448cba65ea) ([merge request](gitlab-org/gitlab!71530)) +- [Additional tests of #work_in_progress?](gitlab-org/gitlab@bab351e939be61d330dc683bbeb638a132410079) ([merge request](gitlab-org/gitlab!71437)) +- [Use varchar_pattern_ops indexes for labels](gitlab-org/gitlab@dbf00facaf0d5aab14455f524d0608a133abd14c) ([merge request](gitlab-org/gitlab!70770)) +- [Update runner status descriptions](gitlab-org/gitlab@471c067f8de82a6ae83282cad16fec9dfed0fb30) ([merge request](gitlab-org/gitlab!71447)) +- [Make build_id param as required when updating CI minutes async](gitlab-org/gitlab@fd716d443a31f7a22716c2feec11deb65f084d65) ([merge request](gitlab-org/gitlab!71297)) **GitLab Enterprise Edition** +- [Remove FF ci_remove_update_retried_from_process_pipeline](gitlab-org/gitlab@6d3b53f4fd3925ca38cf0c75e9941d60e23e71f3) ([merge request](gitlab-org/gitlab!71201)) +- [Filter Welcome to GitLab console message from capybara](gitlab-org/gitlab@511d56f0fdbec074930037f587737d7066002a1c) by @leetickett ([merge request](gitlab-org/gitlab!71151)) +- [Remove redundant index on taggings table](gitlab-org/gitlab@5124a0375265ede986eed631e9cfad7cf1400642) ([merge request](gitlab-org/gitlab!71083)) +- [Update additional CI minute docs](gitlab-org/gitlab@1d74e66b394c9d5418f0d2f277bd61ddb3de1b98) ([merge request](gitlab-org/gitlab!70934)) +- [Drop old int4 PK column for push_event_payloads](gitlab-org/gitlab@6e19f4eee1eafd432619d7fbf0d897ef2e622776) ([merge request](gitlab-org/gitlab!70920)) +- [Drop old int4 PK column for events](gitlab-org/gitlab@2de6a4f4784f68e2a8e2680b1273d76f9ad21023) ([merge request](gitlab-org/gitlab!70915)) +- [Remove foreign key from terraform_state_versions to ci_builds](gitlab-org/gitlab@1f99a8584dd7573c64e658712d504474404120f7) ([merge request](gitlab-org/gitlab!70743)) +- [Drop old int4 PK columns for ci_sources_pipelines](gitlab-org/gitlab@fecfc17771721bd94dbb4a2ca60ce97f149e5e60) ([merge request](gitlab-org/gitlab!70896)) +- [Drop old int4 PK columns for ci_job_artifacts](gitlab-org/gitlab@751d343ebf822966ec66bc59e954601ca6639a66) ([merge request](gitlab-org/gitlab!70884)) +- [Cleanup bigint conversion for ci_builds_metadata](gitlab-org/gitlab@fbf66ae98289e7ad5b0d8a126b8b92d8a29aa8fb) ([merge request](gitlab-org/gitlab!69712)) +- [Remove pipeline foreign keys from package tables](gitlab-org/gitlab@3b8d317b98a2054f2a6251b02940974bb3a74d5d) ([merge request](gitlab-org/gitlab!70614)) +- [Cleanup bigint conversion for ci_builds](gitlab-org/gitlab@176992aa2b2e76b22637a07d5bafbd6541324a7d) ([merge request](gitlab-org/gitlab!70351)) +- [Drop support for data-track-event](gitlab-org/gitlab@ac6027fbef6adf41643412a84945fda6f15c9666) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70234)) ## 14.3.3 (2021-10-12) @@ -568,6 +973,39 @@ entry. - [Remove the FF ci_reset_bridge_with_subsequent_jobs](gitlab-org/gitlab@a4a75095b9b0250d0b1bdadea90c8a4cd24449b2) ([merge request](gitlab-org/gitlab!68295)) - [Removes ci_same_stage_job_needs ff](gitlab-org/gitlab@5e509cf7aa90041a541b19dda563120a359f0bf9) ([merge request](gitlab-org/gitlab!68041)) +## 14.2.5 (2021-09-30) + +### Security (28 changes) + +- [Require password param for 2FA changes](gitlab-org/security/gitlab@5693760a3edf82774a4e19b9bb561be87316be54) ([merge request](gitlab-org/security/gitlab!1815)) +- [Fix permissions check on project members import](gitlab-org/security/gitlab@f9b4200427833e370638aa63851d6801a40c404c) ([merge request](gitlab-org/security/gitlab!1859)) +- [Respect disabled import sources when initiating import via API](gitlab-org/security/gitlab@3c9af055ece281fcaab0b8dcc277e0ce9133ad31) ([merge request](gitlab-org/security/gitlab!1847)) +- [Return 404 if model id wasn't passed to UploadsController](gitlab-org/security/gitlab@dd4616362040d2b812d69ff2ecf78e70ff4b9ae3) ([merge request](gitlab-org/security/gitlab!1844)) +- [Scrub artifacts signed URL in SendEntry logs](gitlab-org/security/gitlab@41d275bb73943ba6f970d6678b49c9336194af35) ([merge request](gitlab-org/security/gitlab!1841)) +- [Prevent double-impersonation and impersonation breakout](gitlab-org/security/gitlab@c0ab498adda057f4d87969d74c32a3ea95df297c) ([merge request](gitlab-org/security/gitlab!1835)) +- [Clear session access tokens when starting/stopping impersonation](gitlab-org/security/gitlab@fd39d88b348d525818820d2496afe08612420023) ([merge request](gitlab-org/security/gitlab!1832)) +- [Use validated URL when sending request to Gitea Importer](gitlab-org/security/gitlab@328e3c726c693b32666e0fb32eda0b7a6f22d8ad) ([merge request](gitlab-org/security/gitlab!1821)) +- [Fix XSS in Jira link](gitlab-org/security/gitlab@868d8b9c4a1e9e9019a7ff51da11f75051e452c3) ([merge request](gitlab-org/security/gitlab!1817)) **GitLab Enterprise Edition** +- [Fix fogbugz importer DNS Rebind SSRF](gitlab-org/security/gitlab@4f4b5a15a3508084f921442b3a7f42ba0448f1bb) ([merge request](gitlab-org/security/gitlab!1681)) +- [Remove related project access tokens when a project is deleted](gitlab-org/security/gitlab@282e81198f80f1fda912da5bc6f671d778b19ca9) ([merge request](gitlab-org/security/gitlab!1811)) +- [Require group admin access to list pending invites](gitlab-org/security/gitlab@1ce85345787025222c915fe5fa314bad8994b6ba) ([merge request](gitlab-org/security/gitlab!1720)) +- [Do not export and import repository_size_limit](gitlab-org/security/gitlab@359f14e41dfc355a13041cdf1dbcd082c254200c) ([merge request](gitlab-org/security/gitlab!1769)) +- [Escapes MR approval rule names correctly](gitlab-org/security/gitlab@d84739982599197ff337d69d818634544270e142) ([merge request](gitlab-org/security/gitlab!1808)) +- [Filter shared groups autocomplete by permitted](gitlab-org/security/gitlab@3a2b4c7ff1eb2ba3e84840ba2800c13d6491d726) ([merge request](gitlab-org/security/gitlab!1805)) **GitLab Enterprise Edition** +- [Require access token for git when 2fa is required](gitlab-org/security/gitlab@deb4e7e5f941c82450d382c1b85f6325e367394f) ([merge request](gitlab-org/security/gitlab!1795)) +- [Disable exporting pipeline triggers on project export](gitlab-org/security/gitlab@417761bb2f67f03bfe803163bad97da7b9fa088b) ([merge request](gitlab-org/security/gitlab!1789)) +- [Add pagination to dependencies API](gitlab-org/security/gitlab@2f84755ba54580df126054a561d8cc4731f936d3) ([merge request](gitlab-org/security/gitlab!1724)) **GitLab Enterprise Edition** +- [Permission check issuable template API data](gitlab-org/security/gitlab@a90614e2efc813ca5f13a9aa9b51f13f0e8934aa) ([merge request](gitlab-org/security/gitlab!1786)) **GitLab Enterprise Edition** +- [Apply account locking to password reset page](gitlab-org/security/gitlab@6bbd77c0748e59eacff51edb6264d6099ee14a38) ([merge request](gitlab-org/security/gitlab!1783)) +- [Enforce configured scopes for Oauth applications](gitlab-org/security/gitlab@a9f44bb19cbfc460cd05627a80ef17c39cdde86b) ([merge request](gitlab-org/security/gitlab!1780)) +- [Verify state before using errors from OAuth2 OmniAuth providers](gitlab-org/security/gitlab@6f70292d0fa3efbe99c44748a463df189830cc35) ([merge request](gitlab-org/security/gitlab!1777)) +- [Prevent moving epic issues to different group hierarchy](gitlab-org/security/gitlab@979d40003794014d5930709a257e9a5c75df10e6) ([merge request](gitlab-org/security/gitlab!1773)) **GitLab Enterprise Edition** +- [Prevent showing not allowed subgroup epics](gitlab-org/security/gitlab@2f72e4062f6cd7256ffff31172b00c012a5910e1) ([merge request](gitlab-org/security/gitlab!1765)) **GitLab Enterprise Edition** +- [Do not allow status checks to exist with external protected branches](gitlab-org/security/gitlab@dd08837d054c574f94f80e806cc7b49de342cc57) ([merge request](gitlab-org/security/gitlab!1762)) **GitLab Enterprise Edition** +- [Fix GFM autocomplete xss](gitlab-org/security/gitlab@5afba618ef89fdce544f498a30e7366e3f6cb788) ([merge request](gitlab-org/security/gitlab!1747)) +- [Prohibit anonymous access for specific user API endpoint](gitlab-org/security/gitlab@a813bd8a8f07ffa0477efd3a3936b436e5ec6b17) ([merge request](gitlab-org/security/gitlab!1736)) +- [Fix denial-of-service attack in Markdown parser](gitlab-org/security/gitlab@f618ad9c104882ac5f707b162e8119805252019e) ([merge request](gitlab-org/security/gitlab!1729)) + ## 14.2.4 (2021-09-17) ### Fixed (2 changes) @@ -1159,6 +1597,45 @@ entry. - [Add helpful text to URL group validation and limit text](gitlab-org/gitlab@59a5a6266cb0d5434596170ffa36e4e74b8d2c2c) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65369)) **GitLab Enterprise Edition** - [Refactor external storage admin area configuration UI and docs](gitlab-org/gitlab@497ba4fc8f4ec1d234c9f5f1ec5c69712b8c7cb3) ([merge request](gitlab-org/gitlab!66219)) +## 14.1.7 (2021-09-30) + +### Security (28 changes) + +- [Require password param for 2FA changes](gitlab-org/security/gitlab@4e16401a77264ef3127f0bb314fa0abab11216c7) ([merge request](gitlab-org/security/gitlab!1816)) +- [Fix permissions check on project members import](gitlab-org/security/gitlab@be54b3f4890fa89d58cb02be79c65025f606bd6c) ([merge request](gitlab-org/security/gitlab!1860)) +- [Respect disabled import sources when initiating import via API](gitlab-org/security/gitlab@b76b6229c93447954efc5719e6dd61eb601afdc4) ([merge request](gitlab-org/security/gitlab!1848)) +- [Return 404 if model id wasn't passed to UploadsController](gitlab-org/security/gitlab@8ab1cfaafba21a9e90ef41677993af2afdcd920a) ([merge request](gitlab-org/security/gitlab!1845)) +- [Scrub artifacts signed URL in SendEntry logs](gitlab-org/security/gitlab@5bae93b2f085d5dac58e411bffb5ca518fe7df98) ([merge request](gitlab-org/security/gitlab!1842)) +- [Prevent double-impersonation and impersonation breakout](gitlab-org/security/gitlab@7c82d0f2a1dbfb0a23d6a5cdaee448307ffc6972) ([merge request](gitlab-org/security/gitlab!1836)) +- [Clear session access tokens when starting/stopping impersonation](gitlab-org/security/gitlab@a4d529eb7c8eeb3e9c42ae3d81514d79a905cdb7) ([merge request](gitlab-org/security/gitlab!1833)) +- [Use validated URL when sending request to Gitea Importer](gitlab-org/security/gitlab@b30536e6c9aa969c76bcd167f00db5a0e07ace7a) ([merge request](gitlab-org/security/gitlab!1820)) +- [Fix XSS in Jira link](gitlab-org/security/gitlab@9ace10c46744ee220c649d2da0eeb3e99216ee7d) ([merge request](gitlab-org/security/gitlab!1625)) **GitLab Enterprise Edition** +- [Fix fogbugz importer DNS Rebind SSRF](gitlab-org/security/gitlab@9d7107665d6ed931ef4b2feeb0287bc71b89232c) ([merge request](gitlab-org/security/gitlab!1682)) +- [Remove related project access tokens when a project is deleted](gitlab-org/security/gitlab@b86096865949f07f6a2020603959117d9c84877b) ([merge request](gitlab-org/security/gitlab!1812)) +- [Require group admin access to list pending invites](gitlab-org/security/gitlab@404b344edd61b2f13c3498cd545c2b40165ee536) ([merge request](gitlab-org/security/gitlab!1721)) +- [Do not export and import repository_size_limit](gitlab-org/security/gitlab@56f563980f944f1a5e3935ad82070e6719cd5a0c) ([merge request](gitlab-org/security/gitlab!1768)) +- [Escapes MR approval rule names correctly](gitlab-org/security/gitlab@ea64f981ce70a0e1e6ee58e64a6007e82f48e071) ([merge request](gitlab-org/security/gitlab!1809)) +- [Filter shared groups autocomplete by permitted](gitlab-org/security/gitlab@59999ab27cba402589b27d204cf29678100e948b) ([merge request](gitlab-org/security/gitlab!1806)) **GitLab Enterprise Edition** +- [Require access token for git when 2fa is required](gitlab-org/security/gitlab@6a4a75efd7685a69ffa7cc4c027c7058013cca45) ([merge request](gitlab-org/security/gitlab!1796)) +- [Disable exporting pipeline triggers on project export](gitlab-org/security/gitlab@8a8c78ed054def210013a849195939d7888fcf65) ([merge request](gitlab-org/security/gitlab!1790)) +- [Add pagination to dependencies API](gitlab-org/security/gitlab@2a963ad670c60d1f3078fdf446ea755c5862fa26) ([merge request](gitlab-org/security/gitlab!1725)) **GitLab Enterprise Edition** +- [Permission check issuable template API data](gitlab-org/security/gitlab@9d95d13bc714e46b5e3697288c4b398cb5aee88b) ([merge request](gitlab-org/security/gitlab!1787)) **GitLab Enterprise Edition** +- [Apply account locking to password reset page](gitlab-org/security/gitlab@47ee79b1983de886f5ebe04b2975c2e37aa938ce) ([merge request](gitlab-org/security/gitlab!1784)) +- [Enforce configured scopes for Oauth applications](gitlab-org/security/gitlab@acf2d894c91aa7fb72ea32b10e50e94441885399) ([merge request](gitlab-org/security/gitlab!1781)) +- [Verify state before using errors from OAuth2 OmniAuth providers](gitlab-org/security/gitlab@20073576508aa239e52d8ff911c1dfd3df8af670) ([merge request](gitlab-org/security/gitlab!1778)) +- [Prevent moving epic issues to different group hierarchy](gitlab-org/security/gitlab@93c6ec69b7bc6c9124a2a5350cebebb57f63a28f) ([merge request](gitlab-org/security/gitlab!1774)) **GitLab Enterprise Edition** +- [Prevent showing not allowed subgroup epics](gitlab-org/security/gitlab@72a11e72425a033f3464d6ff12b4d06e12ec9faf) ([merge request](gitlab-org/security/gitlab!1766)) **GitLab Enterprise Edition** +- [Do not allow status checks to exist with external protected branches](gitlab-org/security/gitlab@8f96c013ccbbe9c52b3f03fb0d247debb1b157a8) ([merge request](gitlab-org/security/gitlab!1763)) **GitLab Enterprise Edition** +- [Fix GFM autocomplete xss](gitlab-org/security/gitlab@fd92dabddff5ae5d67a98aef5d858438520a2f06) ([merge request](gitlab-org/security/gitlab!1748)) +- [Prohibit anonymous access for specific user API endpoint](gitlab-org/security/gitlab@2e8a386430309a931dbbd47fba7540a53399ad64) ([merge request](gitlab-org/security/gitlab!1737)) +- [Fix denial-of-service attack in Markdown parser](gitlab-org/security/gitlab@5b6ed5212f880e2397dbea9ffc74cf0a35bd4411) ([merge request](gitlab-org/security/gitlab!1728)) + +## 14.1.6 (2021-09-27) + +### Fixed (1 change) + +- [Fix Elastic::MigrationWorker current_migration (2nd attempt)](gitlab-org/gitlab@f07c7a5f173a2fc053247664f21c03d29df543a4) ([merge request](gitlab-org/gitlab!71187)) **GitLab Enterprise Edition** + ## 14.1.5 (2021-09-02) ### Fixed (1 change) @@ -1796,6 +2273,12 @@ entry. - [Remove diffs gradual load feature flag](gitlab-org/gitlab@027d7c4327b5b6205a84281239027273517bf81b) ([merge request](gitlab-org/gitlab!55478)) - [Remove partial index for Hashed Storage migration](gitlab-org/gitlab@3ed017a1023d7b0941a7606b69e6caee8d22f15c) ([merge request](gitlab-org/gitlab!62920)) +## 14.0.11 (2021-09-23) + +### Fixed (1 change) + +- [Fix Elastic::MigrationWorker current_migration](gitlab-org/gitlab@0b72aace30bff0fda7a114862ec1e389ddaa5ead) ([merge request](gitlab-org/gitlab!71101)) **GitLab Enterprise Edition** + ## 14.0.10 (2021-09-02) No changes. @@ -2561,6 +3044,10 @@ No changes. - [Add missing metrics information](gitlab-org/gitlab@89cd7fe3b95323e635b2d73e08549b2e6153dc4d) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61772/edit)) - [Track usage of the resolve UI](gitlab-org/gitlab@35c8e30fce288cecefcf2f7c0077d4608e696519) ([merge request](gitlab-org/gitlab!61654)) +## 13.12.12 (2021-09-21) + +No changes. + ## 13.12.11 (2021-09-02) No changes. diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index b10f9ae296..afc1b70fc5 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -14.3.4 \ No newline at end of file +14.4.2 \ No newline at end of file diff --git a/GITLAB_ELASTICSEARCH_INDEXER_VERSION b/GITLAB_ELASTICSEARCH_INDEXER_VERSION index fb2c0766b7..7524906967 100644 --- a/GITLAB_ELASTICSEARCH_INDEXER_VERSION +++ b/GITLAB_ELASTICSEARCH_INDEXER_VERSION @@ -1 +1 @@ -2.13.0 +2.16.0 diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index 839845e0b6..72f51351fc 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -14.3.3 +14.4.0 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index 372cf402c7..0a3db35b24 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -1.44.0 +1.46.0 diff --git a/Gemfile b/Gemfile index 39e6156496..1e6648df48 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' -gem 'rails', '~> 6.1.3.2' +gem 'rails', '~> 6.1.4.1' gem 'bootsnap', '~> 1.4.6' @@ -92,7 +92,7 @@ gem 'net-ldap', '~> 0.16.3' # API gem 'grape', '~> 1.5.2' -gem 'grape-entity', '~> 0.9.0' +gem 'grape-entity', '~> 0.10.0' gem 'rack-cors', '~> 1.0.6', require: 'rack/cors' # GraphQL API @@ -129,7 +129,7 @@ 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.1.1', require: false +gem 'gitlab-fog-azure-rm', '~> 1.2.0', require: false # for Google storage gem 'google-api-client', '~> 0.33' @@ -154,7 +154,7 @@ gem 'html-pipeline', '~> 2.13.2' gem 'deckar01-task_list', '2.3.1' gem 'gitlab-markup', '~> 1.7.1' gem 'github-markup', '~> 1.7.0', require: 'github/markup' -gem 'commonmarker', '~> 0.21' +gem 'commonmarker', '~> 0.23.2' gem 'kramdown', '~> 2.3.1' gem 'RedCloth', '~> 4.3.2' gem 'rdoc', '~> 6.3.2' @@ -165,7 +165,7 @@ gem 'asciidoctor', '~> 2.0.10' gem 'asciidoctor-include-ext', '~> 0.3.1', require: false gem 'asciidoctor-plantuml', '~> 0.0.12' gem 'asciidoctor-kroki', '~> 0.5.0', require: false -gem 'rouge', '~> 3.26.0' +gem 'rouge', '~> 3.26.1' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' gem 'nokogiri', '~> 1.11.4' @@ -195,10 +195,10 @@ gem 'state_machines-activerecord', '~> 0.8.0' gem 'acts-as-taggable-on', '~> 7.0' # Background jobs -gem 'sidekiq', '~> 5.2.7' +gem 'sidekiq', '~> 6.2.2' gem 'sidekiq-cron', '~> 1.0' gem 'redis-namespace', '~> 1.8.1' -gem 'gitlab-sidekiq-fetcher', '0.5.6', require: 'sidekiq-reliable-fetch' +gem 'gitlab-sidekiq-fetcher', '0.8.0', require: 'sidekiq-reliable-fetch' # Cron Parser gem 'fugit', '~> 1.2.1' @@ -229,7 +229,7 @@ gem 'js_regex', '~> 3.7' gem 'device_detector' # Redis -gem 'redis', '~> 4.1.4' +gem 'redis', '~> 4.4.0' gem 'connection_pool', '~> 2.0' # Redis session store @@ -341,7 +341,7 @@ group :development do gem 'lefthook', '~> 0.7.0', require: false gem 'solargraph', '~> 0.43', require: false - gem 'letter_opener_web', '~> 1.4.0' + gem 'letter_opener_web', '~> 1.4.1' # Better errors handler gem 'better_errors', '~> 2.9.0' @@ -355,7 +355,7 @@ group :development, :test do gem 'bullet', '~> 6.1.3' gem 'pry-byebug' gem 'pry-rails', '~> 0.3.9' - gem 'pry-shell', '~> 0.4.0' + gem 'pry-shell', '~> 0.5.0' gem 'awesome_print', require: false @@ -424,7 +424,7 @@ group :test do gem 'webmock', '~> 3.9.1' gem 'rails-controller-testing' gem 'concurrent-ruby', '~> 1.1' - gem 'test-prof', '~> 0.12.0' + gem 'test-prof', '~> 1.0.7' gem 'rspec_junit_formatter' gem 'guard-rspec' @@ -474,7 +474,7 @@ end gem 'spamcheck', '~> 0.1.0' # Gitaly GRPC protocol definitions -gem 'gitaly', '~> 14.3.0.pre.rc1' +gem 'gitaly', '~> 14.3.0.pre.rc2' # KAS GRPC protocol definitions gem 'kas-grpc', '~> 0.0.2' diff --git a/Gemfile.lock b/Gemfile.lock index d62e948e63..a6b7f598ec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,63 +11,63 @@ GEM RedCloth (4.3.2) acme-client (2.0.6) faraday (>= 0.17, < 2.0.0) - actioncable (6.1.3.2) - actionpack (= 6.1.3.2) - activesupport (= 6.1.3.2) + actioncable (6.1.4.1) + actionpack (= 6.1.4.1) + activesupport (= 6.1.4.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.3.2) - actionpack (= 6.1.3.2) - activejob (= 6.1.3.2) - activerecord (= 6.1.3.2) - activestorage (= 6.1.3.2) - activesupport (= 6.1.3.2) + actionmailbox (6.1.4.1) + actionpack (= 6.1.4.1) + activejob (= 6.1.4.1) + activerecord (= 6.1.4.1) + activestorage (= 6.1.4.1) + activesupport (= 6.1.4.1) mail (>= 2.7.1) - actionmailer (6.1.3.2) - actionpack (= 6.1.3.2) - actionview (= 6.1.3.2) - activejob (= 6.1.3.2) - activesupport (= 6.1.3.2) + actionmailer (6.1.4.1) + actionpack (= 6.1.4.1) + actionview (= 6.1.4.1) + activejob (= 6.1.4.1) + activesupport (= 6.1.4.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.3.2) - actionview (= 6.1.3.2) - activesupport (= 6.1.3.2) + actionpack (6.1.4.1) + actionview (= 6.1.4.1) + activesupport (= 6.1.4.1) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.3.2) - actionpack (= 6.1.3.2) - activerecord (= 6.1.3.2) - activestorage (= 6.1.3.2) - activesupport (= 6.1.3.2) + actiontext (6.1.4.1) + actionpack (= 6.1.4.1) + activerecord (= 6.1.4.1) + activestorage (= 6.1.4.1) + activesupport (= 6.1.4.1) nokogiri (>= 1.8.5) - actionview (6.1.3.2) - activesupport (= 6.1.3.2) + actionview (6.1.4.1) + activesupport (= 6.1.4.1) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (6.1.3.2) - activesupport (= 6.1.3.2) + activejob (6.1.4.1) + activesupport (= 6.1.4.1) globalid (>= 0.3.6) - activemodel (6.1.3.2) - activesupport (= 6.1.3.2) - activerecord (6.1.3.2) - activemodel (= 6.1.3.2) - activesupport (= 6.1.3.2) + activemodel (6.1.4.1) + activesupport (= 6.1.4.1) + activerecord (6.1.4.1) + activemodel (= 6.1.4.1) + activesupport (= 6.1.4.1) activerecord-explain-analyze (0.1.0) activerecord (>= 4) pg - activestorage (6.1.3.2) - actionpack (= 6.1.3.2) - activejob (= 6.1.3.2) - activerecord (= 6.1.3.2) - activesupport (= 6.1.3.2) + activestorage (6.1.4.1) + actionpack (= 6.1.4.1) + activejob (= 6.1.4.1) + activerecord (= 6.1.4.1) + activesupport (= 6.1.4.1) marcel (~> 1.0.0) - mini_mime (~> 1.0.2) - activesupport (6.1.3.2) + mini_mime (>= 1.1.0) + activesupport (6.1.4.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -200,8 +200,7 @@ GEM open4 (~> 1.3) coderay (1.1.3) colored2 (3.1.2) - commonmarker (0.21.0) - ruby-enum (~> 0.5) + commonmarker (0.23.2) concurrent-ruby (1.1.9) connection_pool (2.2.2) contracts (0.11.0) @@ -453,7 +452,7 @@ GEM rails (>= 3.2.0) git (1.7.0) rchardet (~> 1.8) - gitaly (14.3.0.pre.rc1) + gitaly (14.3.0.pre.rc2) grpc (~> 1.0) github-markup (1.7.0) gitlab (4.16.1) @@ -468,7 +467,7 @@ GEM activesupport (>= 3.0) request_store (>= 1.0) scientist (~> 1.6, >= 1.6.0) - gitlab-fog-azure-rm (1.1.1) + gitlab-fog-azure-rm (1.2.0) azure-storage-blob (~> 2.0) azure-storage-common (~> 2.0) fog-core (= 2.1.0) @@ -491,8 +490,8 @@ GEM addressable (~> 2.7) omniauth (~> 1.9) openid_connect (~> 1.2) - gitlab-sidekiq-fetcher (0.5.6) - sidekiq (~> 5) + gitlab-sidekiq-fetcher (0.8.0) + sidekiq (~> 6.1) gitlab-styles (6.3.0) rubocop (~> 0.91, >= 0.91.1) rubocop-gitlab-security (~> 0.1.1) @@ -506,8 +505,8 @@ GEM omniauth (~> 1.3) pyu-ruby-sasl (>= 0.0.3.3, < 0.1) rubyntlm (~> 0.5) - globalid (0.4.2) - activesupport (>= 4.2.0) + globalid (0.5.2) + activesupport (>= 5.0) gon (6.4.0) actionpack (>= 3.0.20) i18n (>= 0.7) @@ -543,7 +542,7 @@ GEM mustermann-grape (~> 1.0.0) rack (>= 1.3.0) rack-accept - grape-entity (0.9.0) + grape-entity (0.10.0) activesupport (>= 3.0.0) multi_json (>= 1.3.2) grape-path-helpers (1.7.0) @@ -700,7 +699,7 @@ GEM lefthook (0.7.5) letter_opener (1.7.0) launchy (~> 2.2) - letter_opener_web (1.4.0) + letter_opener_web (1.4.1) actionmailer (>= 3.2) letter_opener (~> 1.0) railties (>= 3.2) @@ -747,7 +746,7 @@ GEM mime-types-data (3.2020.0512) mini_histogram (0.3.1) mini_magick (4.10.1) - mini_mime (1.0.2) + mini_mime (1.1.1) mini_portile2 (2.5.3) minitest (5.11.3) mixlib-cli (2.1.8) @@ -784,7 +783,7 @@ GEM net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.0.0) netrc (0.11.0) - nio4r (2.5.4) + nio4r (2.5.8) no_proxy_fix (0.1.2) nokogiri (1.11.7) mini_portile2 (~> 2.5.0) @@ -908,7 +907,7 @@ GEM peek (1.1.0) railties (>= 4.0.0) pg (1.2.3) - pg_query (2.1.0) + pg_query (2.1.1) google-protobuf (>= 3.17.1) plist (3.6.0) png_quantizator (0.2.1) @@ -934,7 +933,7 @@ GEM pry (~> 0.13.0) pry-rails (0.3.9) pry (>= 0.10.4) - pry-shell (0.4.1) + pry-shell (0.5.0) pry (~> 0.13.0) tty-markdown tty-prompt @@ -960,27 +959,25 @@ GEM httpclient json-jwt (>= 1.11.0) rack (>= 2.1.0) - rack-protection (2.0.5) - rack rack-proxy (0.6.0) rack rack-test (1.1.0) rack (>= 1.0, < 3) rack-timeout (0.5.2) - rails (6.1.3.2) - actioncable (= 6.1.3.2) - actionmailbox (= 6.1.3.2) - actionmailer (= 6.1.3.2) - actionpack (= 6.1.3.2) - actiontext (= 6.1.3.2) - actionview (= 6.1.3.2) - activejob (= 6.1.3.2) - activemodel (= 6.1.3.2) - activerecord (= 6.1.3.2) - activestorage (= 6.1.3.2) - activesupport (= 6.1.3.2) + rails (6.1.4.1) + actioncable (= 6.1.4.1) + actionmailbox (= 6.1.4.1) + actionmailer (= 6.1.4.1) + actionpack (= 6.1.4.1) + actiontext (= 6.1.4.1) + actionview (= 6.1.4.1) + activejob (= 6.1.4.1) + activemodel (= 6.1.4.1) + activerecord (= 6.1.4.1) + activestorage (= 6.1.4.1) + activesupport (= 6.1.4.1) bundler (>= 1.15.0) - railties (= 6.1.3.2) + railties (= 6.1.4.1) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -994,11 +991,11 @@ GEM rails-i18n (6.0.0) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 7) - railties (6.1.3.2) - actionpack (= 6.1.3.2) - activesupport (= 6.1.3.2) + railties (6.1.4.1) + actionpack (= 6.1.4.1) + activesupport (= 6.1.4.1) method_source - rake (>= 0.8.7) + rake (>= 0.13) thor (~> 1.0) rainbow (3.0.0) rake (13.0.6) @@ -1018,7 +1015,7 @@ GEM recaptcha (4.13.1) json recursive-open-struct (1.1.3) - redis (4.1.4) + redis (4.4.0) redis-actionpack (5.2.0) actionpack (>= 5, < 7) redis-rack (>= 2.1.0, < 3) @@ -1052,7 +1049,7 @@ GEM rexml (3.2.5) rinku (2.0.0) rotp (6.2.0) - rouge (3.26.0) + rouge (3.26.1) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) @@ -1116,8 +1113,6 @@ GEM rubocop-rspec (1.44.1) rubocop (~> 0.87) rubocop-ast (>= 0.7.1) - ruby-enum (0.8.0) - i18n ruby-fogbugz (0.2.1) crack (~> 0.4) ruby-magic (0.4.0) @@ -1175,11 +1170,10 @@ GEM shellany (0.0.1) shoulda-matchers (4.0.1) activesupport (>= 4.2.0) - sidekiq (5.2.9) - connection_pool (~> 2.2, >= 2.2.2) + sidekiq (6.2.2) + connection_pool (>= 2.2.2) rack (~> 2.0) - rack-protection (>= 1.5.0) - redis (>= 3.3.5, < 4.2) + redis (>= 4.2.0) sidekiq-cron (1.0.4) fugit (~> 1.1) sidekiq (>= 4.2.1) @@ -1257,7 +1251,7 @@ GEM unicode-display_width (~> 1.1, >= 1.1.1) terser (1.0.2) execjs (>= 0.3.0, < 3) - test-prof (0.12.0) + test-prof (1.0.7) test_file_finder (0.1.4) faraday (~> 1.0) text (1.3.1) @@ -1357,7 +1351,7 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.6.1) - websocket-driver (0.7.3) + websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) wikicloth (0.8.1) @@ -1414,7 +1408,7 @@ DEPENDENCIES capybara-screenshot (~> 1.0.22) carrierwave (~> 1.3) charlock_holmes (~> 0.7.7) - commonmarker (~> 0.21) + commonmarker (~> 0.23.2) concurrent-ruby (~> 1.1) connection_pool (~> 2.0) countries (~> 3.0) @@ -1464,19 +1458,19 @@ DEPENDENCIES gettext (~> 3.3) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly (~> 14.3.0.pre.rc1) + gitaly (~> 14.3.0.pre.rc2) github-markup (~> 1.7.0) gitlab-chronic (~> 0.10.5) gitlab-dangerfiles (~> 2.3.0) gitlab-experiment (~> 0.6.4) - gitlab-fog-azure-rm (~> 1.1.1) + gitlab-fog-azure-rm (~> 1.2.0) gitlab-labkit (~> 0.21.1) gitlab-license (~> 2.0) gitlab-mail_room (~> 0.0.9) gitlab-markup (~> 1.7.1) gitlab-net-dns (~> 0.9.1) gitlab-omniauth-openid-connect (~> 0.8.0) - gitlab-sidekiq-fetcher (= 0.5.6) + gitlab-sidekiq-fetcher (= 0.8.0) gitlab-styles (~> 6.3.0) gitlab_chronic_duration (~> 0.10.6.2) gitlab_omniauth-ldap (~> 2.1.1) @@ -1485,7 +1479,7 @@ DEPENDENCIES google-protobuf (~> 3.17.1) gpgme (~> 2.0.19) grape (~> 1.5.2) - grape-entity (~> 0.9.0) + grape-entity (~> 0.10.0) grape-path-helpers (~> 1.7.0) grape_logging (~> 1.7) graphiql-rails (~> 1.4.10) @@ -1518,7 +1512,7 @@ DEPENDENCIES kramdown (~> 2.3.1) kubeclient (~> 4.9.2) lefthook (~> 0.7.0) - letter_opener_web (~> 1.4.0) + letter_opener_web (~> 1.4.1) license_finder (~> 6.0) licensee (~> 9.14.1) lockbox (~> 0.6.2) @@ -1570,7 +1564,7 @@ DEPENDENCIES prometheus-client-mmap (~> 0.15.0) pry-byebug pry-rails (~> 0.3.9) - pry-shell (~> 0.4.0) + pry-shell (~> 0.5.0) puma (~> 5.3.1) puma_worker_killer (~> 0.3.1) rack (~> 2.2.3) @@ -1579,7 +1573,7 @@ DEPENDENCIES rack-oauth2 (~> 1.16.0) rack-proxy (~> 0.6.0) rack-timeout (~> 0.5.1) - rails (~> 6.1.3.2) + rails (~> 6.1.4.1) rails-controller-testing rails-i18n (~> 6.0) rainbow (~> 3.0) @@ -1588,14 +1582,14 @@ DEPENDENCIES rdoc (~> 6.3.2) re2 (~> 1.2.0) recaptcha (~> 4.11) - redis (~> 4.1.4) + redis (~> 4.4.0) redis-actionpack (~> 5.2.0) redis-namespace (~> 1.8.1) request_store (~> 1.5) responders (~> 3.0) retriable (~> 3.1.2) rexml (~> 3.2.5) - rouge (~> 3.26.0) + rouge (~> 3.26.1) rqrcode-rails3 (~> 0.1.7) rspec-parameterized rspec-rails (~> 5.0.1) @@ -1617,7 +1611,7 @@ DEPENDENCIES sentry-raven (~> 3.1) settingslogic (~> 2.0.9) shoulda-matchers (~> 4.0.1) - sidekiq (~> 5.2.7) + sidekiq (~> 6.2.2) sidekiq-cron (~> 1.0) simple_po_parser (~> 1.1.2) simplecov (~> 0.18.5) @@ -1634,7 +1628,7 @@ DEPENDENCIES state_machines-activerecord (~> 0.8.0) sys-filesystem (~> 1.1.6) terser (= 1.0.2) - test-prof (~> 0.12.0) + test-prof (~> 1.0.7) test_file_finder (~> 0.1.3) thin (~> 1.8.0) thrift (>= 0.14.0) diff --git a/README.md b/README.md index ee7eef9aa2..f5ec329cd9 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ GitLab is an open source project and we are very happy to accept community contr ## Install a development environment To work on GitLab itself, we recommend setting up your development environment with [the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit). -If you do not use the GitLab Development Kit you need to install and setup all the dependencies yourself, this is a lot of work and error prone. +If you do not use the GitLab Development Kit you need to install and configure all the dependencies yourself, this is a lot of work and error prone. One small thing you also have to do when installing it yourself is to copy the example development Puma configuration file: cp config/puma.rb.example.development config/puma.rb @@ -81,7 +81,7 @@ GitLab is a Ruby on Rails application that runs on the following software: - Ubuntu/Debian/CentOS/RHEL/OpenSUSE - Ruby (MRI) 2.7.4 -- Git 2.31+ +- Git 2.33+ - Redis 5.0+ - PostgreSQL 12+ diff --git a/VERSION b/VERSION index b10f9ae296..afc1b70fc5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -14.3.4 \ No newline at end of file +14.4.2 \ No newline at end of file diff --git a/app/assets/images/logos/zentao.svg b/app/assets/images/logos/zentao.svg new file mode 100644 index 0000000000..d2115b72ae --- /dev/null +++ b/app/assets/images/logos/zentao.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/app/assets/javascripts/access_tokens/index.js b/app/assets/javascripts/access_tokens/index.js index 7f5f0403de..2cd3a8f12e 100644 --- a/app/assets/javascripts/access_tokens/index.js +++ b/app/assets/javascripts/access_tokens/index.js @@ -49,7 +49,7 @@ export const initProjectsField = () => { { default: createDefaultClient }, ]) => { const apolloProvider = new VueApollo({ - defaultClient: createDefaultClient(), + defaultClient: createDefaultClient({}, { assumeImmutableResults: true }), }); Vue.use(VueApollo); diff --git a/app/assets/javascripts/admin/users/components/actions/delete.vue b/app/assets/javascripts/admin/users/components/actions/delete.vue index a0f4a4bf38..e6dde5898e 100644 --- a/app/assets/javascripts/admin/users/components/actions/delete.vue +++ b/app/assets/javascripts/admin/users/components/actions/delete.vue @@ -14,7 +14,7 @@ export default { type: Object, required: true, }, - oncallSchedules: { + userDeletionObstacles: { type: Array, required: false, default: () => [], @@ -29,7 +29,7 @@ export default { :username="username" :paths="paths" :delete-path="paths.delete" - :oncall-schedules="oncallSchedules" + :user-deletion-obstacles="userDeletionObstacles" > diff --git a/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue b/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue index 02fd3efafa..bd920a9151 100644 --- a/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue +++ b/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue @@ -14,7 +14,7 @@ export default { type: Object, required: true, }, - oncallSchedules: { + userDeletionObstacles: { type: Array, required: false, default: () => [], @@ -29,7 +29,7 @@ export default { :username="username" :paths="paths" :delete-path="paths.deleteWithContributions" - :oncall-schedules="oncallSchedules" + :user-deletion-obstacles="userDeletionObstacles" > diff --git a/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue b/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue index a1589c9d46..c9f29b55db 100644 --- a/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue +++ b/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue @@ -22,7 +22,7 @@ export default { type: String, required: true, }, - oncallSchedules: { + userDeletionObstacles: { type: Array, required: true, }, @@ -34,7 +34,7 @@ export default { 'data-delete-user-url': this.deletePath, 'data-gl-modal-action': this.modalType, 'data-username': this.username, - 'data-oncall-schedules': JSON.stringify(this.oncallSchedules), + 'data-user-deletion-obstacles': JSON.stringify(this.userDeletionObstacles), }; }, }, diff --git a/app/assets/javascripts/admin/users/components/modals/delete_user_modal.vue b/app/assets/javascripts/admin/users/components/modals/delete_user_modal.vue index 413163c853..ed90343777 100644 --- a/app/assets/javascripts/admin/users/components/modals/delete_user_modal.vue +++ b/app/assets/javascripts/admin/users/components/modals/delete_user_modal.vue @@ -2,7 +2,7 @@ import { GlModal, GlButton, GlFormInput, GlSprintf } from '@gitlab/ui'; import * as Sentry from '@sentry/browser'; import { s__, sprintf } from '~/locale'; -import OncallSchedulesList from '~/vue_shared/components/oncall_schedules_list.vue'; +import UserDeletionObstaclesList from '~/vue_shared/components/user_deletion_obstacles/user_deletion_obstacles_list.vue'; export default { components: { @@ -10,7 +10,7 @@ export default { GlButton, GlFormInput, GlSprintf, - OncallSchedulesList, + UserDeletionObstaclesList, }, props: { title: { @@ -45,7 +45,7 @@ export default { type: String, required: true, }, - oncallSchedules: { + userDeletionObstacles: { type: String, required: false, default: '[]', @@ -66,9 +66,9 @@ export default { canSubmit() { return this.enteredUsername === this.username; }, - schedules() { + obstacles() { try { - return JSON.parse(this.oncallSchedules); + return JSON.parse(this.userDeletionObstacles); } catch (e) { Sentry.captureException(e); } @@ -112,12 +112,16 @@ export default {

- +

diff --git a/app/assets/javascripts/admin/users/components/user_actions.vue b/app/assets/javascripts/admin/users/components/user_actions.vue index c076e0bedf..4f4e294734 100644 --- a/app/assets/javascripts/admin/users/components/user_actions.vue +++ b/app/assets/javascripts/admin/users/components/user_actions.vue @@ -9,6 +9,7 @@ import { } from '@gitlab/ui'; import { convertArrayToCamelCase } from '~/lib/utils/common_utils'; import { capitalizeFirstCharacter } from '~/lib/utils/text_utility'; +import { parseUserDeletionObstacles } from '~/vue_shared/components/user_deletion_obstacles/utils'; import { I18N_USER_ACTIONS } from '../constants'; import { generateUserPaths } from '../utils'; import Actions from './actions'; @@ -72,6 +73,9 @@ export default { href: this.userPaths.edit, }; }, + obstaclesForUserDeletion() { + return parseUserDeletionObstacles(this.user); + }, }, methods: { isLdapAction(action) { @@ -141,7 +145,7 @@ export default { :key="action" :paths="userPaths" :username="user.name" - :oncall-schedules="user.oncallSchedules" + :user-deletion-obstacles="obstaclesForUserDeletion" :data-testid="`delete-${action}`" > {{ $options.i18n[action] }} diff --git a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue index a490111e13..0bdb45d35c 100644 --- a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue +++ b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue @@ -15,6 +15,8 @@ import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants'; import { n__, s__, __ } from '~/locale'; import getProjects from '../graphql/projects.query.graphql'; +const sortByProjectName = (projects = []) => projects.sort((a, b) => a.name.localeCompare(b.name)); + export default { name: 'ProjectsDropdownFilter', components: { @@ -88,6 +90,9 @@ export default { selectedProjectIds() { return this.selectedProjects.map((p) => p.id); }, + hasSelectedProjects() { + return Boolean(this.selectedProjects.length); + }, availableProjects() { return filterBySearchTerm(this.projects, this.searchTerm); }, @@ -95,6 +100,12 @@ export default { const { loading, availableProjects } = this; return !loading && !availableProjects.length; }, + selectedItems() { + return sortByProjectName(this.selectedProjects); + }, + unselectedItems() { + return this.availableProjects.filter(({ id }) => !this.selectedProjectIds.includes(id)); + }, }, watch: { searchTerm() { @@ -105,44 +116,53 @@ export default { this.search(); }, methods: { + handleUpdatedSelectedProjects() { + this.$emit('selected', this.selectedProjects); + }, search: debounce(function debouncedSearch() { this.fetchData(); }, DEFAULT_DEBOUNCE_AND_THROTTLE_MS), - getSelectedProjects(selectedProject, isMarking) { - return isMarking + getSelectedProjects(selectedProject, isSelected) { + return isSelected ? this.selectedProjects.concat([selectedProject]) : this.selectedProjects.filter((project) => project.id !== selectedProject.id); }, singleSelectedProject(selectedObj, isMarking) { return isMarking ? [selectedObj] : []; }, - setSelectedProjects(selectedObj, isMarking) { + setSelectedProjects(project) { this.selectedProjects = this.multiSelect - ? this.getSelectedProjects(selectedObj, isMarking) - : this.singleSelectedProject(selectedObj, isMarking); + ? this.getSelectedProjects(project, !this.isProjectSelected(project)) + : this.singleSelectedProject(project, !this.isProjectSelected(project)); }, - onClick({ project, isSelected }) { - this.setSelectedProjects(project, !isSelected); - this.$emit('selected', this.selectedProjects); + onClick(project) { + this.setSelectedProjects(project); + this.handleUpdatedSelectedProjects(); }, - onMultiSelectClick({ project, isSelected }) { - this.setSelectedProjects(project, !isSelected); + onMultiSelectClick(project) { + this.setSelectedProjects(project); this.isDirty = true; }, - onSelected(ev) { + onSelected(project) { if (this.multiSelect) { - this.onMultiSelectClick(ev); + this.onMultiSelectClick(project); } else { - this.onClick(ev); + this.onClick(project); } }, onHide() { if (this.multiSelect && this.isDirty) { - this.$emit('selected', this.selectedProjects); + this.handleUpdatedSelectedProjects(); } this.searchTerm = ''; this.isDirty = false; }, + onClearAll() { + if (this.hasSelectedProjects) { + this.isDirty = true; + } + this.selectedProjects = []; + }, fetchData() { this.loading = true; @@ -168,8 +188,8 @@ export default { this.projects = nodes; }); }, - isProjectSelected(id) { - return this.selectedProjects ? this.selectedProjectIds.includes(id) : false; + isProjectSelected(project) { + return this.selectedProjectIds.includes(project.id); }, getEntityId(project) { return getIdFromGraphQLId(project.id); @@ -182,6 +202,10 @@ export default { ref="projectsDropdown" class="dropdown dropdown-projects" toggle-class="gl-shadow-none" + :show-clear-all="hasSelectedProjects" + show-highlighted-items-title + highlighted-items-title-class="gl-p-3" + @clear-all.stop="onClearAll" @hide="onHide" > +
{ @@ -7,3 +8,64 @@ export const filterBySearchTerm = (data = [], searchTerm = '', filterByKey = 'na }; export const toYmd = (date) => dateFormat(date, dateFormats.isoDate); + +/** + * Takes a url and extracts query parameters used for the shared + * filter bar + * + * @param {string} url The URL to extract query parameters from + * @returns {Object} + */ +export const extractFilterQueryParameters = (url = '') => { + const { + source_branch_name = null, + target_branch_name = null, + author_username = null, + milestone_title = null, + assignee_username = [], + label_name = [], + } = urlQueryToFilter(url); + + return { + selectedSourceBranch: source_branch_name, + selectedTargetBranch: target_branch_name, + selectedAuthor: author_username, + selectedMilestone: milestone_title, + selectedAssigneeList: assignee_username, + selectedLabelList: label_name, + }; +}; + +/** + * Takes a url and extracts sorting and pagination query parameters into an object + * + * @param {string} url The URL to extract query parameters from + * @returns {Object} + */ +export const extractPaginationQueryParameters = (url = '') => { + const { sort, direction, page } = urlQueryToFilter(url); + return { + sort: sort?.value || null, + direction: direction?.value || null, + page: page?.value || null, + }; +}; + +export const getDataZoomOption = ({ + totalItems = 0, + maxItemsPerPage = 40, + dataZoom = [{ type: 'slider', bottom: 10, start: 0 }], +}) => { + if (totalItems <= maxItemsPerPage) { + return {}; + } + + const intervalEnd = Math.ceil((maxItemsPerPage / totalItems) * 100); + + return dataZoom.map((item) => { + return { + ...item, + end: intervalEnd, + }; + }); +}; diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 01e463c196..adf3e122a6 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -499,10 +499,10 @@ const Api = { return axios.put(url, params); }, - applySuggestionBatch(ids) { + applySuggestionBatch(ids, message) { const url = Api.buildUrl(Api.applySuggestionBatchPath); - return axios.put(url, { ids }); + return axios.put(url, { ids, commit_message: message }); }, commitPipelines(projectId, sha) { diff --git a/app/assets/javascripts/api/bulk_imports_api.js b/app/assets/javascripts/api/bulk_imports_api.js new file mode 100644 index 0000000000..d636cfdff0 --- /dev/null +++ b/app/assets/javascripts/api/bulk_imports_api.js @@ -0,0 +1,7 @@ +import { buildApiUrl } from '~/api/api_utils'; +import axios from '~/lib/utils/axios_utils'; + +const BULK_IMPORT_ENTITIES_PATH = '/api/:version/bulk_imports/entities'; + +export const getBulkImportsHistory = (params) => + axios.get(buildApiUrl(BULK_IMPORT_ENTITIES_PATH), { params }); diff --git a/app/assets/javascripts/artifacts_settings/index.js b/app/assets/javascripts/artifacts_settings/index.js index 531b42bc18..5c9f1c3129 100644 --- a/app/assets/javascripts/artifacts_settings/index.js +++ b/app/assets/javascripts/artifacts_settings/index.js @@ -6,7 +6,7 @@ import createDefaultClient from '~/lib/graphql'; Vue.use(VueApollo); const apolloProvider = new VueApollo({ - defaultClient: createDefaultClient(), + defaultClient: createDefaultClient({}, { assumeImmutableResults: true }), }); export default (containerId = 'js-artifacts-settings-app') => { diff --git a/app/assets/javascripts/behaviors/markdown/nodes/emoji.js b/app/assets/javascripts/behaviors/markdown/nodes/emoji.js index 367a06ad3c..9d0890aa1b 100644 --- a/app/assets/javascripts/behaviors/markdown/nodes/emoji.js +++ b/app/assets/javascripts/behaviors/markdown/nodes/emoji.js @@ -26,6 +26,18 @@ export default class Emoji extends Node { moji: el.textContent, }), }, + { + tag: 'img.emoji', + getAttrs: (el) => { + const name = el.getAttribute('title').replace(/^:|:$/g, ''); + + return { + name, + title: name, + moji: name, + }; + }, + }, ], toDOM: (node) => [ 'gl-emoji', diff --git a/app/assets/javascripts/behaviors/markdown/nodes/image.js b/app/assets/javascripts/behaviors/markdown/nodes/image.js index ade5839d10..4cc28c4573 100644 --- a/app/assets/javascripts/behaviors/markdown/nodes/image.js +++ b/app/assets/javascripts/behaviors/markdown/nodes/image.js @@ -29,7 +29,7 @@ export default class Image extends BaseImage { }, // Matches HTML generated by Banzai::Filter::ImageLazyLoadFilter { - tag: 'img[src]', + tag: 'img[src]:not(.emoji)', getAttrs: (el) => { const imageSrc = el.src; const imageUrl = diff --git a/app/assets/javascripts/behaviors/preview_markdown.js b/app/assets/javascripts/behaviors/preview_markdown.js index a1911585f8..a548b28314 100644 --- a/app/assets/javascripts/behaviors/preview_markdown.js +++ b/app/assets/javascripts/behaviors/preview_markdown.js @@ -81,7 +81,7 @@ MarkdownPreview.prototype.fetchMarkdownPreview = function (text, url, success) { }) .catch(() => createFlash({ - message: __('An error occurred while fetching markdown preview'), + message: __('An error occurred while fetching Markdown preview'), }), ); }; diff --git a/app/assets/javascripts/behaviors/requires_input.js b/app/assets/javascripts/behaviors/requires_input.js index b1227fb353..5990503525 100644 --- a/app/assets/javascripts/behaviors/requires_input.js +++ b/app/assets/javascripts/behaviors/requires_input.js @@ -38,23 +38,9 @@ $.fn.requiresInput = function requiresInput() { $form.on('change input', fieldSelector, requireInput); }; -// Hide or Show the help block when creating a new project -// based on the option selected -function hideOrShowHelpBlock(form) { - const selected = $('.js-select-namespace option:selected'); - if (selected.length && selected.data('optionsParent') === 'groups') { - form.find('.form-text.text-muted').hide(); - } else if (selected.length) { - form.find('.form-text.text-muted').show(); - } -} - $(() => { $('form.js-requires-input').each((i, el) => { const $form = $(el); - $form.requiresInput(); - hideOrShowHelpBlock($form); - $('.select2.js-select-namespace').change(() => hideOrShowHelpBlock($form)); }); }); diff --git a/app/assets/javascripts/behaviors/shortcuts/keybindings.js b/app/assets/javascripts/behaviors/shortcuts/keybindings.js index ebf2ab0381..b27dccabdf 100644 --- a/app/assets/javascripts/behaviors/shortcuts/keybindings.js +++ b/app/assets/javascripts/behaviors/shortcuts/keybindings.js @@ -306,6 +306,12 @@ export const GO_TO_PROJECT_WIKI = { defaultKeys: ['g w'], // eslint-disable-line @gitlab/require-i18n-strings }; +export const GO_TO_PROJECT_WEBIDE = { + id: 'project.goToWebIDE', + description: __('Open in Web IDE'), + defaultKeys: ['.'], +}; + export const PROJECT_FILES_MOVE_SELECTION_UP = { id: 'projectFiles.moveSelectionUp', description: __('Move selection up'), @@ -549,6 +555,7 @@ export const PROJECT_SHORTCUTS_GROUP = { GO_TO_PROJECT_KUBERNETES, GO_TO_PROJECT_SNIPPETS, GO_TO_PROJECT_WIKI, + GO_TO_PROJECT_WEBIDE, ], }; diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js index b188d3b0ec..7d8e4dd490 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js @@ -1,4 +1,5 @@ import Mousetrap from 'mousetrap'; +import { visitUrl, constructWebIDEPath } from '~/lib/utils/url_utility'; import findAndFollowLink from '../../lib/utils/navigation_utility'; import { keysFor, @@ -18,6 +19,7 @@ import { GO_TO_PROJECT_KUBERNETES, GO_TO_PROJECT_ENVIRONMENTS, GO_TO_PROJECT_METRICS, + GO_TO_PROJECT_WEBIDE, NEW_ISSUE, } from './keybindings'; import Shortcuts from './shortcuts'; @@ -58,6 +60,18 @@ export default class ShortcutsNavigation extends Shortcuts { findAndFollowLink('.shortcuts-environments'), ); Mousetrap.bind(keysFor(GO_TO_PROJECT_METRICS), () => findAndFollowLink('.shortcuts-metrics')); + Mousetrap.bind(keysFor(GO_TO_PROJECT_WEBIDE), ShortcutsNavigation.navigateToWebIDE); Mousetrap.bind(keysFor(NEW_ISSUE), () => findAndFollowLink('.shortcuts-new-issue')); } + + static navigateToWebIDE() { + const path = constructWebIDEPath({ + sourceProjectFullPath: window.gl.mrWidgetData?.source_project_full_path, + targetProjectFullPath: window.gl.mrWidgetData?.target_project_full_path, + iid: window.gl.mrWidgetData?.iid, + }); + if (path) { + visitUrl(path); + } + } } diff --git a/app/assets/javascripts/blob/components/blob_content.vue b/app/assets/javascripts/blob/components/blob_content.vue index 1a74675100..213e026c41 100644 --- a/app/assets/javascripts/blob/components/blob_content.vue +++ b/app/assets/javascripts/blob/components/blob_content.vue @@ -41,6 +41,11 @@ export default { type: Object, required: true, }, + hideLineNumbers: { + type: Boolean, + required: false, + default: false, + }, }, computed: { viewer() { @@ -80,6 +85,7 @@ export default { :is-raw-content="isRawContent" :file-name="blob.name" :type="activeViewer.fileType" + :hide-line-numbers="hideLineNumbers" data-qa-selector="file_content" /> diff --git a/app/assets/javascripts/blob/file_template_mediator.js b/app/assets/javascripts/blob/file_template_mediator.js index 136457c115..991f98c89e 100644 --- a/app/assets/javascripts/blob/file_template_mediator.js +++ b/app/assets/javascripts/blob/file_template_mediator.js @@ -247,7 +247,11 @@ export default class FileTemplateMediator { } setFilename(name) { - this.$filenameInput.val(name).trigger('change'); + const input = this.$filenameInput.get(0); + if (name !== undefined && input.value !== name) { + input.value = name; + input.dispatchEvent(new Event('change')); + } } getSelected() { diff --git a/app/assets/javascripts/boards/boards_util.js b/app/assets/javascripts/boards/boards_util.js index d113a1d39d..c10241d00d 100644 --- a/app/assets/javascripts/boards/boards_util.js +++ b/app/assets/javascripts/boards/boards_util.js @@ -43,7 +43,9 @@ export function formatListIssues(listIssues) { let sortedIssues = list.issues.edges.map((issueNode) => ({ ...issueNode.node, })); - sortedIssues = sortBy(sortedIssues, 'relativePosition'); + if (list.listType !== ListType.closed) { + sortedIssues = sortBy(sortedIssues, 'relativePosition'); + } return { ...map, @@ -146,7 +148,8 @@ export function getMoveData(state, params) { } export function moveItemListHelper(item, fromList, toList) { - const updatedItem = item; + const updatedItem = cloneDeep(item); + if ( toList.listType === ListType.label && !updatedItem.labels.find((label) => label.id === toList.label.id) diff --git a/app/assets/javascripts/boards/components/board_add_new_column.vue b/app/assets/javascripts/boards/components/board_add_new_column.vue index 22ad619e76..c5411ec313 100644 --- a/app/assets/javascripts/boards/components/board_add_new_column.vue +++ b/app/assets/javascripts/boards/components/board_add_new_column.vue @@ -52,6 +52,8 @@ export default { }, setSelectedItem(selectedId) { + this.selectedId = selectedId; + const label = this.labels.find(({ id }) => id === selectedId); if (!selectedId || !label) { this.selectedLabel = null; @@ -87,8 +89,8 @@ export default { diff --git a/app/assets/javascripts/cycle_analytics/components/filter_bar.vue b/app/assets/javascripts/cycle_analytics/components/filter_bar.vue index 5140b05e18..016fea354f 100644 --- a/app/assets/javascripts/cycle_analytics/components/filter_bar.vue +++ b/app/assets/javascripts/cycle_analytics/components/filter_bar.vue @@ -79,7 +79,6 @@ export default { title: __('Assignees'), type: 'assignees', token: AuthorToken, - defaultAuthors: [], initialAuthors: this.assigneesData, unique: false, operators: OPERATOR_IS_ONLY, diff --git a/app/assets/javascripts/cycle_analytics/components/stage_table.vue b/app/assets/javascripts/cycle_analytics/components/stage_table.vue index 8a2667a4ab..fc4dfafb80 100644 --- a/app/assets/javascripts/cycle_analytics/components/stage_table.vue +++ b/app/assets/javascripts/cycle_analytics/components/stage_table.vue @@ -194,6 +194,9 @@ export default { > + diff --git a/app/assets/javascripts/jobs/components/log/log.vue b/app/assets/javascripts/jobs/components/log/log.vue index 0134e5dafe..ef95d79b8a 100644 --- a/app/assets/javascripts/jobs/components/log/log.vue +++ b/app/assets/javascripts/jobs/components/log/log.vue @@ -10,10 +10,10 @@ export default { }, computed: { ...mapState([ - 'traceEndpoint', - 'trace', - 'isTraceComplete', - 'isScrolledToBottomBeforeReceivingTrace', + 'jobLogEndpoint', + 'jobLog', + 'isJobLogComplete', + 'isScrolledToBottomBeforeReceivingJobLog', ]), }, updated() { @@ -39,7 +39,7 @@ export default { * In order to scroll the page down after `v-html` has finished, we need to use setTimeout */ handleScrollDown() { - if (this.isScrolledToBottomBeforeReceivingTrace) { + if (this.isScrolledToBottomBeforeReceivingJobLog) { setTimeout(() => { this.scrollBottom(); }, 0); @@ -50,18 +50,18 @@ export default {