From 0ed0e4d6562ea0f4fa91838aba814e9e609cf123 Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Wed, 31 Jul 2019 17:26:46 +0000 Subject: [PATCH] New upstream version 11.11.7+dfsg --- .gitignore | 2 - .gitlab-ci.yml | 1126 +---------- .gitlab/CODEOWNERS.disabled | 4 +- .gitlab/ci/cng.gitlab-ci.yml | 16 + .gitlab/ci/docs.gitlab-ci.yml | 76 + .gitlab/ci/frontend.gitlab-ci.yml | 242 +++ .gitlab/ci/global.gitlab-ci.yml | 62 + .gitlab/ci/pages.gitlab-ci.yml | 27 + .gitlab/ci/qa.gitlab-ci.yml | 17 + .gitlab/ci/rails.gitlab-ci.yml | 292 +++ .gitlab/ci/reports.gitlab-ci.yml | 98 + .gitlab/ci/review.gitlab-ci.yml | 233 +++ .gitlab/ci/setup.gitlab-ci.yml | 43 + .gitlab/ci/test-metadata.gitlab-ci.yml | 82 + .gitlab/issue_templates/Database Reviewer.md | 8 +- .gitlab/issue_templates/Refactoring.md | 41 + .haml-lint.yml | 4 + .rubocop.yml | 7 + .rubocop_todo.yml | 515 +++-- .stylelintrc | 8 +- CHANGELOG.md | 397 +++- Dangerfile | 2 + GITALY_SERVER_VERSION | 2 +- GITLAB_SHELL_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 50 +- Gemfile.lock | 254 ++- VERSION | 2 +- app/assets/javascripts/api.js | 7 +- .../batch_comments/mixins/resolved_status.js | 13 + .../behaviors/copy_to_clipboard.js | 5 +- .../behaviors/markdown/gfm_auto_complete.js | 2 +- .../markdown/nodes/table_of_contents.js | 3 +- .../javascripts/behaviors/preview_markdown.js | 4 +- .../javascripts/behaviors/quick_submit.js | 5 +- .../javascripts/blob/balsamiq_viewer.js | 3 +- .../javascripts/blob/blob_file_dropzone.js | 5 +- app/assets/javascripts/blob/sketch/index.js | 5 +- .../template_selectors/dockerfile_selector.js | 3 +- app/assets/javascripts/blob/viewer/index.js | 14 +- app/assets/javascripts/boards/boards_util.js | 7 + .../boards/components/board_blank_state.vue | 10 +- .../boards/components/board_card.vue | 2 +- .../boards/components/board_delete.js | 3 +- .../boards/components/board_list.vue | 7 +- .../boards/components/board_new_issue.vue | 6 +- .../boards/components/board_sidebar.js | 33 +- .../boards/components/issue_card_inner.vue | 68 +- .../issue_card_inner_scoped_label.vue | 45 + .../boards/components/issue_due_date.vue | 6 +- .../boards/components/issue_time_estimate.vue | 2 +- .../boards/components/modal/empty_state.vue | 4 +- .../boards/components/modal/header.vue | 6 +- .../boards/components/modal/index.vue | 13 +- .../boards/components/modal/list.vue | 4 +- .../boards/filtered_search_boards.js | 4 + app/assets/javascripts/boards/index.js | 28 +- .../boards/mixins/issue_card_inner.js | 5 + app/assets/javascripts/boards/models/issue.js | 18 +- app/assets/javascripts/boards/models/list.js | 20 +- .../javascripts/boards/models/milestone.js | 11 +- .../javascripts/boards/stores/boards_store.js | 22 +- .../boards/stores/boards_store_ee.js | 5 + .../ci_variable_list/ci_variable_list.js | 4 + .../native_form_variable_list.js | 1 + .../javascripts/clusters/clusters_bundle.js | 69 +- .../clusters/components/application_row.vue | 213 ++- .../clusters/components/applications.vue | 149 +- .../uninstall_application_button.vue | 33 + ...install_application_confirmation_modal.vue | 74 + app/assets/javascripts/clusters/constants.js | 27 +- .../mixins/track_uninstall_button_click.js | 5 + .../services/application_state_machine.js | 175 ++ .../clusters/services/clusters_service.js | 4 + .../clusters/stores/clusters_store.js | 108 +- .../cycle_analytics/cycle_analytics_bundle.js | 3 +- .../components/comment_resolve_btn.js | 9 +- .../components/diff_note_avatars.js | 3 +- .../components/jump_to_discussion.js | 5 +- .../diff_notes/components/resolve_btn.js | 12 +- .../components/resolve_discussion_btn.js | 5 +- .../diff_notes/services/resolve.js | 4 +- .../diffs/components/commit_item.vue | 3 +- .../diffs/components/diff_content.vue | 24 +- .../diffs/components/diff_file_header.vue | 2 +- .../components/diff_line_gutter_content.vue | 6 +- .../diffs/components/diff_table_cell.vue | 24 +- .../diffs/components/image_diff_overlay.vue | 9 +- .../components/inline_diff_comment_row.vue | 2 +- .../components/inline_diff_table_row.vue | 15 +- .../components/parallel_diff_comment_row.vue | 4 +- app/assets/javascripts/diffs/constants.js | 7 + .../diffs/mixins/draft_comments.js | 3 + .../javascripts/diffs/mixins/image_diff.js | 13 + app/assets/javascripts/diffs/store/actions.js | 113 +- .../javascripts/diffs/store/mutation_types.js | 5 + .../javascripts/diffs/store/mutations.js | 68 +- app/assets/javascripts/diffs/store/utils.js | 31 +- .../dirty_submit/dirty_submit_form.js | 2 + app/assets/javascripts/due_date_select.js | 4 +- .../components/confirm_rollback_modal.vue | 2 +- .../components/environment_item.vue | 14 +- .../components/environment_rollback.vue | 3 +- .../environment_terminal_button.vue | 2 +- .../javascripts/event_tracking/notes.js | 1 + .../add_extra_tokens_for_merge_requests.js | 4 +- .../filtered_search/dropdown_emoji.js | 3 +- .../filtered_search/dropdown_non_user.js | 3 +- .../filtered_search_manager.js | 5 +- .../filtered_search_token_keys.js | 4 +- .../issuable_filtered_search_token_keys.js | 21 +- .../services/recent_searches_service_error.js | 4 +- .../filtered_search/visual_token_value.js | 3 +- app/assets/javascripts/gfm_auto_complete.js | 15 +- app/assets/javascripts/gl_form.js | 4 +- .../javascripts/groups/transfer_dropdown.js | 3 +- .../commit_sidebar/message_field.vue | 1 + .../ide/components/new_dropdown/upload.vue | 2 + .../ide/components/repo_editor.vue | 8 +- app/assets/javascripts/ide/constants.js | 7 + app/assets/javascripts/ide/ide_router.js | 13 +- app/assets/javascripts/ide/lib/files.js | 4 + app/assets/javascripts/ide/services/index.js | 8 +- app/assets/javascripts/ide/stores/actions.js | 6 +- .../javascripts/ide/stores/actions/file.js | 7 +- .../ide/stores/modules/commit/actions.js | 1 + .../stores/modules/file_templates/actions.js | 27 +- .../stores/modules/file_templates/getters.js | 5 +- .../modules/file_templates/mutations.js | 3 +- .../javascripts/ide/stores/mutations.js | 4 +- app/assets/javascripts/ide/stores/utils.js | 25 +- .../components/import_projects_table.vue | 2 +- .../components/provider_repo_table_row.vue | 2 +- .../import_projects/store/index.js | 2 + .../integrations/integration_settings_form.js | 9 +- .../issuable_bulk_update_actions.js | 3 - app/assets/javascripts/issuable_form.js | 2 +- .../javascripts/issue_show/components/app.vue | 20 +- .../issue_show/components/description.vue | 2 + .../components/fields/description.vue | 1 + .../issue_show/components/fields/title.vue | 2 + .../issue_show/components/form.vue | 47 +- .../issue_show/components/title.vue | 1 + .../javascripts/jobs/components/job_app.vue | 2 +- .../jobs/components/job_container_item.vue | 8 +- .../jobs/components/job_log_controllers.vue | 6 +- .../jobs/components/trigger_block.vue | 2 +- app/assets/javascripts/label_manager.js | 17 +- app/assets/javascripts/labels_select.js | 4 +- app/assets/javascripts/lib/graphql.js | 14 +- .../javascripts/lib/utils/common_utils.js | 12 + .../javascripts/lib/utils/text_utility.js | 14 +- .../javascripts/lib/utils/url_utility.js | 2 + app/assets/javascripts/lib/utils/webpack.js | 4 +- app/assets/javascripts/main.js | 18 + .../merge_conflicts/merge_conflict_store.js | 15 +- .../merge_conflicts/merge_conflicts_bundle.js | 3 +- app/assets/javascripts/merge_request_tabs.js | 2 +- .../javascripts/mirrors/mirror_repos.js | 2 +- app/assets/javascripts/mirrors/ssh_mirror.js | 114 +- .../monitoring/components/dashboard.vue | 202 +- .../javascripts/monitoring/constants.js | 9 + .../monitoring/services/monitoring_service.js | 4 +- .../javascripts/mr_popover/constants.js | 8 +- .../javascripts/namespaces/leave_by_url.js | 22 + app/assets/javascripts/notes.js | 8 +- .../notes/components/comment_form.vue | 16 +- .../notes/components/diff_with_note.vue | 2 +- .../notes/components/discussion_actions.vue | 58 + .../notes/components/discussion_notes.vue | 155 ++ .../notes/components/note_actions.vue | 11 +- .../notes/components/note_body.vue | 16 +- .../notes/components/note_form.vue | 109 +- .../notes/components/noteable_discussion.vue | 211 +- .../notes/components/noteable_note.vue | 22 +- .../notes/components/notes_app.vue | 3 +- app/assets/javascripts/notes/constants.js | 1 + app/assets/javascripts/notes/index.js | 7 + .../javascripts/notes/mixins/autosave.js | 3 +- app/assets/javascripts/notes/mixins/draft.js | 8 + .../notes/mixins/get_discussion.js | 7 + .../javascripts/notes/mixins/note_form.js | 24 + .../javascripts/notes/stores/actions.js | 39 +- .../javascripts/notes/stores/getters.js | 2 + app/assets/javascripts/notes/stores/utils.js | 7 +- .../components/external_dashboard.vue | 57 + .../javascripts/operation_settings/index.js | 26 + .../broadcast_messages/broadcast_message.js | 2 +- .../pages/admin/clusters/destroy/index.js | 5 + .../pages/admin/clusters/edit/index.js | 5 + .../javascripts/pages/admin/clusters/index.js | 21 + .../pages/admin/clusters/index/index.js | 6 + .../pages/admin/clusters/show/index.js | 5 + .../javascripts/pages/groups/show/index.js | 2 + .../javascripts/pages/profiles/keys/index.js | 2 + .../javascripts/pages/profiles/show/index.js | 7 +- .../javascripts/pages/projects/edit/index.js | 17 +- .../pages/projects/issues/index/index.js | 2 +- .../shared/components/timezone_dropdown.js | 42 +- .../settings/operations/show/index.js | 2 + .../projects/shared/permissions/constants.js | 10 +- .../javascripts/pages/projects/show/index.js | 2 + .../javascripts/pages/search/show/search.js | 7 +- .../pages/users/activity_calendar.js | 50 +- .../components/detailed_metric.vue | 34 +- .../components/performance_bar_app.vue | 2 +- .../components/request_selector.vue | 7 +- .../components/graph/action_component.vue | 14 +- .../components/graph/graph_component.vue | 1 + .../graph/stage_column_component.vue | 25 +- .../components/pipeline_triggerer.vue | 35 + .../pipelines/components/pipeline_url.vue | 11 +- .../pipelines/components/pipelines_table.vue | 13 +- .../components/pipelines_table_row.vue | 7 +- app/assets/javascripts/profile/profile.js | 11 + .../javascripts/projects/project_new.js | 41 +- .../protected_branch_access_dropdown.js | 4 +- .../protected_branch_create.js | 3 +- .../protected_branch_edit.js | 3 +- .../protected_tag_access_dropdown.js | 4 +- .../protected_tags/protected_tag_create.js | 3 +- .../protected_tags/protected_tag_edit.js | 7 +- app/assets/javascripts/raven/index.js | 7 +- app/assets/javascripts/raven/raven_config.js | 11 +- .../components/related_merge_requests.vue | 5 +- .../releases/components/release_block.vue | 4 +- app/assets/javascripts/reports/store/utils.js | 6 +- .../javascripts/serverless/components/url.vue | 2 +- .../set_status_modal_wrapper.vue | 6 +- .../components/assignees/assignees.vue | 39 +- .../sidebar/lib/sidebar_move_issue.js | 7 +- .../javascripts/sidebar/sidebar_mediator.js | 3 +- .../javascripts/snippet/snippet_embed.js | 6 +- .../templates/issuable_template_selector.js | 3 +- app/assets/javascripts/terminal/terminal.js | 4 +- app/assets/javascripts/u2f/error.js | 12 +- .../components/mr_widget_pipeline.vue | 4 +- .../components/states/commit_edit.vue | 1 + .../components/states/ready_to_merge.vue | 11 +- .../mixins/ready_to_merge.js | 13 + .../mr_widget_options.vue | 3 +- .../stores/mr_widget_store.js | 2 +- .../vue_shared/components/commit.vue | 6 +- .../content_viewer/content_viewer.vue | 12 +- .../content_viewer/lib/viewer_utils.js | 4 +- .../viewers/image_diff/swipe_viewer.vue | 11 +- .../components/issue/issue_milestone.vue | 16 +- .../issue/related_issuable_item.vue | 28 +- .../markdown/suggestion_diff_header.vue | 20 +- .../markdown/suggestion_diff_row.vue | 4 +- .../components/notes/timeline_entry_item.vue | 6 - .../vue_shared/components/select2_select.vue | 2 +- .../sidebar/labels_select/dropdown_value.vue | 5 +- .../dropdown_value_collapsed.vue | 10 +- .../components/user_popover/user_popover.vue | 21 +- .../vue_shared/directives/tooltip.js | 1 + app/assets/stylesheets/application.scss | 3 + .../components/dashboard_skeleton.scss | 23 +- .../stylesheets/components/popover.scss | 37 + .../components/related_items_list.scss | 446 ++--- app/assets/stylesheets/components/toast.scss | 3 + .../framework/ci_variable_list.scss | 1 + app/assets/stylesheets/framework/common.scss | 35 +- .../stylesheets/framework/dropdowns.scss | 4 + app/assets/stylesheets/framework/forms.scss | 5 + app/assets/stylesheets/framework/header.scss | 46 +- app/assets/stylesheets/framework/icons.scss | 4 +- .../stylesheets/framework/markdown_area.scss | 91 - app/assets/stylesheets/framework/modal.scss | 8 +- app/assets/stylesheets/framework/notes.scss | 2 +- .../stylesheets/framework/page_title.scss | 3 - .../stylesheets/framework/typography.scss | 4 + .../stylesheets/framework/variables.scss | 8 + app/assets/stylesheets/pages/boards.scss | 199 +- app/assets/stylesheets/pages/builds.scss | 47 +- app/assets/stylesheets/pages/commits.scss | 50 +- app/assets/stylesheets/pages/diff.scss | 4 +- .../stylesheets/pages/environments.scss | 338 +--- app/assets/stylesheets/pages/import.scss | 2 - app/assets/stylesheets/pages/issuable.scss | 12 +- app/assets/stylesheets/pages/labels.scss | 16 +- app/assets/stylesheets/pages/members.scss | 3 - .../stylesheets/pages/merge_requests.scss | 10 + app/assets/stylesheets/pages/notes.scss | 13 +- .../stylesheets/pages/pipeline_schedules.scss | 7 +- app/assets/stylesheets/pages/pipelines.scss | 8 +- app/assets/stylesheets/pages/projects.scss | 85 + app/assets/stylesheets/pages/prometheus.scss | 270 +++ app/assets/stylesheets/pages/reports.scss | 5 - app/assets/stylesheets/pages/settings.scss | 2 +- app/assets/stylesheets/pages/stat_graph.scss | 8 - app/assets/stylesheets/pages/status.scss | 4 +- app/assets/stylesheets/pages/todos.scss | 61 +- app/assets/stylesheets/performance_bar.scss | 8 +- app/assets/stylesheets/vendors/atwho.scss | 92 + app/controllers/abuse_reports_controller.rb | 6 +- .../admin/application_controller.rb | 7 +- .../admin/application_settings_controller.rb | 10 + .../admin/clusters/applications_controller.rb | 11 + app/controllers/admin/clusters_controller.rb | 13 + .../admin/impersonation_tokens_controller.rb | 2 +- app/controllers/admin/projects_controller.rb | 2 +- app/controllers/application_controller.rb | 11 +- .../clusters/applications_controller.rb | 13 + .../clusters/clusters_controller.rb | 2 + .../concerns/authenticates_with_two_factor.rb | 7 - .../concerns/enforces_admin_authentication.rb | 19 + app/controllers/concerns/import_url_params.rb | 19 + app/controllers/concerns/issuable_actions.rb | 7 +- .../concerns/issuable_collections.rb | 10 +- app/controllers/concerns/milestone_actions.rb | 8 +- app/controllers/confirmations_controller.rb | 2 +- .../dashboard/projects_controller.rb | 3 +- .../groups/variables_controller.rb | 2 +- app/controllers/help_controller.rb | 35 +- .../import/bitbucket_server_controller.rb | 4 +- app/controllers/import/fogbugz_controller.rb | 8 +- app/controllers/invites_controller.rb | 8 +- app/controllers/jwt_controller.rb | 8 +- .../ldap/omniauth_callbacks_controller.rb | 2 +- .../omniauth_callbacks_controller.rb | 19 +- app/controllers/passwords_controller.rb | 4 +- .../profiles/chat_names_controller.rb | 10 +- .../profiles/passwords_controller.rb | 2 +- .../personal_access_tokens_controller.rb | 8 +- .../profiles/preferences_controller.rb | 10 +- .../profiles/u2f_registrations_controller.rb | 2 +- app/controllers/profiles_controller.rb | 1 + app/controllers/projects/badges_controller.rb | 3 +- .../projects/branches_controller.rb | 14 +- .../environments/prometheus_api_controller.rb | 29 +- .../projects/environments_controller.rb | 44 +- .../projects/git_http_client_controller.rb | 2 +- .../projects/imports_controller.rb | 9 +- app/controllers/projects/issues_controller.rb | 20 +- .../merge_requests/application_controller.rb | 4 +- .../projects/merge_requests_controller.rb | 3 +- .../projects/mirrors_controller.rb | 1 + .../projects/pipeline_schedules_controller.rb | 2 +- .../projects/pipelines_controller.rb | 2 +- .../projects/repositories_controller.rb | 2 +- .../settings/operations_controller.rb | 6 + app/controllers/projects/stages_controller.rb | 25 + .../projects/tags/releases_controller.rb | 10 +- .../projects/triggers_controller.rb | 12 +- .../projects/variables_controller.rb | 2 +- app/controllers/projects/wikis_controller.rb | 4 +- app/controllers/projects_controller.rb | 10 +- app/controllers/registrations_controller.rb | 2 +- app/controllers/root_controller.rb | 2 +- .../sent_notifications_controller.rb | 2 +- app/controllers/sessions_controller.rb | 15 +- app/controllers/uploads_controller.rb | 2 +- app/finders/autocomplete/users_finder.rb | 10 +- app/finders/issuable_finder.rb | 30 +- app/finders/issues_finder.rb | 14 - app/graphql/gitlab_schema.rb | 2 +- app/graphql/resolvers/base_resolver.rb | 19 + .../resolvers/concerns/resolves_pipelines.rb | 10 + app/graphql/resolvers/full_path_resolver.rb | 6 +- app/graphql/resolvers/group_resolver.rb | 13 + app/graphql/resolvers/issues_resolver.rb | 13 + app/graphql/resolvers/project_resolver.rb | 4 + app/graphql/types/base_field.rb | 34 +- app/graphql/types/group_type.rb | 21 + app/graphql/types/issue_type.rb | 6 +- app/graphql/types/namespace_type.rb | 21 + app/graphql/types/permission_types/group.rb | 11 + app/graphql/types/project_type.rb | 3 + app/graphql/types/query_type.rb | 5 + app/helpers/application_settings_helper.rb | 4 + app/helpers/auth_helper.rb | 2 +- app/helpers/boards_helper.rb | 2 +- app/helpers/broadcast_messages_helper.rb | 2 +- app/helpers/ci_status_helper.rb | 8 +- app/helpers/ci_variables_helper.rb | 7 + app/helpers/clusters_helper.rb | 5 - app/helpers/form_helper.rb | 39 +- app/helpers/issuables_helper.rb | 11 +- app/helpers/labels_helper.rb | 59 +- app/helpers/markup_helper.rb | 4 +- app/helpers/milestones_helper.rb | 25 +- app/helpers/mirror_helper.rb | 4 + app/helpers/notes_helper.rb | 10 +- app/helpers/notifications_helper.rb | 7 + app/helpers/projects_helper.rb | 13 +- app/helpers/search_helper.rb | 2 +- app/helpers/sidekiq_helper.rb | 2 +- app/helpers/sorting_helper.rb | 94 +- app/helpers/storage_helper.rb | 10 + app/mailers/emails/merge_requests.rb | 6 +- app/mailers/notify.rb | 2 + app/models/application_record.rb | 2 + app/models/application_setting.rb | 26 +- .../application_setting_implementation.rb | 18 +- app/models/badge.rb | 2 +- app/models/blob.rb | 2 +- app/models/ci/build.rb | 20 +- app/models/ci/build_runner_session.rb | 2 +- app/models/ci/job_artifact.rb | 19 +- app/models/ci/legacy_stage.rb | 4 + app/models/ci/pipeline.rb | 7 +- app/models/ci/pipeline_schedule.rb | 3 + app/models/ci/stage.rb | 4 + .../clusters/applications/cert_manager.rb | 6 + app/models/clusters/applications/helm.rb | 7 + app/models/clusters/applications/ingress.rb | 7 + app/models/clusters/applications/jupyter.rb | 6 + app/models/clusters/applications/knative.rb | 6 + .../clusters/applications/prometheus.rb | 18 +- app/models/clusters/applications/runner.rb | 15 +- app/models/clusters/cluster.rb | 15 +- .../clusters/concerns/application_core.rb | 10 + .../clusters/concerns/application_data.rb | 8 + .../clusters/concerns/application_status.rb | 13 +- app/models/clusters/instance.rb | 17 + app/models/clusters/platforms/kubernetes.rb | 17 +- app/models/commit_range.rb | 6 +- app/models/commit_status.rb | 2 +- app/models/concerns/atomic_internal_id.rb | 14 + app/models/concerns/avatarable.rb | 3 +- app/models/concerns/cache_markdown_field.rb | 2 +- app/models/concerns/deployment_platform.rb | 13 + app/models/concerns/deprecated_assignee.rb | 86 + app/models/concerns/group_descendant.rb | 4 +- app/models/concerns/has_status.rb | 4 + app/models/concerns/has_variable.rb | 7 +- app/models/concerns/issuable.rb | 51 +- app/models/concerns/maskable.rb | 2 +- app/models/concerns/noteable.rb | 8 + app/models/concerns/redactable.rb | 2 +- .../concerns/storage/legacy_namespace.rb | 24 +- app/models/concerns/taskable.rb | 2 +- .../token_authenticatable_strategies/base.rb | 2 +- .../encrypted.rb | 6 +- .../concerns/update_project_statistics.rb | 60 + app/models/deployment.rb | 11 + app/models/environment.rb | 6 +- .../project_error_tracking_setting.rb | 4 +- app/models/generic_commit_status.rb | 2 +- app/models/global_label.rb | 6 + app/models/global_milestone.rb | 4 +- app/models/gpg_signature.rb | 9 + app/models/group.rb | 4 +- app/models/instance_configuration.rb | 2 +- app/models/internal_id.rb | 55 +- app/models/issue.rb | 24 +- app/models/label.rb | 5 + app/models/lfs_object.rb | 2 +- app/models/members/group_member.rb | 2 +- app/models/members/project_member.rb | 2 +- app/models/merge_request.rb | 63 +- app/models/merge_request_diff.rb | 21 +- app/models/milestone.rb | 10 +- app/models/namespace.rb | 42 +- app/models/note_diff_file.rb | 4 + app/models/notification_recipient.rb | 20 +- app/models/pages_domain.rb | 18 +- app/models/personal_access_token.rb | 2 +- app/models/pool_repository.rb | 5 +- app/models/project.rb | 66 +- app/models/project_group_link.rb | 4 +- app/models/project_metrics_setting.rb | 9 + app/models/project_services/asana_service.rb | 8 +- app/models/project_services/bamboo_service.rb | 12 +- .../chat_message/deployment_message.rb | 77 + .../chat_notification_service.rb | 4 +- .../project_services/discord_service.rb | 9 +- .../emails_on_push_service.rb | 14 +- .../project_services/external_wiki_service.rb | 6 +- .../project_services/flowdock_service.rb | 4 +- .../project_services/hangouts_chat_service.rb | 5 + app/models/project_services/jira_service.rb | 20 +- .../project_services/kubernetes_service.rb | 4 + .../microsoft_teams_service.rb | 5 + .../project_services/mock_ci_service.rb | 2 +- .../pipelines_email_service.rb | 6 +- .../pivotaltracker_service.rb | 8 +- .../project_services/pushover_service.rb | 26 +- .../slash_commands_service.rb | 2 + app/models/project_statistics.rb | 9 +- app/models/project_wiki.rb | 22 +- app/models/release.rb | 8 +- app/models/releases/link.rb | 2 +- app/models/remote_mirror.rb | 16 +- app/models/repository.rb | 65 +- app/models/route.rb | 16 +- app/models/service.rb | 3 + app/models/storage/legacy_project.rb | 2 +- app/models/u2f_registration.rb | 2 +- app/models/upload.rb | 6 +- app/models/user.rb | 27 +- app/models/user_preference.rb | 4 + app/policies/ci/pipeline_policy.rb | 12 + app/policies/clusters/cluster_policy.rb | 1 + app/policies/clusters/instance_policy.rb | 21 + app/policies/global_policy.rb | 4 +- app/policies/group_policy.rb | 6 +- app/policies/personal_snippet_policy.rb | 15 +- app/policies/project_policy.rb | 6 +- app/presenters/clusters/cluster_presenter.rb | 4 + .../instance_clusterable_presenter.rb | 69 + app/presenters/label_presenter.rb | 51 + app/presenters/merge_request_presenter.rb | 13 +- app/presenters/project_presenter.rb | 4 +- app/serializers/cluster_application_entity.rb | 1 + .../issuable_sidebar_extras_entity.rb | 2 + app/serializers/issue_board_entity.rb | 2 + app/serializers/issue_entity.rb | 7 +- .../issue_sidebar_extras_entity.rb | 1 - .../merge_request_assignee_entity.rb | 7 + app/serializers/merge_request_basic_entity.rb | 3 +- app/serializers/merge_request_serializer.rb | 4 +- .../merge_request_sidebar_basic_entity.rb | 11 - .../merge_request_sidebar_extras_entity.rb | 7 + app/serializers/pipeline_serializer.rb | 40 +- app/services/after_branch_delete_service.rb | 20 - app/services/ci/create_pipeline_service.rb | 12 +- app/services/ci/destroy_pipeline_service.rb | 4 +- .../ci/expire_pipeline_cache_service.rb | 62 + app/services/ci/play_manual_stage_service.rb | 29 + app/services/ci/register_job_service.rb | 2 +- .../applications/base_helm_service.rb | 14 + .../check_installation_progress_service.rb | 6 +- .../check_uninstall_progress_service.rb | 62 + .../clusters/applications/create_service.rb | 4 +- .../clusters/applications/destroy_service.rb | 23 + .../clusters/applications/install_service.rb | 13 +- .../clusters/applications/patch_service.rb | 12 +- .../applications/uninstall_service.rb | 29 + .../clusters/applications/update_service.rb | 2 +- .../clusters/applications/upgrade_service.rb | 34 +- app/services/clusters/build_service.rb | 2 + app/services/clusters/create_service.rb | 2 + app/services/clusters/refresh_service.rb | 4 +- app/services/compare_service.rb | 4 +- app/services/delete_branch_service.rb | 34 +- app/services/files/delete_service.rb | 2 +- app/services/files/update_service.rb | 2 +- app/services/git/base_hooks_service.rb | 96 + app/services/git/branch_hooks_service.rb | 144 ++ app/services/git/branch_push_service.rb | 225 +-- app/services/git/tag_hooks_service.rb | 36 + app/services/git/tag_push_service.rb | 54 +- app/services/groups/create_service.rb | 10 +- app/services/groups/destroy_service.rb | 2 +- app/services/groups/transfer_service.rb | 12 +- app/services/import/github_service.rb | 2 +- app/services/issuable_base_service.rb | 18 +- app/services/issues/base_service.rb | 22 +- app/services/issues/move_service.rb | 4 +- app/services/issues/update_service.rb | 2 +- app/services/members/create_service.rb | 15 +- app/services/merge_requests/base_service.rb | 8 +- app/services/merge_requests/build_service.rb | 28 +- .../push_options_handler_service.rb | 4 +- app/services/merge_requests/rebase_service.rb | 12 +- .../merge_requests/refresh_service.rb | 2 + app/services/merge_requests/squash_service.rb | 4 +- app/services/merge_requests/update_service.rb | 18 +- app/services/milestones/promote_service.rb | 6 +- app/services/note_summary.rb | 4 +- app/services/notes/update_service.rb | 2 +- .../notification_recipient_service.rb | 28 +- app/services/notification_service.rb | 20 +- app/services/projects/cleanup_service.rb | 47 +- app/services/projects/create_service.rb | 4 +- app/services/projects/destroy_service.rb | 10 +- .../detect_repository_languages_service.rb | 2 +- app/services/projects/housekeeping_service.rb | 7 +- app/services/projects/import_error_filter.rb | 2 +- app/services/projects/import_service.rb | 23 +- .../lfs_download_link_list_service.rb | 16 +- .../lfs_pointers/lfs_import_service.rb | 92 +- .../projects/lfs_pointers/lfs_link_service.rb | 4 +- .../lfs_object_download_list_service.rb | 96 + .../move_project_group_links_service.rb | 2 +- .../projects/operations/update_service.rb | 11 +- .../projects/propagate_service_template.rb | 2 +- app/services/projects/transfer_service.rb | 14 +- app/services/projects/update_service.rb | 13 +- .../projects/update_statistics_service.rb | 19 + app/services/releases/concerns.rb | 2 +- app/services/releases/create_service.rb | 20 +- .../resource_events/change_labels_service.rb | 2 +- app/services/service_response.rb | 31 + app/services/system_hooks_service.rb | 6 +- app/services/system_note_service.rb | 12 +- app/services/tags/destroy_service.rb | 11 +- app/services/test_hooks/project_service.rb | 16 +- app/services/test_hooks/system_service.rb | 2 +- app/services/todo_service.rb | 16 +- .../todos/destroy/entity_leave_service.rb | 13 +- app/services/users/activity_service.rb | 2 +- .../users/migrate_to_ghost_user_service.rb | 2 +- .../refresh_authorized_projects_service.rb | 4 +- app/services/verify_pages_domain_service.rb | 15 +- app/uploaders/file_uploader.rb | 16 +- app/uploaders/import_export_uploader.rb | 4 - app/uploaders/object_storage.rb | 2 +- app/uploaders/personal_file_uploader.rb | 68 +- app/validators/addressable_url_validator.rb | 112 ++ app/validators/public_url_validator.rb | 19 +- app/validators/url_validator.rb | 104 - .../application_settings/_logging.html.haml | 6 + .../application_settings/_pages.html.haml | 29 +- .../_performance_bar.html.haml | 4 +- .../metrics_and_profiling.html.haml | 2 +- app/views/admin/applications/show.html.haml | 4 +- .../admin/broadcast_messages/_form.html.haml | 1 + app/views/admin/groups/show.html.haml | 10 +- app/views/admin/labels/_label.html.haml | 2 +- app/views/admin/projects/index.html.haml | 2 +- app/views/admin/projects/show.html.haml | 9 +- app/views/admin/users/_user_detail.html.haml | 2 +- app/views/admin/users/show.html.haml | 7 + app/views/ci/variables/_index.html.haml | 1 + .../ci/variables/_variable_header.html.haml | 16 + .../ci/variables/_variable_row.html.haml | 24 +- .../clusters/clusters/gcp/_form.html.haml | 13 +- app/views/clusters/clusters/show.html.haml | 4 +- .../clusters/clusters/user/_form.html.haml | 50 +- .../platforms/kubernetes/_form.html.haml | 7 + app/views/dashboard/_activity_head.html.haml | 2 +- app/views/dashboard/_groups_head.html.haml | 2 +- app/views/dashboard/_projects_head.html.haml | 26 +- app/views/dashboard/_snippets_head.html.haml | 2 +- app/views/dashboard/issues.html.haml | 2 +- app/views/dashboard/merge_requests.html.haml | 2 +- .../dashboard/milestones/index.html.haml | 2 +- app/views/dashboard/projects/_nav.html.haml | 27 +- app/views/dashboard/projects/index.html.haml | 2 +- .../dashboard/projects/starred.html.haml | 2 +- app/views/dashboard/todos/_todo.html.haml | 2 +- app/views/dashboard/todos/index.html.haml | 2 +- .../devise/mailer/email_changed.html.haml | 2 +- .../devise/mailer/email_changed.text.erb | 2 +- .../discussions/_diff_discussion.html.haml | 2 +- .../_parallel_diff_discussion.html.haml | 8 +- .../doorkeeper/applications/show.html.haml | 4 +- app/views/events/event/_common.html.haml | 3 +- app/views/events/event/_note.html.haml | 3 +- app/views/explore/projects/_filter.html.haml | 10 +- app/views/explore/projects/index.html.haml | 4 +- app/views/explore/projects/starred.html.haml | 4 +- app/views/explore/projects/trending.html.haml | 4 +- app/views/groups/edit.html.haml | 2 +- .../groups/group_members/index.html.haml | 2 +- app/views/groups/labels/index.html.haml | 7 +- app/views/groups/new.html.haml | 2 +- .../groups/settings/ci_cd/show.html.haml | 2 +- app/views/help/index.html.haml | 8 +- app/views/import/gitea/new.html.haml | 6 +- app/views/import/gitea/status.html.haml | 2 +- app/views/layouts/header/_default.html.haml | 6 +- .../layouts/header/_help_dropdown.html.haml | 4 + .../layouts/nav/sidebar/_admin.html.haml | 15 +- .../layouts/nav/sidebar/_group.html.haml | 1 + .../_reassigned_issuable_email.html.haml | 10 + .../notify/_removal_notification.html.haml | 9 + .../closed_merge_request_email.text.haml | 2 +- app/views/notify/issue_due_email.html.haml | 2 +- app/views/notify/issue_due_email.text.erb | 2 +- .../notify/links/ci/builds/_build.text.erb | 2 +- .../member_access_granted_email.html.haml | 11 +- .../member_access_granted_email.text.erb | 7 +- .../merge_request_status_email.text.haml | 2 +- .../merge_request_unmergeable_email.text.haml | 2 +- .../merged_merge_request_email.text.haml | 2 +- app/views/notify/new_issue_email.html.haml | 2 +- app/views/notify/new_issue_email.text.erb | 2 +- .../new_mention_in_issue_email.text.erb | 2 +- ...ew_mention_in_merge_request_email.text.erb | 2 +- .../notify/new_merge_request_email.html.haml | 4 +- .../notify/new_merge_request_email.text.erb | 2 +- .../pages_domain_disabled_email.html.haml | 4 +- ...domain_verification_failed_email.html.haml | 4 +- .../notify/reassigned_issue_email.html.haml | 11 +- .../reassigned_merge_request_email.html.haml | 11 +- .../reassigned_merge_request_email.text.erb | 4 +- app/views/profiles/preferences/show.html.haml | 26 + app/views/profiles/show.html.haml | 12 + .../_classification_policy_settings.html.haml | 6 +- app/views/projects/_export.html.haml | 67 +- app/views/projects/_home_panel.html.haml | 2 + .../projects/_import_project_pane.html.haml | 2 +- ...ge_request_merge_checks_settings.html.haml | 19 + ...ge_request_merge_method_settings.html.haml | 49 +- ...e_request_merge_options_settings.html.haml | 14 + .../_merge_request_merge_settings.html.haml | 24 - .../_merge_request_settings.html.haml | 4 +- app/views/projects/_zen.html.haml | 1 + app/views/projects/branches/_branch.html.haml | 2 +- app/views/projects/branches/_commit.html.haml | 4 +- .../projects/buttons/_download.html.haml | 45 +- .../buttons/_download_links.html.haml | 5 + app/views/projects/ci/builds/_build.html.haml | 4 +- app/views/projects/cleanup/_show.html.haml | 2 +- app/views/projects/commits/_commit.html.haml | 2 +- .../projects/commits/_inline_commit.html.haml | 2 +- .../projects/default_branch/_show.html.haml | 2 +- .../projects/deploy_keys/_index.html.haml | 2 +- app/views/projects/deployments/_actions.haml | 2 +- .../projects/deployments/_commit.html.haml | 6 +- .../deployments/_deployment.html.haml | 2 +- app/views/projects/diffs/_text_file.html.haml | 2 +- app/views/projects/edit.html.haml | 311 ++- .../projects/environments/_form.html.haml | 2 +- app/views/projects/forks/error.html.haml | 14 +- app/views/projects/forks/index.html.haml | 13 +- app/views/projects/forks/new.html.haml | 16 +- .../_generic_commit_status.html.haml | 4 +- app/views/projects/graphs/show.html.haml | 4 +- app/views/projects/issues/_issue.html.haml | 10 +- .../issues/_merge_requests_status.html.haml | 25 - app/views/projects/issues/new.html.haml | 9 +- app/views/projects/issues/show.html.haml | 6 +- app/views/projects/labels/index.html.haml | 41 +- .../merge_requests/_merge_request.html.haml | 8 +- .../projects/merge_requests/show.html.haml | 8 +- .../mirrors/_authentication_method.html.haml | 21 - .../mirrors/_disabled_mirror_badge.html.haml | 1 + .../projects/mirrors/_instructions.html.haml | 2 +- .../projects/mirrors/_mirror_repos.html.haml | 36 +- .../mirrors/_mirror_repos_push.html.haml | 2 +- .../projects/mirrors/_ssh_host_keys.html.haml | 2 +- app/views/projects/new.html.haml | 11 +- .../pipeline_schedules/_form.html.haml | 6 +- .../shared/_index.html.haml | 2 +- .../shared/_protected_branch.html.haml | 2 +- .../protected_tags/shared/_index.html.haml | 2 +- .../projects/settings/_general.html.haml | 42 + .../projects/settings/ci_cd/show.html.haml | 2 +- .../operations/_external_dashboard.html.haml | 2 + .../settings/operations/show.html.haml | 1 + .../projects/triggers/_trigger.html.haml | 3 - app/views/search/results/_wiki_blob.html.haml | 2 +- app/views/shared/_confirm_modal.html.haml | 8 +- .../shared/_delete_label_modal.html.haml | 4 +- app/views/shared/_import_form.html.haml | 27 +- app/views/shared/_label.html.haml | 10 +- app/views/shared/_label_row.html.haml | 16 +- .../shared/_mini_pipeline_graph.html.haml | 2 +- .../_remote_mirror_update_button.html.haml | 2 +- .../shared/_sidebar_toggle_button.html.haml | 4 +- app/views/shared/boards/_show.html.haml | 10 +- .../shared/boards/components/_board.html.haml | 13 +- .../boards/components/_sidebar.html.haml | 7 +- .../components/sidebar/_assignee.html.haml | 2 +- .../components/sidebar/_due_date.html.haml | 2 +- .../components/sidebar/_labels.html.haml | 15 +- .../sidebar/_time_tracker.html.haml | 6 + app/views/shared/groups/_dropdown.html.haml | 6 +- app/views/shared/icons/_gitea_logo.svg.erb | 1 + .../shared/issuable/_assignees.html.haml | 6 +- .../issuable/_bulk_update_sidebar.html.haml | 5 +- .../issuable/_label_page_default.html.haml | 2 +- .../shared/issuable/_search_bar.html.haml | 6 +- app/views/shared/issuable/_sidebar.html.haml | 4 +- .../issuable/_sidebar_assignees.html.haml | 56 +- .../form/_merge_request_assignee.html.haml | 31 - .../shared/issuable/form/_metadata.html.haml | 7 +- ... => _metadata_issuable_assignee.html.haml} | 6 +- .../shared/issuable/form/_title.html.haml | 2 +- .../members/_access_request_links.html.haml | 2 +- .../shared/milestones/_issuable.html.haml | 2 +- .../shared/milestones/_labels_tab.html.haml | 2 +- .../notifications/_new_button.html.haml | 4 +- app/views/shared/projects/_dropdown.html.haml | 21 +- .../shared/projects/_search_bar.html.haml | 28 + .../shared/projects/_search_form.html.haml | 7 +- .../shared/projects/_sort_dropdown.html.haml | 39 + app/views/snippets/new.html.haml | 2 +- app/workers/all_queues.yml | 5 + app/workers/cluster_configure_worker.rb | 2 +- .../clusters/applications/uninstall_worker.rb | 17 + .../wait_for_uninstall_app_worker.rb | 20 + app/workers/concerns/application_worker.rb | 2 +- app/workers/deployments/finished_worker.rb | 13 + app/workers/email_receiver_worker.rb | 16 +- app/workers/expire_pipeline_cache_worker.rb | 51 +- app/workers/git_garbage_collect_worker.rb | 11 +- .../object_storage/migrate_uploads_worker.rb | 14 +- .../pages_domain_removal_cron_worker.rb | 16 + app/workers/post_receive.rb | 4 +- app/workers/project_cache_worker.rb | 20 +- .../update_project_statistics_worker.rb | 18 + babel.config.js | 5 +- config/application.rb | 5 - config/gitlab.yml.example | 15 +- config/initializers/1_settings.rb | 15 + ...id_type_casting_in_uniqueness_validator.rb | 94 - .../active_record_build_select.rb | 24 + config/initializers/active_record_locking.rb | 76 - .../initializers/ar_native_database_types.rb | 3 +- ...nfig_initializers_active_record_locking.rb | 45 + .../initializers/gettext_rails_i18n_patch.rb | 2 +- config/initializers/lograge.rb | 2 +- config/initializers/octokit.rb | 1 + config/initializers/peek.rb | 14 +- .../postgresql_opclasses_support.rb | 2 +- config/initializers/seed_fu.rb | 4 + config/initializers/sentry.rb | 1 + config/initializers/sidekiq.rb | 17 +- config/initializers/tracing.rb | 16 +- config/karma.config.js | 5 +- config/locales/doorkeeper.en.yml | 5 +- config/locales/en.yml | 2 + config/prometheus/common_metrics.yml | 161 +- config/puma.rb.example | 70 + config/routes.rb | 1 + config/routes/admin.rb | 2 + config/routes/project.rb | 16 +- config/sidekiq_queues.yml | 3 +- danger/ce_ee_vue_templates/Dangerfile | 56 + danger/commit_messages/Dangerfile | 2 +- danger/roulette/Dangerfile | 55 +- .../development/02_application_settings.rb | 2 +- db/fixtures/development/09_issues.rb | 20 +- db/fixtures/development/10_merge_requests.rb | 2 +- db/importers/common_metrics_importer.rb | 26 +- ...tate_to_allow_empty_merge_request_diffs.rb | 1 - ...81638_add_unique_index_to_subscriptions.rb | 4 +- ...ed_groups_into_regular_groups_for_mysql.rb | 7 - ...42_add_default_project_creation_setting.rb | 19 + ...02_add_project_creation_level_to_groups.rb | 17 + .../20180702134423_generate_missing_routes.rb | 1 + ...lt_project_creation_application_setting.rb | 22 - ...dd_project_creation_level_to_namespaces.rb | 22 - ...12113229_add_remove_at_to_pages_domains.rb | 10 + ...34_add_remove_at_index_to_pages_domains.rb | 19 + ...ification_email_to_application_settings.rb | 15 + ...30_add_auto_ssl_enabled_to_pages_domain.rb | 17 + ...25105715_add_fields_to_user_preferences.rb | 24 + ...ervice_accepted_to_application_settings.rb | 21 + ...30217_add_variable_type_to_ci_variables.rb | 17 + ...add_packages_size_to_project_statistics.rb | 11 + ...d_merge_train_enabled_to_ci_cd_settings.rb | 17 + ...add_variable_type_to_ci_group_variables.rb | 17 + ..._variable_type_to_ci_pipeline_variables.rb | 17 + ..._type_to_ci_pipeline_schedule_variables.rb | 17 + ...82545_create_merge_request_trains_table.rb | 18 + ...2082247_create_project_metrics_settings.rb | 14 + ...80107_add_deployment_events_to_services.rb | 17 + ...35337_add_temporary_indexes_to_state_id.rb | 34 + ...tection_enabled_to_application_settings.rb | 2 +- .../20190424134256_drop_projects_ci_id.rb | 33 + ...edule_sync_issuables_state_id_where_nil.rb | 63 + db/schema.rb | 324 ++-- doc/README.md | 16 +- doc/administration/audit_events.md | 116 ++ doc/administration/audit_log.png | Bin 0 -> 25767 bytes doc/administration/auditor_access_form.png | Bin 0 -> 11910 bytes doc/administration/auditor_users.md | 88 + doc/administration/auth/README.md | 2 + .../how_to_configure_ldap_gitlab_ce/index.md | 8 +- .../img/admin_group.png | Bin 0 -> 17543 bytes .../img/group_link_final.png | Bin 0 -> 14524 bytes .../img/group_linking.gif | Bin 0 -> 1504079 bytes .../img/manual_permissions.gif | Bin 0 -> 1703084 bytes .../img/multi_login.gif | Bin 0 -> 180218 bytes .../how_to_configure_ldap_gitlab_ee/index.md | 119 ++ doc/administration/auth/ldap-ee.md | 557 ++++++ doc/administration/auth/ldap.md | 11 +- doc/administration/auth/oidc.md | 140 ++ doc/administration/auth/okta.md | 7 +- doc/administration/auth/smartcard.md | 186 ++ doc/administration/compliance.md | 6 +- doc/administration/container_registry.md | 46 +- doc/administration/custom_hooks.md | 69 +- doc/administration/database_load_balancing.md | 277 +++ doc/administration/dependency_proxy.md | 150 ++ .../background_verification.md | 208 ++ .../disaster_recovery/bring_primary_back.md | 61 + ...hecksum-differences-admin-project-page.png | Bin 0 -> 202130 bytes .../checksum-differences-admin-projects.png | Bin 0 -> 85997 bytes .../img/replication-status.png | Bin 0 -> 7716 bytes .../img/reverification-interval.png | Bin 0 -> 33620 bytes .../img/verification-status-primary.png | Bin 0 -> 13329 bytes .../img/verification-status-secondary.png | Bin 0 -> 12186 bytes .../geo/disaster_recovery/index.md | 322 ++++ .../geo/disaster_recovery/planned_failover.md | 227 +++ .../geo/replication/configuration.md | 314 +++ .../geo/replication/configuration_source.md | 172 ++ .../geo/replication/database.md | 507 +++++ .../geo/replication/database_source.md | 439 +++++ .../geo/replication/docker_registry.md | 23 + .../geo/replication/external_database.md | 219 +++ doc/administration/geo/replication/faq.md | 62 + .../geo/replication/high_availability.md | 295 +++ .../geo/replication/img/geo_architecture.png | Bin 0 -> 116506 bytes .../replication/img/geo_node_dashboard.png | Bin 0 -> 26266 bytes .../replication/img/geo_node_healthcheck.png | Bin 0 -> 28285 bytes .../geo/replication/img/geo_overview.png | Bin 0 -> 37246 bytes doc/administration/geo/replication/index.md | 309 +++ .../geo/replication/object_storage.md | 43 + .../geo/replication/remove_geo_node.md | 50 + .../geo/replication/security_review.md | 286 +++ .../geo/replication/troubleshooting.md | 457 +++++ doc/administration/geo/replication/tuning.md | 17 + .../geo/replication/updating_the_geo_nodes.md | 403 ++++ .../geo/replication/using_a_geo_server.md | 18 + .../high_availability/README.md | 208 +- .../high_availability/alpha_database.md | 6 + .../high_availability/consul.md | 105 + .../high_availability/database.md | 1200 +++++++++++- .../high_availability/gitaly.md | 90 + .../high_availability/gitlab.md | 6 +- doc/administration/high_availability/nfs.md | 11 +- .../nfs_host_client_setup.md | 135 ++ .../high_availability/pg_ha_architecture.png | Bin 0 -> 18412 bytes .../high_availability/pgbouncer.md | 132 ++ doc/administration/high_availability/redis.md | 160 +- doc/administration/housekeeping.md | 2 +- .../img/db_load_balancing_postgres_stats.png | Bin 0 -> 21543 bytes .../active-active-diagram.png | Bin 14649 -> 0 bytes .../active-passive-diagram.png | Bin 11699 -> 0 bytes .../high_availability/fully-distributed.png | Bin 0 -> 46918 bytes .../img/high_availability/geo-ha-diagram.png | Bin 0 -> 43826 bytes .../img/high_availability/horizontal.png | Bin 0 -> 18660 bytes .../img/high_availability/hybrid.png | Bin 0 -> 20698 bytes .../img/housekeeping_settings.png | Bin 12025 -> 24754 bytes .../img/instance_review_button.png | Bin 0 -> 24525 bytes doc/administration/incoming_email.md | 2 + doc/administration/index.md | 35 +- doc/administration/instance_review.md | 17 + doc/administration/integration/terminal.md | 2 +- doc/administration/maven_packages.md | 5 + doc/administration/maven_repository.md | 5 + .../monitoring/prometheus/gitlab_metrics.md | 41 + .../monitoring/prometheus/index.md | 24 +- .../prometheus/pgbouncer_exporter.md | 34 + doc/administration/npm_registry.md | 5 + .../operations/cleaning_up_redis_sessions.md | 2 +- .../operations/extra_sidekiq_processes.md | 218 +++ .../operations/fast_ssh_key_lookup.md | 18 +- .../operations/img/sidekiq-cluster.png | Bin 0 -> 61923 bytes doc/administration/operations/index.md | 1 + doc/administration/packages.md | 174 ++ doc/administration/pages/index.md | 4 + doc/administration/pseudonymizer.md | 103 + doc/administration/raketasks/geo.md | 57 + doc/administration/raketasks/storage.md | 3 + .../repository_storage_types.md | 10 +- doc/analytics/README.md | 5 + doc/analytics/contribution_analytics.md | 5 + doc/api/commits.md | 27 +- doc/api/discussions.md | 15 +- doc/api/environments.md | 105 + doc/api/graphql/index.md | 6 +- doc/api/group_level_variables.md | 31 +- doc/api/merge_requests.md | 90 + doc/api/milestones.md | 2 +- doc/api/notes.md | 9 + doc/api/pipeline_schedules.md | 5 + doc/api/pipeline_triggers.md | 29 - doc/api/pipelines.md | 33 +- doc/api/project_clusters.md | 1 + doc/api/project_level_variables.md | 31 +- doc/api/project_templates.md | 2 +- doc/api/projects.md | 7 +- doc/api/runners.md | 1 + doc/api/services.md | 4 +- doc/api/users.md | 2 +- .../how_to_configure_ldap_gitlab_ee/index.md | 5 + doc/ci/README.md | 183 +- doc/ci/chatops/README.md | 2 +- .../bitbucket_integration.md | 147 ++ .../github_integration.md | 111 ++ .../img/bitbucket_app_password.png | Bin 0 -> 31488 bytes .../img/bitbucket_webhook.png | Bin 0 -> 26142 bytes .../img/ci_cd_for_external_repo.png | Bin 0 -> 66760 bytes .../img/external_repository.png | Bin 0 -> 22832 bytes .../img/github_omniauth.png | Bin 0 -> 29022 bytes .../img/github_omniauth_list.png | Bin 0 -> 9613 bytes .../img/github_push_webhook.png | Bin 0 -> 45725 bytes .../img/github_repo_list.png | Bin 0 -> 14282 bytes doc/ci/ci_cd_for_external_repos/index.md | 31 + doc/ci/docker/using_docker_build.md | 35 +- doc/ci/docker/using_docker_images.md | 3 +- doc/ci/environments.md | 179 +- doc/ci/environments/protected_environments.md | 25 +- doc/ci/examples/README.md | 48 +- doc/ci/examples/browser_performance.md | 2 +- doc/ci/examples/code_quality.md | 46 +- doc/ci/examples/container_scanning.md | 122 +- doc/ci/examples/dast.md | 105 +- doc/ci/examples/dependency_scanning.md | 5 + .../laravel_with_gitlab_and_envoy/index.md | 2 +- doc/ci/examples/license_management.md | 5 + doc/ci/examples/sast.md | 5 + doc/ci/examples/sast_docker.md | 4 +- doc/ci/examples/test-scala-application.md | 2 +- .../index.md | 5 +- doc/ci/img/add_file_template_11_10.png | Bin 0 -> 55910 bytes doc/ci/img/deployments_view.png | Bin 23352 -> 58498 bytes doc/ci/img/environments_available.png | Bin 8464 -> 20410 bytes doc/ci/img/environments_mr_review_app.png | Bin 13394 -> 30140 bytes doc/ci/img/metrics_reports.png | Bin 0 -> 19450 bytes doc/ci/img/multi_pipeline_mini_graph.gif | Bin 0 -> 11466 bytes doc/ci/img/multi_project_pipeline_graph.png | Bin 0 -> 10671 bytes doc/ci/interactive_web_terminal/index.md | 5 + ...gitlab_workflow_example_extended_11_11.png | Bin 0 -> 139184 bytes doc/ci/introduction/img/job_running.png | Bin doc/ci/introduction/img/pipeline_status.png | Bin doc/ci/introduction/img/rollback.png | Bin doc/ci/introduction/index.md | 61 +- doc/ci/junit_test_reports.md | 6 +- doc/ci/large_repositories/index.md | 37 +- doc/ci/merge_request_pipelines/index.md | 15 +- doc/ci/metrics_reports.md | 40 + doc/ci/multi_project_pipeline_graphs.md | 5 + doc/ci/multi_project_pipelines.md | 152 ++ doc/ci/pipelines.md | 17 +- doc/ci/quick_start/README.md | 2 +- doc/ci/review_apps/index.md | 140 +- doc/ci/ssh_keys/README.md | 4 +- doc/ci/triggers/README.md | 76 +- doc/ci/variables/README.md | 145 +- .../img/ci_job_stage_output_example.png | Bin .../variables/img/custom_variable_output.png | Bin 70552 -> 0 bytes .../variables/img/custom_variables_output.png | Bin 0 -> 89185 bytes .../img/new_custom_variable_example.png | Bin 44164 -> 0 bytes .../img/new_custom_variables_example.png | Bin 0 -> 216497 bytes ...rride_value_via_manual_pipeline_output.png | Bin .../img/override_variable_manual_pipeline.png | Bin 29090 -> 41714 bytes .../img/variable_types_usage_example.png | Bin 0 -> 67003 bytes doc/ci/variables/predefined_variables.md | 41 +- .../variables/where_variables_can_be_used.md | 21 +- doc/ci/yaml/README.md | 67 +- .../issue_and_merge_request_template.md | 5 + doc/development/README.md | 8 + doc/development/architecture.md | 206 +- doc/development/code_review.md | 64 +- doc/development/contributing/index.md | 7 +- .../contributing/issue_workflow.md | 9 +- .../contributing/merge_request_workflow.md | 2 +- doc/development/contributing/style_guides.md | 2 +- doc/development/documentation/index.md | 100 +- doc/development/documentation/styleguide.md | 281 ++- doc/development/ee_features.md | 47 +- doc/development/elasticsearch.md | 166 ++ doc/development/fe_guide/frontend_faq.md | 27 + doc/development/fe_guide/index.md | 4 + doc/development/fe_guide/style_guide_scss.md | 2 + doc/development/fe_guide/vue.md | 6 +- doc/development/fe_guide/vuex.md | 4 +- doc/development/geo.md | 463 +++++ doc/development/gitaly.md | 6 +- doc/development/go_guide/index.md | 2 +- doc/development/i18n/externalization.md | 2 +- doc/development/i18n/proofreader.md | 15 +- doc/development/integrations/jira_connect.md | 41 + .../licensed_feature_availability.md | 37 + doc/development/migration_style_guide.md | 6 + doc/development/packages.md | 68 + doc/development/rake_tasks.md | 34 + doc/development/session.md | 65 + .../testing_guide/best_practices.md | 6 +- .../testing_guide/end_to_end_tests.md | 5 +- doc/development/testing_guide/flaky_tests.md | 4 +- .../img/review_apps_cicd_architecture.png | Bin 73240 -> 136431 bytes doc/development/testing_guide/review_apps.md | 162 +- .../testing_guide/testing_levels.md | 29 +- doc/getting-started/subscription.md | 3 + doc/git_hooks/git_hooks.md | 5 + doc/gitlab-basics/README.md | 42 +- doc/gitlab-basics/create-issue.md | 4 +- doc/gitlab-basics/create-project.md | 3 +- doc/gitlab-basics/fork-project.md | 6 +- doc/gitlab-geo/README.md | 5 + doc/gitlab-geo/after_setup.md | 5 + doc/gitlab-geo/bring-primary-back.md | 5 + doc/gitlab-geo/configuration.md | 5 + doc/gitlab-geo/configuration_source.md | 5 + doc/gitlab-geo/database.md | 5 + doc/gitlab-geo/database_source.md | 5 + doc/gitlab-geo/disaster-recovery.md | 5 + doc/gitlab-geo/docker_registry.md | 5 + doc/gitlab-geo/faq.md | 5 + doc/gitlab-geo/ha.md | 5 + doc/gitlab-geo/object_storage.md | 5 + doc/gitlab-geo/planned-failover.md | 5 + doc/gitlab-geo/security-review.md | 5 + doc/gitlab-geo/ssh.md | 5 + doc/gitlab-geo/troubleshooting.md | 5 + doc/gitlab-geo/tuning.md | 5 + doc/gitlab-geo/updating_the_geo_nodes.md | 5 + doc/gitlab-geo/using_a_geo_server.md | 5 + doc/install/google_cloud_platform/index.md | 6 + doc/install/installation.md | 76 +- doc/install/ldap.md | 7 + doc/install/pivotal/index.md | 45 + doc/install/requirements.md | 20 +- doc/integration/README.md | 2 + doc/integration/elasticsearch.md | 584 ++++++ doc/integration/github.md | 6 +- .../img/jenkins_gitlab_plugin_config.png | Bin 0 -> 10054 bytes .../img/jenkins_gitlab_service.png | Bin 0 -> 19235 bytes .../img/jenkins_gitlab_service_settings.png | Bin 0 -> 24094 bytes doc/integration/img/jenkins_project.png | Bin 0 -> 42275 bytes .../img/jira_dev_panel_gl_setup_1.png | Bin 0 -> 36145 bytes .../img/jira_dev_panel_jira_setup_1.png | Bin 0 -> 29546 bytes .../img/jira_dev_panel_jira_setup_2.png | Bin 0 -> 17374 bytes .../img/jira_dev_panel_jira_setup_3.png | Bin 0 -> 37257 bytes .../img/jira_dev_panel_jira_setup_4.png | Bin 0 -> 21592 bytes .../img/jira_dev_panel_jira_setup_5.png | Bin 0 -> 11002 bytes .../img/jira_dev_panel_manual_refresh.png | Bin 0 -> 23542 bytes .../img/limit_namespace_filter.png | Bin 0 -> 12777 bytes .../img/limit_namespaces_projects_options.png | Bin 0 -> 22650 bytes .../img/salesforce_app_details.png | Bin 0 -> 116022 bytes .../img/salesforce_app_secret_details.png | Bin 0 -> 199643 bytes .../img/salesforce_oauth_app_details.png | Bin 0 -> 171542 bytes .../img/ultra_auth_credentials.png | Bin 0 -> 53737 bytes .../img/ultra_auth_edit_callback_url.png | Bin 0 -> 39410 bytes ...tra_auth_edit_callback_url_highlighted.png | Bin 0 -> 68383 bytes doc/integration/jenkins.md | 129 ++ doc/integration/jenkins_deprecated.md | 53 + doc/integration/jira_development_panel.md | 141 ++ doc/integration/kerberos.md | 315 +++ doc/integration/omniauth.md | 3 + doc/integration/salesforce.md | 79 + doc/integration/saml.md | 324 ++-- doc/integration/ultra_auth.md | 78 + ...corporate_contributor_license_agreement.md | 32 +- ...ndividual_contributor_license_agreement.md | 28 +- doc/license/README.md | 5 + doc/push_rules/push_rules.md | 156 ++ doc/raketasks/backup_restore.md | 56 +- doc/raketasks/cleanup.md | 10 + doc/subscriptions/billing_table.png | Bin 0 -> 28321 bytes doc/subscriptions/index.md | 103 + doc/tools/email.md | 38 + doc/tools/email1.png | Bin 0 -> 9590 bytes doc/tools/email2.png | Bin 0 -> 14902 bytes doc/topics/authentication/index.md | 2 + doc/topics/autodevops/index.md | 41 +- doc/topics/git/troubleshooting_git.md | 27 + .../high-availability/aws/README.md | 2 +- doc/update/10.0-ce-to-ee.md | 5 + doc/update/10.1-ce-to-ee.md | 5 + doc/update/10.2-ce-to-ee.md | 5 + doc/update/10.3-ce-to-ee.md | 5 + doc/update/10.4-ce-to-ee.md | 5 + doc/update/10.5-ce-to-ee.md | 5 + doc/update/10.6-ce-to-ee.md | 5 + doc/update/10.7-ce-to-ee.md | 5 + doc/update/10.8-ce-to-ee.md | 5 + doc/update/11.0-ce-to-ee.md | 5 + doc/update/11.1-ce-to-ee.md | 5 + doc/update/11.2-ce-to-ee.md | 5 + doc/update/11.3-ce-to-ee.md | 5 + doc/update/11.4-ce-to-ee.md | 5 + doc/update/11.5-ce-to-ee.md | 5 + doc/update/11.6-ce-to-ee.md | 5 + doc/update/11.7-ce-to-ee.md | 5 + doc/update/11.8-ce-to-ee.md | 5 + doc/update/6.0-ce-to-ee.md | 5 + doc/update/6.1-ce-to-ee.md | 5 + doc/update/6.2-ce-to-ee.md | 5 + doc/update/6.3-ce-to-ee.md | 5 + doc/update/6.4-ce-to-ee.md | 5 + doc/update/6.5-ce-to-ee.md | 5 + doc/update/6.6-ce-to-ee.md | 5 + doc/update/6.7-ce-to-ee.md | 5 + doc/update/6.8-ce-to-ee.md | 5 + doc/update/6.9-ce-to-ee.md | 5 + doc/update/7.0-ce-to-ee.md | 5 + doc/update/7.1-ce-to-ee.md | 5 + doc/update/7.10-ce-to-ee.md | 5 + doc/update/7.11-ce-to-ee.md | 5 + doc/update/7.12-ce-to-ee.md | 5 + doc/update/7.13-ce-to-ee.md | 5 + doc/update/7.14-ce-to-ee.md | 5 + doc/update/7.3-ce-to-ee.md | 5 + doc/update/7.4-ce-to-ee.md | 5 + doc/update/7.5-ce-to-ee.md | 5 + doc/update/7.6-ce-to-ee.md | 5 + doc/update/7.7-ce-to-ee.md | 5 + doc/update/7.8-ce-to-ee.md | 5 + doc/update/7.9-ce-to-ee.md | 5 + doc/update/8.0-ce-to-ee.md | 5 + doc/update/8.1-ce-to-ee.md | 5 + doc/update/8.10-ce-to-ee.md | 5 + doc/update/8.11-ce-to-ee.md | 5 + doc/update/8.12-ce-to-ee.md | 5 + doc/update/8.13-ce-to-ee.md | 5 + doc/update/8.14-ce-to-ee.md | 5 + doc/update/8.15-ce-to-ee.md | 5 + doc/update/8.16-ce-to-ee.md | 5 + doc/update/8.17-ce-to-ee.md | 5 + doc/update/8.2-ce-to-ee.md | 5 + doc/update/8.3-ce-to-ee.md | 5 + doc/update/8.4-ce-to-ee.md | 5 + doc/update/8.5-ce-to-ee.md | 5 + doc/update/8.6-ce-to-ee.md | 5 + doc/update/8.7-ce-to-ee.md | 5 + doc/update/8.8-ce-to-ee.md | 5 + doc/update/8.9-ce-to-ee.md | 5 + doc/update/9.0-ce-to-ee.md | 5 + doc/update/9.1-ce-to-ee.md | 5 + doc/update/9.2-ce-to-ee.md | 5 + doc/update/9.3-ce-to-ee.md | 5 + doc/update/9.4-ce-to-ee.md | 5 + doc/update/9.5-ce-to-ee.md | 5 + doc/update/mysql_to_postgresql.md | 18 +- doc/update/patch_versions.md | 10 +- doc/update/upgrading_from_ce_to_ee.md | 4 + doc/update/upgrading_from_source.md | 63 +- doc/user/admin_area/geo_nodes.md | 70 + doc/user/admin_area/img/admin_wrench.png | Bin 0 -> 3314 bytes .../admin_area/img/license_admin_area.png | Bin 0 -> 27826 bytes doc/user/admin_area/img/license_details.png | Bin 0 -> 119290 bytes .../img/license_no_license_message.png | Bin 0 -> 5778 bytes doc/user/admin_area/img/license_upload.png | Bin 0 -> 10043 bytes doc/user/admin_area/index.md | 73 +- doc/user/admin_area/license.md | 110 ++ .../settings/account_and_limit_settings.md | 53 + .../settings/continuous_integration.md | 90 +- doc/user/admin_area/settings/email.md | 16 + .../settings/external_authorization.md | 2 +- .../settings/img/additional_minutes.png | Bin 0 -> 32045 bytes .../settings/img/admin_area_group_edit.png | Bin 0 -> 5869 bytes .../settings/img/admin_area_groups.png | Bin 0 -> 12088 bytes .../settings/img/admin_project_quota_view.png | Bin 0 -> 2670 bytes doc/user/admin_area/settings/img/buy_btn.png | Bin 0 -> 26960 bytes .../settings/img/buy_minutes_card.png | Bin 0 -> 29329 bytes .../ci_shared_runners_build_minutes_quota.png | Bin 0 -> 6000 bytes .../settings/img/email_settings.png | Bin 0 -> 53267 bytes .../settings/img/file_template_admin_area.png | Bin 0 -> 5624 bytes .../img/file_template_user_dropdown.png | Bin 0 -> 8067 bytes .../settings/img/group_pipelines_quota.png | Bin 0 -> 7088 bytes .../settings/img/group_quota_view.png | Bin 0 -> 1797 bytes .../settings/img/group_settings.png | Bin 0 -> 3345 bytes .../settings/img/mirror_settings.png | Bin 0 -> 9966 bytes doc/user/admin_area/settings/index.md | 2 + .../settings/instance_template_repository.md | 63 + .../admin_area/settings/usage_statistics.md | 2 + .../visibility_and_access_controls.md | 10 + .../img/container_scanning.png | Bin 0 -> 32549 bytes .../container_scanning/index.md | 204 ++ .../dast/img/dast_all.png | Bin 0 -> 25844 bytes .../dast/img/dast_single.png | Bin 0 -> 69353 bytes doc/user/application_security/dast/index.md | 262 +++ .../img/dependency_scanning.png | Bin 0 -> 16167 bytes .../dependency_scanning/index.md | 225 +++ .../img/create_issue_with_list_hover.png | Bin 0 -> 106954 bytes .../img/interactive_reports.png | Bin 0 -> 23190 bytes doc/user/application_security/img/issue.png | Bin 0 -> 4780 bytes .../img/vulnerability_solution.png | Bin 0 -> 3421 bytes doc/user/application_security/index.md | 104 + .../img/license_management.png | Bin 0 -> 5184 bytes .../img/license_management_decision.png | Bin 0 -> 5981 bytes .../img/license_management_pipeline_tab.png | Bin 0 -> 12115 bytes .../img/license_management_settings.png | Bin 0 -> 13300 bytes .../license_management/index.md | 264 +++ .../application_security/sast/img/sast.png | Bin 0 -> 24876 bytes .../sast/img/security_report.png | Bin 0 -> 38475 bytes doc/user/application_security/sast/index.md | 254 +++ .../security_dashboard/img/dashboard.png | Bin 0 -> 58585 bytes .../img/project_security_dashboard.png | Bin 0 -> 49062 bytes .../security_dashboard/index.md | 103 + .../discussions/img/mr_review_resolve.png | Bin 0 -> 21941 bytes .../discussions/img/mr_review_resolve2.png | Bin 0 -> 9430 bytes .../img/mr_review_second_comment.png | Bin 0 -> 11188 bytes .../img/mr_review_second_comment_added.png | Bin 0 -> 9673 bytes doc/user/discussions/img/mr_review_start.png | Bin 0 -> 23491 bytes .../discussions/img/mr_review_unresolve.png | Bin 0 -> 11302 bytes .../discussions/img/mr_review_unresolve2.png | Bin 0 -> 8976 bytes .../img/pending_review_comment.png | Bin 0 -> 8793 bytes .../img/review_comment_quickactions.png | Bin 0 -> 12392 bytes doc/user/discussions/img/review_preview.png | Bin 0 -> 19769 bytes doc/user/discussions/index.md | 100 +- doc/user/group/clusters/index.md | 36 +- .../img/group_stats_cal.png | Bin 0 -> 2029 bytes .../img/group_stats_graph.png | Bin 0 -> 35400 bytes .../img/group_stats_table.png | Bin 0 -> 8473 bytes .../group/contribution_analytics/index.md | 55 + .../img/group_dependency_proxy.png | Bin 0 -> 40162 bytes doc/user/group/dependency_proxy/index.md | 74 + .../group/epics/img/button_close_epic.png | Bin 0 -> 13850 bytes .../group/epics/img/button_reopen_epic.png | Bin 0 -> 14153 bytes .../group/epics/img/child_epics_roadmap.png | Bin 0 -> 30149 bytes doc/user/group/epics/img/containing_epic.png | Bin 0 -> 159939 bytes doc/user/group/epics/img/epic_view.png | Bin 0 -> 176759 bytes doc/user/group/epics/img/epics_list_view.png | Bin 0 -> 96826 bytes doc/user/group/epics/img/epics_search.png | Bin 0 -> 65963 bytes doc/user/group/epics/img/epics_sort.png | Bin 0 -> 71177 bytes doc/user/group/epics/index.md | 217 +++ .../img/group_file_template_dropdown.png | Bin 0 -> 9519 bytes .../img/group_file_template_settings.png | Bin 0 -> 6217 bytes doc/user/group/img/group_issue_board.png | Bin 0 -> 63528 bytes doc/user/group/img/member_lock.png | Bin 0 -> 3168 bytes doc/user/group/img/membership_lock.png | Bin 4820 -> 0 bytes doc/user/group/index.md | 131 +- .../insights_example_stacked_bar_chart.png | Bin 0 -> 86062 bytes .../img/insights_group_configuration.png | Bin 0 -> 24107 bytes doc/user/group/insights/index.md | 39 + .../img/issues_created_per_month.png | Bin 0 -> 28508 bytes doc/user/group/issues_analytics/index.md | 16 + .../roadmap/img/epics_state_dropdown.png | Bin 0 -> 3702 bytes .../roadmap/img/roadmap_timeline_months.png | Bin 0 -> 7551 bytes .../roadmap/img/roadmap_timeline_quarters.png | Bin 0 -> 7493 bytes .../roadmap/img/roadmap_timeline_weeks.png | Bin 0 -> 8008 bytes doc/user/group/roadmap/img/roadmap_view.png | Bin 0 -> 49774 bytes doc/user/group/roadmap/index.md | 64 + .../group_saml_configuration_information.png | Bin 0 -> 50435 bytes .../saml_sso/img/group_saml_settings.png | Bin 0 -> 89399 bytes doc/user/group/saml_sso/img/scim_advanced.png | Bin 0 -> 21568 bytes .../saml_sso/img/scim_attribute_mapping.png | Bin 0 -> 95420 bytes doc/user/group/saml_sso/img/scim_token.png | Bin 0 -> 154318 bytes .../group/saml_sso/img/unlink_group_saml.png | Bin 0 -> 27077 bytes doc/user/group/saml_sso/index.md | 99 + doc/user/group/saml_sso/scim_setup.md | 102 + doc/user/group/security_dashboard/index.md | 5 + doc/user/group/subgroups/index.md | 2 +- doc/user/index.md | 20 +- doc/user/instance/clusters/index.md | 23 + doc/user/markdown.md | 41 +- ...ndex_operations_dashboard_top_bar_icon.png | Bin 0 -> 3948 bytes ...dex_operations_dashboard_with_projects.png | Bin 0 -> 30837 bytes doc/user/operations_dashboard/index.md | 37 + doc/user/permissions.md | 18 +- doc/user/profile/account/delete_account.md | 2 +- doc/user/profile/index.md | 11 + doc/user/profile/personal_access_tokens.md | 5 +- doc/user/profile/preferences.md | 1 + doc/user/project/canary_deployments.md | 71 + doc/user/project/ci_cd_for_external_repo.md | 5 + .../clusters/img/k8s_cluster_monitoring.png | Bin 0 -> 43150 bytes .../clusters/img/kubernetes_pod_logs.png | Bin 0 -> 147319 bytes .../clusters/img/pod_logs_deploy_board.png | Bin 0 -> 13291 bytes doc/user/project/clusters/index.md | 143 +- .../project/clusters/kubernetes_pod_logs.md | 21 + doc/user/project/clusters/serverless/index.md | 15 - doc/user/project/code_owners.md | 85 + doc/user/project/deploy_boards.md | 132 ++ doc/user/project/description_templates.md | 47 +- doc/user/project/file_lock.md | 107 ++ doc/user/project/img/assignee_lists.png | Bin 0 -> 134635 bytes .../img/deploy_boards_canary_deployments.png | Bin 0 -> 17380 bytes .../img/deploy_boards_kubernetes_label.png | Bin 0 -> 43978 bytes .../img/deploy_boards_landing_page.png | Bin 0 -> 16107 bytes ...description_templates_default_settings.png | Bin 0 -> 26395 bytes doc/user/project/img/file_lock.png | Bin 0 -> 26973 bytes doc/user/project/img/file_lock_folders.png | Bin 0 -> 22900 bytes doc/user/project/img/file_lock_list.png | Bin 0 -> 18243 bytes .../file_lock_merge_request_error_message.png | Bin 0 -> 24573 bytes .../project/img/file_lock_repository_view.png | Bin 0 -> 22947 bytes doc/user/project/img/key_value_labels.png | Bin 0 -> 6208 bytes doc/user/project/img/labels_epic_sidebar.png | Bin 0 -> 47869 bytes .../img/project_security_dashboard.png | Bin 0 -> 49062 bytes ...tected_branches_select_roles_and_users.png | Bin 0 -> 7155 bytes ...d_branches_select_roles_and_users_list.png | Bin 0 -> 7408 bytes .../img/service_desk_confirmation_email.png | Bin 0 -> 24165 bytes .../project/img/service_desk_disabled.png | Bin 0 -> 18654 bytes doc/user/project/img/service_desk_enabled.png | Bin 0 -> 33243 bytes .../img/service_desk_issue_tracker.png | Bin 0 -> 95087 bytes .../project/img/service_desk_nav_item.png | Bin 0 -> 30323 bytes doc/user/project/img/service_desk_reply.png | Bin 0 -> 15186 bytes doc/user/project/img/service_desk_thread.png | Bin 0 -> 60850 bytes doc/user/project/import/gemnasium.md | 102 + .../import/img/gemnasium/connect_github.png | Bin 0 -> 49966 bytes .../import/img/gemnasium/create_project.png | Bin 0 -> 85728 bytes .../import/img/gemnasium/edit_gitlab-ci.png | Bin 0 -> 79052 bytes .../project/import/img/gemnasium/pipeline.png | Bin 0 -> 40872 bytes .../img/gemnasium/project_connected.png | Bin 0 -> 21575 bytes .../project/import/img/gemnasium/report.png | Bin 0 -> 144883 bytes .../import/img/gemnasium/select_project.png | Bin 0 -> 8927 bytes doc/user/project/import/index.md | 29 +- doc/user/project/index.md | 23 +- .../img/insights_example_bar_chart.png | Bin 0 -> 21767 bytes ...insights_example_bar_time_series_chart.png | Bin 0 -> 34068 bytes .../img/insights_example_line_chart.png | Bin 0 -> 120678 bytes .../img/insights_example_pie_chart.png | Bin 0 -> 10889 bytes .../insights_example_stacked_bar_chart.png | Bin 0 -> 81587 bytes .../project/insights/img/project_insights.png | Bin 0 -> 41210 bytes doc/user/project/insights/index.md | 300 +++ .../integrations/custom_issue_tracker.md | 4 +- doc/user/project/integrations/github.md | 48 + .../integrations/gitlab_slack_application.md | 65 + .../integrations/img/github_configuration.png | Bin 0 -> 12515 bytes .../github_status_check_pipeline_update.png | Bin 0 -> 21075 bytes .../img/gitlab_slack_app_landing_page.png | Bin 0 -> 32992 bytes .../img/mattermost_configuration.png | Bin 101151 -> 67672 bytes .../img/prometheus_add_metric.png | Bin 0 -> 53571 bytes .../integrations/img/prometheus_alert.png | Bin 0 -> 24452 bytes .../img/prometheus_service_alerts.png | Bin 0 -> 40727 bytes .../integrations/img/slack_configuration.png | Bin 92179 -> 64873 bytes doc/user/project/integrations/mattermost.md | 2 + doc/user/project/integrations/mock_ci.md | 2 +- .../project/integrations/project_services.md | 8 +- doc/user/project/integrations/prometheus.md | 81 +- .../prometheus_library/kubernetes.md | 24 +- .../integrations/slack_slash_commands.md | 13 +- doc/user/project/issue_board.md | 4 +- doc/user/project/issues/create_new_issue.md | 22 +- doc/user/project/issues/csv_export.md | 77 + ...e_issue_from_group_level_issue_tracker.png | Bin 0 -> 29358 bytes .../project/issues/img/csv_export_button.png | Bin 0 -> 7383 bytes .../project/issues/img/csv_export_modal.png | Bin 0 -> 16825 bytes .../project/issues/img/multiple_assignees.gif | Bin 0 -> 877551 bytes .../img/multiple_assignees_for_issues.png | Bin 0 -> 39710 bytes .../project/issues/img/related_issues_add.png | Bin 0 -> 12900 bytes .../issues/img/related_issues_remove.png | Bin 0 -> 5450 bytes ...project_from_group_level_issue_tracker.png | Bin 0 -> 23706 bytes doc/user/project/issues/index.md | 6 +- ...onalities.md => issue_data_and_actions.md} | 6 +- .../issues/multiple_assignees_for_issues.md | 41 + doc/user/project/issues/related_issues.md | 45 + doc/user/project/labels.md | 57 +- doc/user/project/maven_packages.md | 5 + .../browser_performance_testing.md | 54 + .../project/merge_requests/code_quality.md | 82 + .../merge_requests/code_quality_diff.md | 6 + .../merge_requests/container_scanning.md | 5 + doc/user/project/merge_requests/dast.md | 5 + .../merge_requests/dependency_scanning.md | 5 + .../img/approvals_can_override.png | Bin 0 -> 7634 bytes .../img/approvals_premium_mr_widget.png | Bin 0 -> 76524 bytes .../img/approvals_premium_project_edit.png | Bin 0 -> 47371 bytes .../img/approvals_remove_on_push.png | Bin 0 -> 6551 bytes .../img/approvals_starter_project_edit.png | Bin 0 -> 52442 bytes .../img/approvals_starter_project_empty.png | Bin 0 -> 50820 bytes .../project/merge_requests/img/approve.png | Bin 0 -> 19329 bytes .../img/approve_additionally.png | Bin 0 -> 22700 bytes .../img/browser_performance_testing.png | Bin 0 -> 52100 bytes .../merge_requests/img/code_quality.gif | Bin 0 -> 2617453 bytes .../merge_requests/img/container_scanning.png | Bin 0 -> 32549 bytes .../img/create-issue-with-list-hover.png | Bin 0 -> 106954 bytes .../project/merge_requests/img/dast_all.png | Bin 0 -> 25844 bytes .../merge_requests/img/dast_single.png | Bin 0 -> 69353 bytes .../img/dependency_scanning.png | Bin 0 -> 16167 bytes .../img/filter_approver_merge_requests.png | Bin 0 -> 90764 bytes .../img/interactive_reports.png | Bin 0 -> 23190 bytes .../merge_requests/img/license_management.png | Bin 0 -> 5184 bytes .../img/license_management_decision.png | Bin 0 -> 5981 bytes .../img/license_management_pipeline_tab.png | Bin 0 -> 12115 bytes .../img/license_management_settings.png | Bin 0 -> 13300 bytes ...e_assignees_for_merge_requests_sidebar.png | Bin 0 -> 20867 bytes .../merge_requests/img/remove_approval.png | Bin 0 -> 21902 bytes doc/user/project/merge_requests/img/sast.png | Bin 0 -> 24876 bytes .../merge_requests/img/security_report.png | Bin 0 -> 38475 bytes .../img/vulnerability_solution.png | Bin 0 -> 3421 bytes doc/user/project/merge_requests/index.md | 116 +- .../merge_requests/license_management.md | 5 + .../merge_requests/merge_request_approvals.md | 319 ++++ doc/user/project/merge_requests/sast.md | 5 + .../project/merge_requests/sast_docker.md | 5 + .../project/milestones/burndown_charts.md | 70 + .../project/milestones/img/burndown_chart.png | Bin 0 -> 48403 bytes doc/user/project/milestones/index.md | 37 +- .../project/new_ci_build_permissions_model.md | 3 +- doc/user/project/operations/feature_flags.md | 177 ++ .../operations/img/feature_flags_list.png | Bin 0 -> 14963 bytes .../project/operations/img/specs_list.png | Bin 0 -> 43574 bytes doc/user/project/operations/index.md | 4 +- doc/user/project/operations/tracing.md | 34 + .../packages/img/maven_package_view.png | Bin 0 -> 16105 bytes .../project/packages/img/npm_package_view.png | Bin 0 -> 24443 bytes doc/user/project/packages/maven.md | 5 + doc/user/project/packages/maven_packages.md | 5 + doc/user/project/packages/maven_repository.md | 341 ++++ doc/user/project/packages/npm_registry.md | 120 ++ .../pages/getting_started_part_four.md | 2 +- .../project/pages/getting_started_part_one.md | 89 +- .../pages/getting_started_part_three.md | 7 +- .../project/pages/getting_started_part_two.md | 9 +- doc/user/project/pages/img/pages_remove.png | Bin 3777 -> 0 bytes doc/user/project/pages/img/remove_pages.png | Bin 0 -> 58035 bytes doc/user/project/pages/index.md | 89 +- doc/user/project/pages/introduction.md | 352 +--- .../pages/lets_encrypt_for_gitlab_pages.md | 4 +- .../img/pipeline_schedule_variables.png | Bin 5360 -> 17292 bytes .../img/pipeline_schedules_new_form.png | Bin 23290 -> 62141 bytes doc/user/project/pipelines/job_artifacts.md | 3 +- doc/user/project/pipelines/schedules.md | 2 +- doc/user/project/pipelines/settings.md | 2 +- doc/user/project/protected_branches.md | 24 +- doc/user/project/quick_actions.md | 11 +- .../repository/gpg_signed_commits/index.md | 2 +- .../repository/img/download_source_code.png | Bin 0 -> 61467 bytes doc/user/project/repository/index.md | 31 +- .../reducing_the_repo_size_using_git.md | 6 + doc/user/project/security_dashboard.md | 5 + doc/user/project/service_desk.md | 124 ++ doc/user/project/settings/index.md | 8 +- doc/user/project/web_ide/index.md | 118 ++ doc/user/search/advanced_global_search.md | 75 + doc/user/search/advanced_search_syntax.md | 69 + .../search/img/advanced_global_search.png | Bin 0 -> 15017 bytes doc/user/search/img/multiple_assignees.png | Bin 0 -> 18897 bytes doc/user/search/index.md | 21 + doc/workflow/README.md | 6 + doc/workflow/ff_merge.md | 5 + doc/workflow/git_annex.md | 238 +++ doc/workflow/git_lfs.md | 5 + .../img/copy_ssh_public_key_button.png | Bin 0 -> 11225 bytes doc/workflow/issue_weight.md | 22 + doc/workflow/issue_weight/issue.png | Bin 0 -> 69564 bytes .../lfs/images/git-annex-branches.png | Bin 0 -> 32164 bytes .../lfs/migrate_from_git_annex_to_git_lfs.md | 261 +++ doc/workflow/merge_request_approvals.md | 5 + doc/workflow/notifications.md | 27 +- doc/workflow/rebase_before_merge.md | 5 + doc/workflow/repository_mirroring.md | 23 +- doc/workflow/shortcuts.md | 8 + doc/workflow/time_tracking.md | 2 +- doc/workflow/todos.md | 19 +- jest.config.js | 5 + lib/api/api.rb | 2 +- lib/api/branches.rb | 4 +- lib/api/discussions.rb | 6 +- lib/api/entities.rb | 46 +- lib/api/environments.rb | 15 + lib/api/group_variables.rb | 2 + lib/api/helpers.rb | 4 - lib/api/import_github.rb | 4 + lib/api/internal.rb | 2 + lib/api/issues.rb | 11 +- lib/api/merge_requests.rb | 5 +- lib/api/namespaces.rb | 2 + lib/api/pipeline_schedules.rb | 2 + lib/api/pipelines.rb | 15 +- lib/api/project_clusters.rb | 1 + lib/api/projects.rb | 6 +- lib/api/releases.rb | 16 +- lib/api/runner.rb | 4 +- lib/api/settings.rb | 6 + lib/api/triggers.rb | 21 - lib/api/variables.rb | 2 + lib/api/wikis.rb | 3 +- lib/banzai/color_parser.rb | 20 +- lib/banzai/filter/autolink_filter.rb | 13 +- lib/banzai/filter/front_matter_filter.rb | 2 +- lib/banzai/filter/label_reference_filter.rb | 6 +- lib/banzai/filter/relative_link_filter.rb | 2 +- lib/banzai/filter/sanitization_filter.rb | 33 +- lib/banzai/filter/spaced_link_filter.rb | 2 +- lib/banzai/filter/table_of_contents_filter.rb | 3 +- lib/banzai/filter/wiki_link_filter.rb | 15 +- .../filter/wiki_link_filter/rewriter.rb | 8 - .../reference_parser/merge_request_parser.rb | 2 +- lib/declarative_policy/preferred_scope.rb | 1 - lib/extracts_path.rb | 3 + lib/gitlab.rb | 10 +- lib/gitlab/auth.rb | 40 +- lib/gitlab/auth/result.rb | 1 - lib/gitlab/background_migration.rb | 28 +- .../migrate_stage_index.rb | 4 +- ...populate_untracked_uploads_dependencies.rb | 4 +- .../prepare_untracked_uploads.rb | 2 +- .../bitbucket_server_import/importer.rb | 1 + lib/gitlab/checks/branch_check.rb | 6 +- lib/gitlab/ci/build/artifacts/metadata.rb | 4 +- .../prerequisite/kubernetes_namespace.rb | 1 + lib/gitlab/ci/config.rb | 8 +- lib/gitlab/ci/config/entry/environment.rb | 2 + lib/gitlab/ci/config/external/file/local.rb | 4 +- lib/gitlab/ci/config/external/processor.rb | 3 +- lib/gitlab/ci/pipeline/chain/command.rb | 1 - lib/gitlab/ci/pipeline/chain/skip.rb | 2 +- .../pipeline/expression/lexeme/not_equals.rb | 28 + .../pipeline/expression/lexeme/not_matches.rb | 31 + lib/gitlab/ci/pipeline/expression/lexer.rb | 4 +- .../ci/pipeline/expression/statement.rb | 13 +- lib/gitlab/ci/status/build/failed_allowed.rb | 2 +- lib/gitlab/ci/status/stage/factory.rb | 3 +- lib/gitlab/ci/status/stage/play_manual.rb | 43 + lib/gitlab/ci/status/success_warning.rb | 2 +- .../templates/Android-Fastlane.gitlab-ci.yml | 1 + lib/gitlab/ci/templates/Android.gitlab-ci.yml | 4 - .../ci/templates/Auto-DevOps.gitlab-ci.yml | 1 + lib/gitlab/ci/templates/Chef.gitlab-ci.yml | 6 +- lib/gitlab/ci/templates/Go.gitlab-ci.yml | 1 + .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 5 +- lib/gitlab/ci/templates/Mono.gitlab-ci.yml | 1 + .../ci/templates/OpenShift.gitlab-ci.yml | 2 + lib/gitlab/ci/templates/Packer.gitlab-ci.yml | 2 + .../ci/templates/Pages/Hexo.gitlab-ci.yml | 7 +- .../Security/Container-Scanning.gitlab-ci.yml | 2 +- .../ci/templates/Security/DAST.gitlab-ci.yml | 4 +- .../Dependency-Scanning.gitlab-ci.yml | 27 +- .../ci/templates/Security/SAST.gitlab-ci.yml | 33 +- .../ci/templates/Serverless.gitlab-ci.yml | 1 + lib/gitlab/ci/templates/Swift.gitlab-ci.yml | 2 + .../ci/templates/Terraform.gitlab-ci.yml | 1 + lib/gitlab/ci/templates/dotNET-Core.yml | 107 ++ .../ci/templates/iOS-Fastlane.gitlab-ci.yml | 2 + lib/gitlab/ci/trace.rb | 14 +- lib/gitlab/content_disposition.rb | 4 +- lib/gitlab/danger/helper.rb | 11 +- lib/gitlab/data_builder/deployment.rb | 25 + lib/gitlab/data_builder/push.rb | 12 +- .../discussions_diff/highlight_cache.rb | 13 + lib/gitlab/file_detector.rb | 1 + lib/gitlab/git/object_pool.rb | 4 + lib/gitlab/git/pre_receive_error.rb | 2 +- lib/gitlab/git/repository.rb | 68 +- lib/gitlab/git/repository_cleaner.rb | 4 +- lib/gitlab/git/wiki.rb | 24 +- lib/gitlab/git_access.rb | 6 +- lib/gitlab/gitaly_client.rb | 30 +- lib/gitlab/gitaly_client/blob_service.rb | 4 +- lib/gitlab/gitaly_client/cleanup_service.rb | 33 +- lib/gitlab/gitaly_client/commit_service.rb | 2 +- .../gitaly_client/object_pool_service.rb | 9 + lib/gitlab/gitaly_client/operation_service.rb | 58 + lib/gitlab/gitaly_client/ref_service.rb | 6 + .../gitaly_client/repository_service.rb | 10 +- lib/gitlab/gitaly_client/wiki_service.rb | 23 +- lib/gitlab/github_import/client.rb | 4 +- .../github_import/importer/issue_importer.rb | 1 + .../importer/pull_request_importer.rb | 1 + .../github_import/representation/diff_note.rb | 2 +- .../github_import/representation/note.rb | 2 +- lib/gitlab/gl_repository.rb | 12 +- lib/gitlab/gl_repository/repo_type.rb | 2 +- lib/gitlab/gon_helper.rb | 7 +- .../loggers/correlation_id_logger.rb | 2 +- .../authorize/authorize_field_service.rb | 6 +- .../{tracing.rb => generic_tracing.rb} | 22 +- lib/gitlab/health_checks/metric.rb | 1 - lib/gitlab/health_checks/result.rb | 1 - lib/gitlab/hook_data/issuable_builder.rb | 6 +- lib/gitlab/hook_data/merge_request_builder.rb | 5 +- .../web_upload_strategy.rb | 2 +- lib/gitlab/import_export/import_export.yml | 1 + .../import_export/project_tree_restorer.rb | 2 +- lib/gitlab/import_export/relation_factory.rb | 3 +- lib/gitlab/json_logger.rb | 2 +- lib/gitlab/kubernetes/helm/api.rb | 8 + lib/gitlab/kubernetes/helm/delete_command.rb | 55 + lib/gitlab/kubernetes/namespace.rb | 29 + lib/gitlab/legacy_github_import/client.rb | 2 +- .../legacy_github_import/project_creator.rb | 2 +- .../legacy_github_import/release_formatter.rb | 1 + lib/gitlab/metrics/dashboard/base_service.rb | 73 + lib/gitlab/metrics/dashboard/finder.rb | 51 + lib/gitlab/metrics/dashboard/processor.rb | 46 + .../dashboard/project_dashboard_service.rb | 47 + .../metrics/dashboard/stages/base_stage.rb | 58 + .../stages/common_metrics_inserter.rb | 23 + .../stages/project_metrics_inserter.rb | 106 + lib/gitlab/metrics/dashboard/stages/sorter.rb | 34 + .../dashboard/system_dashboard_service.rb | 47 + lib/gitlab/metrics/metric.rb | 2 +- lib/gitlab/middleware/correlation_id.rb | 2 +- lib/gitlab/middleware/read_only.rb | 2 +- lib/gitlab/middleware/release_env.rb | 1 - lib/gitlab/namespaced_session_store.rb | 22 + lib/gitlab/octokit/middleware.rb | 23 + lib/gitlab/omniauth_initializer.rb | 21 +- lib/gitlab/optimistic_locking.rb | 2 +- .../performance_bar/peek_query_tracker.rb | 6 +- lib/gitlab/profiler.rb | 6 +- lib/gitlab/prometheus/query_variables.rb | 6 +- lib/gitlab/push_options.rb | 2 +- lib/gitlab/quick_actions/commit_actions.rb | 9 +- lib/gitlab/quick_actions/issuable_actions.rb | 32 +- lib/gitlab/quick_actions/issue_actions.rb | 33 +- .../issue_and_merge_request_actions.rb | 46 +- .../spend_time_and_date_separator.rb | 2 +- lib/gitlab/sanitizers/svg.rb | 2 +- lib/gitlab/sentry.rb | 2 +- lib/gitlab/session.rb | 27 + lib/gitlab/sherlock/middleware.rb | 4 +- lib/gitlab/sherlock/query.rb | 2 +- lib/gitlab/sidekiq_config.rb | 4 +- .../correlation_injector.rb | 4 +- .../sidekiq_middleware/correlation_logger.rb | 4 +- lib/gitlab/slash_commands/result.rb | 1 - lib/gitlab/sql/pattern.rb | 2 +- lib/gitlab/template/base_template.rb | 6 + lib/gitlab/tracing/common.rb | 69 - lib/gitlab/tracing/factory.rb | 61 - lib/gitlab/tracing/grpc_interceptor.rb | 54 - lib/gitlab/tracing/jaeger_factory.rb | 97 - lib/gitlab/tracing/rack_middleware.rb | 46 - .../tracing/rails/action_view_subscriber.rb | 75 - .../tracing/rails/active_record_subscriber.rb | 49 - lib/gitlab/tracing/rails/rails_common.rb | 24 - .../tracing/sidekiq/client_middleware.rb | 26 - .../tracing/sidekiq/server_middleware.rb | 26 - lib/gitlab/tracing/sidekiq/sidekiq_common.rb | 22 - lib/gitlab/url_blocker.rb | 26 +- lib/gitlab/url_builder.rb | 4 + lib/gitlab/url_sanitizer.rb | 4 + lib/gitlab/usage_data.rb | 2 + lib/gitlab/user_extractor.rb | 2 +- lib/gitlab/utils/sanitize_node_link.rb | 61 + lib/gitlab/visibility_level.rb | 2 +- lib/gitlab/workhorse.rb | 65 +- lib/haml_lint/inline_javascript.rb | 1 - lib/peek/views/tracing.rb | 6 +- lib/quality/kubernetes_client.rb | 2 + lib/quality/seeders/issues.rb | 58 + lib/support/init.d/gitlab | 37 +- lib/support/init.d/gitlab.default.example | 3 + lib/system_check/app/git_version_check.rb | 2 +- lib/tasks/gemojione.rake | 2 +- lib/tasks/gitlab/seed.rake | 34 + lib/tasks/gitlab/update_templates.rake | 2 +- locale/ar_SA/gitlab.po | 38 +- locale/bg/gitlab.po | 38 +- locale/bn_BD/gitlab.po | 38 +- locale/bn_IN/gitlab.po | 38 +- locale/ca_ES/gitlab.po | 38 +- locale/cs_CZ/gitlab.po | 38 +- locale/cy_GB/gitlab.po | 38 +- locale/da_DK/gitlab.po | 38 +- locale/de/gitlab.po | 38 +- locale/el_GR/gitlab.po | 38 +- locale/eo/gitlab.po | 38 +- locale/es/gitlab.po | 35 +- locale/et_EE/gitlab.po | 38 +- locale/fil_PH/gitlab.po | 38 +- locale/fr/gitlab.po | 38 +- locale/gitlab.pot | 1701 ++++++++++++++++- locale/gl_ES/gitlab.po | 38 +- locale/he_IL/gitlab.po | 38 +- locale/hi_IN/gitlab.po | 38 +- locale/hr_HR/gitlab.po | 38 +- locale/hu_HU/gitlab.po | 38 +- locale/id_ID/gitlab.po | 38 +- locale/it/gitlab.po | 38 +- locale/ja/gitlab.po | 92 +- locale/ka_GE/gitlab.po | 38 +- locale/ko/gitlab.po | 38 +- locale/mn_MN/gitlab.po | 38 +- locale/nb_NO/gitlab.po | 38 +- locale/nl_NL/gitlab.po | 38 +- locale/pa_IN/gitlab.po | 38 +- locale/pl_PL/gitlab.po | 38 +- locale/pt_BR/gitlab.po | 38 +- locale/pt_PT/gitlab.po | 38 +- locale/ro_RO/gitlab.po | 38 +- locale/ru/gitlab.po | 38 +- locale/sk_SK/gitlab.po | 38 +- locale/sr_CS/gitlab.po | 38 +- locale/sr_SP/gitlab.po | 38 +- locale/sv_SE/gitlab.po | 38 +- locale/sw_KE/gitlab.po | 38 +- locale/tr_TR/gitlab.po | 38 +- locale/uk/gitlab.po | 105 +- locale/zh_CN/gitlab.po | 38 +- locale/zh_HK/gitlab.po | 38 +- locale/zh_TW/gitlab.po | 38 +- package.json | 11 +- qa/Gemfile | 2 +- qa/Gemfile.lock | 4 +- qa/README.md | 18 +- qa/qa.rb | 3 + qa/qa/ce/strategy.rb | 2 + qa/qa/git/location.rb | 2 + qa/qa/git/repository.rb | 2 +- qa/qa/page/admin/menu.rb | 9 + .../settings/component/performance_bar.rb | 27 + .../admin/settings/metrics_and_profiling.rb | 23 + qa/qa/page/base.rb | 8 +- qa/qa/page/component/dropzone.rb | 2 + qa/qa/page/component/note.rb | 2 +- qa/qa/page/component/select2.rb | 2 + qa/qa/page/dashboard/projects.rb | 2 + qa/qa/page/element.rb | 2 + qa/qa/page/file/form.rb | 2 + qa/qa/page/file/shared/commit_message.rb | 2 + qa/qa/page/file/show.rb | 2 + qa/qa/page/group/new.rb | 2 + qa/qa/page/issuable/sidebar.rb | 2 + qa/qa/page/label/new.rb | 2 + qa/qa/page/layout/banner.rb | 2 + qa/qa/page/layout/performance_bar.rb | 35 + qa/qa/page/main/login.rb | 2 + qa/qa/page/main/oauth.rb | 2 + qa/qa/page/mattermost/login.rb | 2 + qa/qa/page/mattermost/main.rb | 2 + qa/qa/page/merge_request/new.rb | 4 +- qa/qa/page/profile/personal_access_tokens.rb | 2 + qa/qa/page/project/activity.rb | 2 + qa/qa/page/project/branches/show.rb | 16 +- qa/qa/page/project/fork/new.rb | 2 + qa/qa/page/project/import/github.rb | 2 + qa/qa/page/project/issue/index.rb | 2 + qa/qa/page/project/issue/new.rb | 2 + qa/qa/page/project/milestone/index.rb | 2 + qa/qa/page/project/milestone/new.rb | 2 + qa/qa/page/project/new.rb | 2 + .../page/project/operations/kubernetes/add.rb | 2 + .../operations/kubernetes/add_existing.rb | 2 + .../project/operations/kubernetes/index.rb | 2 + .../project/operations/kubernetes/show.rb | 2 + qa/qa/page/project/pipeline/index.rb | 2 + qa/qa/page/project/pipeline/show.rb | 2 + qa/qa/page/project/settings/advanced.rb | 22 +- qa/qa/page/project/settings/ci_cd.rb | 4 +- qa/qa/page/project/settings/ci_variables.rb | 2 + qa/qa/page/project/settings/common.rb | 10 +- qa/qa/page/project/settings/deploy_keys.rb | 2 + qa/qa/page/project/settings/deploy_tokens.rb | 2 + qa/qa/page/project/settings/main.rb | 20 + qa/qa/page/project/settings/merge_request.rb | 2 + .../project/settings/protected_branches.rb | 2 + qa/qa/page/project/settings/repository.rb | 2 + qa/qa/page/project/settings/runners.rb | 2 + qa/qa/page/project/wiki/edit.rb | 2 + qa/qa/page/settings/common.rb | 2 + qa/qa/page/validator.rb | 2 + qa/qa/page/view.rb | 2 + qa/qa/runtime/address.rb | 2 + qa/qa/runtime/api/client.rb | 2 + qa/qa/runtime/api/request.rb | 2 + qa/qa/runtime/browser.rb | 2 + qa/qa/runtime/key/base.rb | 2 + qa/qa/runtime/key/ecdsa.rb | 3 +- qa/qa/runtime/key/ed25519.rb | 3 +- qa/qa/runtime/key/rsa.rb | 2 + qa/qa/runtime/namespace.rb | 2 + qa/qa/runtime/release.rb | 2 + qa/qa/runtime/scenario.rb | 2 + qa/qa/runtime/user.rb | 2 + qa/qa/scenario/actable.rb | 2 + qa/qa/scenario/bootable.rb | 2 + qa/qa/scenario/template.rb | 2 + qa/qa/scenario/test/instance/all.rb | 2 + qa/qa/scenario/test/instance/smoke.rb | 2 + qa/qa/scenario/test/integration/github.rb | 2 + qa/qa/scenario/test/integration/kubernetes.rb | 2 + qa/qa/scenario/test/integration/mattermost.rb | 2 + qa/qa/scenario/test/sanity/selectors.rb | 2 + qa/qa/service/kubernetes_cluster.rb | 2 + qa/qa/service/omnibus.rb | 2 + qa/qa/service/runner.rb | 2 + qa/qa/service/shellout.rb | 2 + .../api/3_create/repository/files_spec.rb | 2 + .../browser_ui/1_manage/login/log_in_spec.rb | 6 +- .../login/log_into_gitlab_via_ldap_spec.rb | 3 - .../1_manage/login/login_via_oauth_spec.rb | 3 +- .../1_manage/login/register_spec.rb | 3 - .../view_merge_request_diff_patch_spec.rb | 3 +- .../repository/add_file_template_spec.rb | 3 +- .../add_list_delete_branches_spec.rb | 9 +- .../wiki/create_edit_clone_push_wiki_spec.rb | 10 +- .../ci_variable/add_ci_variable_spec.rb | 3 +- .../create_project_with_auto_devops_spec.rb | 4 +- .../non_devops/performance_bar_spec.rb | 34 + qa/qa/specs/helpers/quarantine.rb | 16 +- qa/qa/specs/runner.rb | 2 + qa/qa/support/api.rb | 2 + qa/qa/support/page/logging.rb | 22 +- qa/qa/support/waiter.rb | 4 +- qa/qa/vendor/github/page/login.rb | 4 +- qa/spec/git/location_spec.rb | 2 + qa/spec/git/repository_spec.rb | 11 + qa/spec/helpers/stub_env.rb | 2 + qa/spec/page/base_spec.rb | 2 + qa/spec/page/element_spec.rb | 2 + qa/spec/page/logging_spec.rb | 9 +- qa/spec/page/validator_spec.rb | 2 + qa/spec/page/view_spec.rb | 2 + qa/spec/runtime/api/client_spec.rb | 2 + qa/spec/runtime/api/request_spec.rb | 2 + qa/spec/runtime/key/ecdsa_spec.rb | 2 + qa/spec/runtime/key/ed25519_spec.rb | 2 + qa/spec/runtime/key/rsa_spec.rb | 2 + qa/spec/runtime/release_spec.rb | 2 + qa/spec/runtime/scenario_spec.rb | 2 + qa/spec/scenario/actable_spec.rb | 2 + qa/spec/scenario/bootable_spec.rb | 2 + qa/spec/scenario/test/instance/all_spec.rb | 2 + qa/spec/scenario/test/instance/smoke_spec.rb | 2 + .../scenario/test/sanity/framework_spec.rb | 2 + .../scenario/test/sanity/selectors_spec.rb | 2 + qa/spec/spec_helper.rb | 4 +- qa/spec/specs/runner_spec.rb | 4 +- .../cop/active_record_association_reload.rb | 21 + rubocop/cop/gitlab/finder_with_find_by.rb | 4 +- rubocop/qa_helpers.rb | 2 +- rubocop/rubocop.rb | 2 +- rubocop/spec_helpers.rb | 6 +- scripts/lint-doc.sh | 2 +- scripts/review_apps/review-apps.sh | 185 +- scripts/utils.sh | 136 +- security.txt | 6 + spec/bin/changelog_spec.rb | 2 + spec/config/mail_room_spec.rb | 2 + spec/config/object_store_settings_spec.rb | 2 + spec/config/settings_spec.rb | 2 + .../abuse_reports_controller_spec.rb | 2 + .../application_settings_controller_spec.rb | 2 + .../admin/applications_controller_spec.rb | 2 + .../clusters/applications_controller_spec.rb | 149 ++ .../admin/clusters_controller_spec.rb | 540 ++++++ .../admin/dashboard_controller_spec.rb | 2 + .../admin/gitaly_servers_controller_spec.rb | 2 + .../admin/groups_controller_spec.rb | 2 + .../admin/health_check_controller_spec.rb | 2 + .../admin/hooks_controller_spec.rb | 2 + .../admin/identities_controller_spec.rb | 2 + .../admin/impersonations_controller_spec.rb | 2 + .../admin/projects_controller_spec.rb | 2 + .../admin/runners_controller_spec.rb | 2 + .../admin/services_controller_spec.rb | 2 + .../admin/spam_logs_controller_spec.rb | 2 + .../admin/users_controller_spec.rb | 2 + .../application_controller_spec.rb | 3 +- .../autocomplete_controller_spec.rb | 2 + .../boards/issues_controller_spec.rb | 2 + .../boards/lists_controller_spec.rb | 2 + .../concerns/checks_collaboration_spec.rb | 2 + .../concerns/continue_params_spec.rb | 2 + ...er_with_cross_project_access_check_spec.rb | 2 + .../enforces_admin_authentication_spec.rb | 40 + spec/controllers/concerns/group_tree_spec.rb | 2 + .../concerns/import_url_params_spec.rb | 56 + .../concerns/internal_redirect_spec.rb | 2 + .../concerns/issuable_collections_spec.rb | 2 + spec/controllers/concerns/lfs_request_spec.rb | 2 + .../concerns/project_unauthorized_spec.rb | 2 + .../concerns/send_file_upload_spec.rb | 2 + .../dashboard/groups_controller_spec.rb | 2 + .../dashboard/labels_controller_spec.rb | 2 + .../dashboard/milestones_controller_spec.rb | 2 + .../dashboard/projects_controller_spec.rb | 2 + .../dashboard/todos_controller_spec.rb | 2 + spec/controllers/dashboard_controller_spec.rb | 2 + .../explore/groups_controller_spec.rb | 2 + .../explore/projects_controller_spec.rb | 2 + .../authorizations_controller_spec.rb | 2 + .../groups/avatars_controller_spec.rb | 2 + .../groups/boards_controller_spec.rb | 2 + .../groups/children_controller_spec.rb | 2 + .../groups/clusters_controller_spec.rb | 27 + .../groups/group_members_controller_spec.rb | 2 + .../groups/labels_controller_spec.rb | 2 + .../groups/milestones_controller_spec.rb | 2 + .../groups/runners_controller_spec.rb | 2 + .../groups/settings/ci_cd_controller_spec.rb | 2 + .../groups/shared_projects_controller_spec.rb | 2 + .../groups/uploads_controller_spec.rb | 2 + .../groups/variables_controller_spec.rb | 2 + spec/controllers/groups_controller_spec.rb | 2 + .../health_check_controller_spec.rb | 2 + spec/controllers/health_controller_spec.rb | 2 + spec/controllers/help_controller_spec.rb | 2 + .../import/bitbucket_controller_spec.rb | 2 + .../bitbucket_server_controller_spec.rb | 2 + .../import/fogbugz_controller_spec.rb | 40 + .../import/gitea_controller_spec.rb | 2 + .../import/github_controller_spec.rb | 2 + .../import/gitlab_controller_spec.rb | 2 + .../import/gitlab_projects_controller_spec.rb | 2 + .../import/google_code_controller_spec.rb | 2 + spec/controllers/invites_controller_spec.rb | 2 + .../omniauth_callbacks_controller_spec.rb | 4 +- spec/controllers/metrics_controller_spec.rb | 2 + .../notification_settings_controller_spec.rb | 2 + .../oauth/applications_controller_spec.rb | 2 + .../oauth/authorizations_controller_spec.rb | 2 + .../omniauth_callbacks_controller_spec.rb | 12 +- spec/controllers/passwords_controller_spec.rb | 2 + .../profiles/accounts_controller_spec.rb | 2 + .../profiles/avatars_controller_spec.rb | 2 + .../profiles/emails_controller_spec.rb | 2 + .../profiles/keys_controller_spec.rb | 2 + .../profiles/notifications_controller_spec.rb | 2 + .../personal_access_tokens_controller_spec.rb | 2 + .../profiles/preferences_controller_spec.rb | 2 + .../two_factor_auths_controller_spec.rb | 2 + spec/controllers/profiles_controller_spec.rb | 2 + .../projects/artifacts_controller_spec.rb | 2 + .../projects/avatars_controller_spec.rb | 2 + .../projects/badges_controller_spec.rb | 130 +- .../projects/blame_controller_spec.rb | 2 + .../projects/blob_controller_spec.rb | 2 + .../projects/boards_controller_spec.rb | 2 + .../projects/branches_controller_spec.rb | 2 + .../projects/ci/lints_controller_spec.rb | 2 + .../clusters/applications_controller_spec.rb | 62 + .../projects/clusters_controller_spec.rb | 35 +- .../projects/commit_controller_spec.rb | 2 + .../projects/commits_controller_spec.rb | 2 + .../projects/compare_controller_spec.rb | 4 +- .../cycle_analytics_controller_spec.rb | 2 + .../projects/deploy_keys_controller_spec.rb | 2 + .../projects/deployments_controller_spec.rb | 2 + .../projects/discussions_controller_spec.rb | 2 + .../prometheus_api_controller_spec.rb | 33 + .../projects/environments_controller_spec.rb | 124 +- .../projects/find_file_controller_spec.rb | 2 + .../projects/forks_controller_spec.rb | 2 + .../projects/graphs_controller_spec.rb | 2 + .../projects/group_links_controller_spec.rb | 2 + .../projects/hooks_controller_spec.rb | 2 + .../projects/imports_controller_spec.rb | 17 + .../projects/issues_controller_spec.rb | 2 + .../projects/jobs_controller_spec.rb | 1 + .../projects/labels_controller_spec.rb | 2 + .../projects/mattermosts_controller_spec.rb | 2 + .../conflicts_controller_spec.rb | 2 + .../creations_controller_spec.rb | 2 + .../merge_requests/diffs_controller_spec.rb | 2 + .../merge_requests_controller_spec.rb | 106 +- .../projects/milestones_controller_spec.rb | 2 + .../projects/mirrors_controller_spec.rb | 4 +- .../projects/notes_controller_spec.rb | 2 + .../projects/pages_controller_spec.rb | 2 + .../projects/pages_domains_controller_spec.rb | 2 + .../pipeline_schedules_controller_spec.rb | 5 +- .../projects/pipelines_controller_spec.rb | 2 + .../pipelines_settings_controller_spec.rb | 2 + .../project_members_controller_spec.rb | 2 + .../prometheus/metrics_controller_spec.rb | 2 + .../protected_branches_controller_spec.rb | 2 + .../protected_tags_controller_spec.rb | 2 + .../projects/raw_controller_spec.rb | 2 + .../projects/refs_controller_spec.rb | 2 + .../registry/repositories_controller_spec.rb | 2 + .../projects/registry/tags_controller_spec.rb | 2 + .../projects/repositories_controller_spec.rb | 2 + .../projects/runners_controller_spec.rb | 2 + .../projects/services_controller_spec.rb | 2 + .../settings/ci_cd_controller_spec.rb | 2 + .../settings/integrations_controller_spec.rb | 2 + .../settings/operations_controller_spec.rb | 226 ++- .../settings/repository_controller_spec.rb | 2 + .../projects/snippets_controller_spec.rb | 2 + .../projects/stages_controller_spec.rb | 72 + .../projects/tags/releases_controller_spec.rb | 61 +- .../projects/tags_controller_spec.rb | 2 + .../projects/templates_controller_spec.rb | 2 + .../projects/todos_controller_spec.rb | 2 + .../projects/tree_controller_spec.rb | 22 + .../projects/uploads_controller_spec.rb | 2 + .../projects/variables_controller_spec.rb | 2 + .../projects/wikis_controller_spec.rb | 24 +- spec/controllers/projects_controller_spec.rb | 2 + .../registrations_controller_spec.rb | 2 + spec/controllers/root_controller_spec.rb | 2 + spec/controllers/search_controller_spec.rb | 2 + spec/controllers/sessions_controller_spec.rb | 2 + .../snippets/notes_controller_spec.rb | 2 + spec/controllers/snippets_controller_spec.rb | 2 + spec/controllers/uploads_controller_spec.rb | 2 + .../user_callouts_controller_spec.rb | 2 + .../users/terms_controller_spec.rb | 2 + spec/controllers/users_controller_spec.rb | 2 + .../importers/common_metrics_importer_spec.rb | 44 +- .../ci/pipeline_schedule_variables.rb | 1 + spec/factories/clusters/applications/helm.rb | 21 +- spec/factories/clusters/clusters.rb | 2 +- spec/factories/deployments.rb | 2 +- spec/factories/merge_requests.rb | 6 +- spec/factories/pages_domains.rb | 8 + spec/factories/pool_repositories.rb | 1 + spec/factories/project_metrics_settings.rb | 8 + spec/features/admin/admin_hooks_spec.rb | 10 +- spec/features/admin/admin_settings_spec.rb | 46 +- spec/features/admin/admin_users_spec.rb | 7 +- spec/features/boards/sidebar_spec.rb | 21 +- .../dashboard/issuables_counter_spec.rb | 4 +- .../features/dashboard/merge_requests_spec.rb | 4 +- spec/features/dashboard/projects_spec.rb | 14 + .../dashboard/user_filters_projects_spec.rb | 221 ++- .../groups/members/leave_group_spec.rb | 26 +- spec/features/groups/merge_requests_spec.rb | 2 +- .../markdown_references/jira_spec.rb | 2 +- .../issuables/shortcuts_issuable_spec.rb | 2 +- spec/features/issuables/sorting_list_spec.rb | 32 +- .../filtered_search/dropdown_hint_spec.rb | 34 +- .../dropdown_milestone_spec.rb | 2 +- spec/features/issues/form_spec.rb | 6 +- spec/features/issues/issue_sidebar_spec.rb | 2 +- ...r_creates_branch_and_merge_request_spec.rb | 4 +- .../issues/user_interacts_with_awards_spec.rb | 4 +- .../issues/user_uses_quick_actions_spec.rb | 213 +-- spec/features/issues_spec.rb | 12 +- spec/features/labels_hierarchy_spec.rb | 2 +- .../user_creates_image_diff_notes_spec.rb | 118 +- .../user_creates_merge_request_spec.rb | 4 +- .../merge_request/user_creates_mr_spec.rb | 15 +- .../merge_request/user_edits_mr_spec.rb | 18 +- .../user_sees_merge_widget_spec.rb | 22 + .../user_suggests_changes_on_diff_spec.rb | 24 +- ...ivate_project_info_through_new_mr_spec.rb} | 21 +- .../user_uses_quick_actions_spec.rb | 2 + .../user_filters_by_assignees_spec.rb | 2 +- .../user_filters_by_multiple_criteria_spec.rb | 2 +- .../user_lists_merge_requests_spec.rb | 4 +- .../merge_requests/user_mass_updates_spec.rb | 3 +- spec/features/oauth_login_spec.rb | 2 +- .../profiles/user_edit_preferences_spec.rb | 32 + .../profiles/user_edit_profile_spec.rb | 32 + ...er_visits_profile_preferences_page_spec.rb | 2 +- .../branches/download_buttons_spec.rb | 2 +- .../commit/comments/user_adds_comment_spec.rb | 4 +- .../projects/files/download_buttons_spec.rb | 2 +- .../projects/files/user_edits_files_spec.rb | 2 +- .../labels/update_prioritization_spec.rb | 20 +- .../labels/user_promotes_label_spec.rb | 34 + .../labels/user_removes_labels_spec.rb | 5 +- .../projects/labels/user_views_labels_spec.rb | 5 + ..._member_cannot_leave_group_project_spec.rb | 9 +- .../members/member_leaves_project_spec.rb | 13 +- .../members/user_requests_access_spec.rb | 3 +- .../projects/pipelines/pipeline_spec.rb | 14 + .../settings/repository_settings_spec.rb | 31 + ...er_manages_merge_requests_settings_spec.rb | 25 +- .../settings/user_renames_a_project_spec.rb | 39 +- .../projects/show/download_buttons_spec.rb | 3 +- .../show/user_manages_notifications_spec.rb | 10 + .../projects/tags/download_buttons_spec.rb | 2 +- .../wiki/user_creates_wiki_page_spec.rb | 6 +- spec/features/projects_spec.rb | 15 + spec/features/protected_branches_spec.rb | 26 +- spec/features/protected_tags_spec.rb | 13 +- .../user_searches_for_wiki_pages_spec.rb | 36 +- .../user_uses_header_search_field_spec.rb | 4 +- spec/features/triggers_spec.rb | 23 - spec/features/u2f_spec.rb | 20 - spec/features/users/login_spec.rb | 16 +- .../finders/autocomplete/users_finder_spec.rb | 16 +- spec/finders/cluster_ancestors_finder_spec.rb | 29 +- spec/finders/issues_finder_spec.rb | 64 +- spec/finders/merge_requests_finder_spec.rb | 49 +- spec/fixtures/api/schemas/cluster_status.json | 3 +- spec/fixtures/api/schemas/entities/issue.json | 2 +- .../api/schemas/entities/issue_board.json | 3 + .../schemas/entities/merge_request_basic.json | 14 +- .../api/schemas/pipeline_schedule.json | 2 +- .../schemas/pipeline_schedule_variable.json | 10 +- .../api/schemas/public_api/v4/artifact.json | 16 + .../schemas/public_api/v4/artifact_file.json | 12 + .../api/schemas/public_api/v4/deployment.json | 32 + .../schemas/public_api/v4/environment.json | 23 + .../api/schemas/public_api/v4/job.json | 63 + .../schemas/public_api/v4/merge_request.json | 5 + .../api/schemas/public_api/v4/release.json | 35 +- .../v4/release/release_for_guest.json | 22 + .../v4/release/releases_for_guest.json | 4 + .../public_api/v4/release/tag_release.json | 12 + .../api/schemas/public_api/v4/releases.json | 4 + .../api/schemas/public_api/v4/runner.json | 24 + .../api/schemas/public_api/v4/tag.json | 2 +- .../metrics/dashboard/sample_dashboard.yml | 36 + .../metrics/dashboard/schemas/dashboard.json | 13 + .../metrics/dashboard/schemas/metrics.json | 20 + .../dashboard/schemas/panel_groups.json | 17 + .../metrics/dashboard/schemas/panels.json | 20 + spec/frontend/.eslintrc.yml | 2 + .../frontend/clusters/clusters_bundle_spec.js | 150 +- .../components/application_row_spec.js | 251 ++- .../clusters/components/applications_spec.js | 2 +- .../uninstall_application_button_spec.js | 32 + ...all_application_confirmation_modal_spec.js | 56 + .../application_state_machine_spec.js | 162 ++ spec/frontend/clusters/services/mock_data.js | 8 +- .../clusters/stores/clusters_store_spec.js | 76 +- spec/frontend/environment.js | 7 +- .../components/error_tracking_list_spec.js | 2 +- .../recent_searches_service_error_spec.js | 2 +- spec/frontend/gfm_auto_complete_spec.js | 55 +- spec/frontend/helpers/fixtures.js | 4 +- .../ide/lib/common/disposable_spec.js | 2 +- spec/frontend/ide/lib/diff/diff_spec.js | 87 +- spec/frontend/ide/lib/editor_options_spec.js | 2 +- spec/frontend/ide/services/index_spec.js | 55 + .../modules/file_templates/mutations_spec.js | 51 +- .../components/import_projects_table_spec.js | 185 ++ .../imported_project_table_row_spec.js | 25 +- .../provider_repo_table_row_spec.js | 90 +- .../import_projects/store/actions_spec.js | 4 +- .../import_projects/store/mutations_spec.js | 4 +- spec/frontend/lib/utils/text_utility_spec.js | 20 +- .../components/discussion_actions_spec.js | 104 + .../notes/components/discussion_notes_spec.js | 139 ++ .../components/external_dashboard_spec.js | 100 + .../admin/abuse_reports/abuse_reports_spec.js | 7 +- .../pages/profiles/show/emoji_menu_spec.js | 14 +- .../serverless/components/functions_spec.js | 14 +- .../components/issue/issue_assignees_spec.js | 4 +- .../components/issue/issue_milestone_spec.js | 172 ++ .../components/issue/issue_warning_spec.js | 10 +- .../issue/related_issuable_item_spec.js | 12 +- .../markdown/suggestion_diff_header_spec.js | 103 + .../markdown/suggestion_diff_row_spec.js | 2 +- .../components/notes/placeholder_note_spec.js | 2 +- .../notes/placeholder_system_note_spec.js | 2 +- .../components/notes/system_note_spec.js | 7 +- .../notes/timeline_entry_item_spec.js | 2 +- .../sidebar/collapsed_calendar_icon_spec.js | 4 +- .../collapsed_grouped_date_picker_spec.js | 4 +- .../components/sidebar/date_picker_spec.js | 8 +- .../sidebar/labels_select/base_spec.js | 48 +- .../labels_select/dropdown_button_spec.js | 8 +- .../dropdown_create_label_spec.js | 5 +- .../labels_select/dropdown_footer_spec.js | 5 +- .../labels_select/dropdown_header_spec.js | 2 +- .../dropdown_search_input_spec.js | 2 +- .../labels_select/dropdown_title_spec.js | 2 +- .../dropdown_value_collapsed_spec.js | 11 +- .../labels_select/dropdown_value_spec.js | 8 +- .../components/sidebar/toggle_sidebar_spec.js | 4 +- .../modules/modal/mutations_spec.js | 6 +- spec/graphql/resolvers/base_resolver_spec.rb | 15 + .../concerns/resolves_pipelines_spec.rb | 8 + .../graphql/resolvers/issues_resolver_spec.rb | 202 +- .../resolvers/project_resolver_spec.rb | 8 + spec/graphql/types/base_field_spec.rb | 26 + spec/graphql/types/group_type_spec.rb | 11 + spec/graphql/types/namespace_type.rb | 9 + spec/graphql/types/query_type_spec.rb | 2 +- spec/helpers/labels_helper_spec.rb | 67 +- spec/helpers/projects_helper_spec.rb | 4 + spec/helpers/storage_helper_spec.rb | 24 + spec/initializers/secret_token_spec.rb | 4 +- spec/javascripts/api_spec.js | 14 +- .../balsamiq_viewer_integration_spec.js | 4 +- spec/javascripts/blob/pdf/index_spec.js | 4 +- .../boards/board_list_common_spec.js | 58 + spec/javascripts/boards/board_list_spec.js | 51 +- .../issue_card_inner_scoped_label_spec.js | 43 + spec/javascripts/boards/issue_card_spec.js | 6 + spec/javascripts/boards/list_spec.js | 3 + spec/javascripts/boards/mock_data.js | 1 + .../ajax_variable_list_spec.js | 2 +- .../diffs/components/diff_content_spec.js | 14 + .../diffs/components/diff_discussions_spec.js | 109 +- spec/javascripts/diffs/mock_data/diff_file.js | 1 + spec/javascripts/diffs/store/actions_spec.js | 92 +- .../javascripts/diffs/store/mutations_spec.js | 94 + spec/javascripts/fixtures/.gitignore | 2 + .../fixtures/environments/table.html.haml | 11 - .../fixtures/static/environments/table.html | 15 + .../{ => static}/images/green_box.png | Bin .../{ => static/images}/one_white_pixel.png | Bin .../fixtures/{ => static}/images/red_box.png | Bin .../fixtures/{ => static}/projects.json | 0 spec/javascripts/fixtures/static_fixtures.rb | 19 - spec/javascripts/gl_dropdown_spec.js | 4 +- .../components/new_dropdown/upload_spec.js | 4 + .../ide/stores/actions/file_spec.js | 19 +- .../ide/stores/modules/commit/actions_spec.js | 21 +- .../modules/file_templates/actions_spec.js | 54 +- spec/javascripts/ide/stores/utils_spec.js | 23 +- .../components/import_projects_table_spec.js | 188 -- .../issue_show/components/app_spec.js | 47 + .../components/fields/description_spec.js | 4 + .../components/fields/title_spec.js | 4 + .../issue_show/components/form_spec.js | 25 + spec/javascripts/issue_spec.js | 1 - spec/javascripts/jobs/mock_data.js | 6 +- .../lib/utils/common_utils_spec.js | 10 + spec/javascripts/merge_request_spec.js | 2 +- spec/javascripts/monitoring/dashboard_spec.js | 106 +- .../components/noteable_discussion_spec.js | 23 - spec/javascripts/notes/stores/actions_spec.js | 130 +- spec/javascripts/notes_spec.js | 2 +- .../components/timezone_dropdown_spec.js | 77 + spec/javascripts/pdf/index_spec.js | 4 +- spec/javascripts/pdf/page_spec.js | 4 +- .../components/detailed_metric_spec.js | 22 +- .../pipelines/graph/action_component_spec.js | 11 + .../graph/stage_column_component_spec.js | 49 + .../pipelines/pipeline_triggerer_spec.js | 54 + .../pipelines/pipeline_url_spec.js | 48 - .../pipelines/pipelines_table_row_spec.js | 4 +- spec/javascripts/projects/project_new_spec.js | 14 +- spec/javascripts/raven/index_spec.js | 10 +- spec/javascripts/raven/raven_config_spec.js | 10 +- spec/javascripts/sidebar/assignees_spec.js | 95 +- spec/javascripts/test_constants.js | 10 +- .../components/mr_widget_pipeline_spec.js | 13 + .../vue_mr_widget/mr_widget_options_spec.js | 16 + .../stores/mr_widget_store_spec.js | 4 +- .../components/ci_badge_link_spec.js | 2 +- .../content_viewer/content_viewer_spec.js | 3 + .../viewers/image_diff_viewer_spec.js | 16 - .../components/issue/issue_milestone_spec.js | 234 --- .../markdown/suggestion_diff_header_spec.js | 75 - .../project_list_item_spec.js | 4 +- .../project_selector/project_selector_spec.js | 4 +- .../user_popover/user_popover_spec.js | 18 + spec/lib/api/helpers_spec.rb | 12 - .../filter/table_of_contents_filter_spec.rb | 5 + .../banzai/filter/wiki_link_filter_spec.rb | 42 - .../lib/banzai/pipeline/wiki_pipeline_spec.rb | 79 + spec/lib/extracts_path_spec.rb | 30 + spec/lib/gitlab/auth_spec.rb | 75 +- ...ze_merge_request_diffs_and_commits_spec.rb | 2 +- .../migrate_build_stage_spec.rb | 2 +- .../migrate_stage_index_spec.rb | 2 +- spec/lib/gitlab/background_migration_spec.rb | 40 + .../bitbucket_server_import/importer_spec.rb | 1 + spec/lib/gitlab/checks/branch_check_spec.rb | 126 +- .../prerequisite/kubernetes_namespace_spec.rb | 6 + .../ci/config/entry/environment_spec.rb | 40 + .../ci/config/external/processor_spec.rb | 24 + .../expression/lexeme/not_equals_spec.rb | 39 + .../expression/lexeme/not_matches_spec.rb | 80 + .../ci/pipeline/expression/statement_spec.rb | 12 + .../ci/status/build/failed_allowed_spec.rb | 2 +- .../gitlab/ci/status/stage/factory_spec.rb | 18 +- .../ci/status/stage/play_manual_spec.rb | 74 + .../gitlab/ci/status/success_warning_spec.rb | 2 +- .../lib/gitlab/ci/templates/templates_spec.rb | 52 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 19 +- spec/lib/gitlab/correlation_id_spec.rb | 77 - spec/lib/gitlab/danger/helper_spec.rb | 21 +- .../gitlab/data_builder/deployment_spec.rb | 39 + spec/lib/gitlab/data_builder/push_spec.rb | 11 +- .../discussions_diff/highlight_cache_spec.rb | 110 +- spec/lib/gitlab/git/blob_spec.rb | 2 +- spec/lib/gitlab/git/object_pool_spec.rb | 41 + .../lib/gitlab/git/repository_cleaner_spec.rb | 81 +- spec/lib/gitlab/git/repository_spec.rb | 198 +- spec/lib/gitlab/git/wiki_spec.rb | 16 +- .../gitaly_client/cleanup_service_spec.rb | 10 +- .../gitaly_client/object_pool_service_spec.rb | 20 + .../gitlab/gitaly_client/ref_service_spec.rb | 11 + .../gitaly_client/repository_service_spec.rb | 30 + .../gitlab/gitaly_client/wiki_service_spec.rb | 6 +- spec/lib/gitlab/gitaly_client_spec.rb | 42 + .../importer/issue_importer_spec.rb | 2 + .../importer/pull_request_importer_spec.rb | 3 + .../authorize/authorize_field_service_spec.rb | 14 + .../gitlab/graphql/generic_tracing_spec.rb | 67 + spec/lib/gitlab/graphql/tracing_spec.rb | 33 - .../gitlab/hook_data/issuable_builder_spec.rb | 6 +- .../hook_data/merge_request_builder_spec.rb | 1 + spec/lib/gitlab/import_export/all_models.yml | 9 +- .../attribute_configuration_spec.rb | 2 +- .../project_tree_restorer_spec.rb | 13 + .../import_export/safe_model_attributes.yml | 11 +- spec/lib/gitlab/issuable_metadata_spec.rb | 4 +- spec/lib/gitlab/json_logger_spec.rb | 2 +- spec/lib/gitlab/kubernetes/helm/api_spec.rb | 46 + .../kubernetes/helm/delete_command_spec.rb | 72 + spec/lib/gitlab/kubernetes/namespace_spec.rb | 27 + .../project_creator_spec.rb | 16 +- .../release_formatter_spec.rb | 1 + .../gitlab/metrics/dashboard/finder_spec.rb | 62 + .../metrics/dashboard/processor_spec.rb | 105 + .../project_dashboard_service_spec.rb | 62 + .../system_dashboard_service_spec.rb | 32 + .../gitlab/namespaced_session_store_spec.rb | 22 + spec/lib/gitlab/octokit/middleware_spec.rb | 68 + spec/lib/gitlab/omniauth_initializer_spec.rb | 30 + spec/lib/gitlab/optimistic_locking_spec.rb | 4 +- spec/lib/gitlab/path_regex_spec.rb | 10 +- spec/lib/gitlab/profiler_spec.rb | 6 +- .../gitlab/prometheus/query_variables_spec.rb | 28 +- spec/lib/gitlab/sentry_spec.rb | 4 +- spec/lib/gitlab/session_spec.rb | 27 + .../correlation_injector_spec.rb | 2 +- .../correlation_logger_spec.rb | 2 +- spec/lib/gitlab/tracing/factory_spec.rb | 43 - .../gitlab/tracing/grpc_interceptor_spec.rb | 47 - .../lib/gitlab/tracing/jaeger_factory_spec.rb | 71 - .../gitlab/tracing/rack_middleware_spec.rb | 62 - .../rails/action_view_subscriber_spec.rb | 147 -- .../rails/active_record_subscriber_spec.rb | 73 - .../tracing/sidekiq/client_middleware_spec.rb | 43 - .../tracing/sidekiq/server_middleware_spec.rb | 43 - spec/lib/gitlab/url_blocker_spec.rb | 50 +- spec/lib/gitlab/url_sanitizer_spec.rb | 34 + spec/lib/gitlab/usage_data_spec.rb | 2 + .../gitlab/utils/sanitize_node_link_spec.rb | 72 + spec/lib/gitlab/visibility_level_spec.rb | 8 + spec/lib/gitlab/workhorse_spec.rb | 82 +- spec/lib/quality/kubernetes_client_spec.rb | 4 +- spec/lib/quality/seeders/issues_spec.rb | 18 + spec/mailers/emails/pages_domains_spec.rb | 24 + spec/mailers/notify_spec.rb | 22 +- .../generate_missing_routes_spec.rb | 2 +- ..._sync_issuables_state_id_where_nil_spec.rb | 57 + spec/models/application_setting_spec.rb | 14 + spec/models/blob_spec.rb | 15 + spec/models/ci/bridge_spec.rb | 2 +- spec/models/ci/build_spec.rb | 63 +- spec/models/ci/group_variable_spec.rb | 3 +- spec/models/ci/job_artifact_spec.rb | 44 +- spec/models/ci/legacy_stage_spec.rb | 2 + spec/models/ci/pipeline_schedule_spec.rb | 9 + .../ci/pipeline_schedule_variable_spec.rb | 2 +- spec/models/ci/pipeline_spec.rb | 60 +- spec/models/ci/pipeline_variable_spec.rb | 3 +- spec/models/ci/runner_spec.rb | 5 +- spec/models/ci/stage_spec.rb | 2 + spec/models/ci/variable_spec.rb | 3 +- .../applications/cert_manager_spec.rb | 6 + .../models/clusters/applications/helm_spec.rb | 8 + .../clusters/applications/ingress_spec.rb | 6 + .../clusters/applications/jupyter_spec.rb | 9 + .../clusters/applications/knative_spec.rb | 6 + .../clusters/applications/prometheus_spec.rb | 53 +- .../clusters/applications/runner_spec.rb | 30 +- spec/models/clusters/cluster_spec.rb | 27 + .../clusters/platforms/kubernetes_spec.rb | 12 + spec/models/commit_status_spec.rb | 4 +- .../concerns/deprecated_assignee_spec.rb | 160 ++ spec/models/concerns/has_ref_spec.rb | 4 +- spec/models/concerns/issuable_spec.rb | 7 +- spec/models/deployment_spec.rb | 21 + spec/models/event_spec.rb | 2 +- spec/models/instance_configuration_spec.rb | 7 + spec/models/internal_id_spec.rb | 62 +- spec/models/issue_spec.rb | 23 + spec/models/merge_request_spec.rb | 85 +- spec/models/namespace_spec.rb | 64 +- spec/models/note_diff_file_spec.rb | 27 + spec/models/pages_domain_spec.rb | 28 + spec/models/pool_repository_spec.rb | 2 +- spec/models/project_metrics_setting_spec.rb | 55 + .../chat_message/deployment_message_spec.rb | 153 ++ .../project_services/hipchat_service_spec.rb | 11 +- .../microsoft_teams_service_spec.rb | 6 + spec/models/project_spec.rb | 2 + spec/models/project_statistics_spec.rb | 30 +- spec/models/project_wiki_spec.rb | 74 +- spec/models/release_spec.rb | 21 + spec/models/remote_mirror_spec.rb | 16 + spec/models/repository_spec.rb | 170 ++ spec/models/user_preference_spec.rb | 6 + spec/models/user_spec.rb | 6 +- spec/models/wiki_page_spec.rb | 62 +- spec/policies/ci/pipeline_policy_spec.rb | 46 + spec/policies/clusters/cluster_policy_spec.rb | 16 + .../policies/clusters/instance_policy_spec.rb | 36 + spec/policies/global_policy_spec.rb | 28 + spec/policies/personal_snippet_policy_spec.rb | 31 +- spec/policies/project_policy_spec.rb | 4 +- .../clusters/cluster_presenter_spec.rb | 12 + spec/presenters/label_presenter_spec.rb | 93 + .../merge_request_presenter_spec.rb | 4 +- spec/presenters/project_presenter_spec.rb | 19 + spec/rack_servers/configs/puma.rb | 32 - spec/rack_servers/puma_spec.rb | 22 +- spec/requests/api/badges_spec.rb | 6 +- spec/requests/api/commit_statuses_spec.rb | 17 +- spec/requests/api/discussions_spec.rb | 4 +- spec/requests/api/environments_spec.rb | 22 + .../api/graphql/gitlab_schema_spec.rb | 2 +- spec/requests/api/graphql/group_query_spec.rb | 118 ++ spec/requests/api/group_variables_spec.rb | 8 +- spec/requests/api/helpers_spec.rb | 2 +- spec/requests/api/internal_spec.rb | 10 +- spec/requests/api/issues_spec.rb | 10 +- spec/requests/api/merge_requests_spec.rb | 124 +- spec/requests/api/pipeline_schedules_spec.rb | 7 +- spec/requests/api/pipelines_spec.rb | 73 +- spec/requests/api/project_clusters_spec.rb | 2 + spec/requests/api/project_events_spec.rb | 4 +- spec/requests/api/projects_spec.rb | 36 +- spec/requests/api/releases_spec.rb | 49 +- spec/requests/api/runner_spec.rb | 30 +- spec/requests/api/tags_spec.rb | 2 +- spec/requests/api/triggers_spec.rb | 28 - spec/requests/api/variables_spec.rb | 8 +- spec/requests/git_http_spec.rb | 51 +- spec/requests/jwt_controller_spec.rb | 2 +- spec/requests/openid_connect_spec.rb | 2 +- spec/requests/rack_attack_global_spec.rb | 4 +- spec/routing/group_routing_spec.rb | 14 + .../active_record_association_reload_spec.rb | 60 + .../cluster_application_entity_spec.rb | 4 + spec/serializers/issue_entity_spec.rb | 33 + spec/serializers/pipeline_entity_spec.rb | 4 +- spec/serializers/pipeline_serializer_spec.rb | 6 +- spec/serializers/stage_entity_spec.rb | 28 + spec/serializers/stage_serializer_spec.rb | 31 + .../access_token_validation_service_spec.rb | 2 + .../after_branch_delete_service_spec.rb | 15 - .../update_service_spec.rb | 2 + ...er_registry_authentication_service_spec.rb | 2 + spec/services/base_count_service_spec.rb | 2 + spec/services/boards/create_service_spec.rb | 2 + .../boards/issues/create_service_spec.rb | 2 + .../boards/issues/list_service_spec.rb | 2 + .../boards/issues/move_service_spec.rb | 2 + spec/services/boards/list_service_spec.rb | 2 + .../boards/lists/create_service_spec.rb | 2 + .../boards/lists/destroy_service_spec.rb | 2 + .../boards/lists/generate_service_spec.rb | 2 + .../boards/lists/list_service_spec.rb | 2 + .../boards/lists/move_service_spec.rb | 2 + .../chat_names/authorize_user_service_spec.rb | 2 + .../chat_names/find_user_service_spec.rb | 2 + .../services/ci/archive_trace_service_spec.rb | 2 + .../ci/compare_test_reports_service_spec.rb | 2 + .../ci/create_pipeline_service_spec.rb | 79 +- ...troy_expired_job_artifacts_service_spec.rb | 2 + spec/services/ci/ensure_stage_service_spec.rb | 2 + .../ci/expire_pipeline_cache_service_spec.rb | 61 + ..._sections_from_build_trace_service_spec.rb | 2 + .../ci/pipeline_trigger_service_spec.rb | 2 + spec/services/ci/play_build_service_spec.rb | 2 + .../ci/play_manual_stage_service_spec.rb | 79 + .../ci/process_pipeline_service_spec.rb | 2 + spec/services/ci/register_job_service_spec.rb | 2 + spec/services/ci/retry_build_service_spec.rb | 10 +- .../ci/retry_pipeline_service_spec.rb | 2 + .../ci/run_scheduled_build_service_spec.rb | 2 + .../ci/stop_environments_service_spec.rb | 2 + .../ci/update_build_queue_service_spec.rb | 2 + .../services/ci/update_runner_service_spec.rb | 2 + .../check_ingress_ip_address_service_spec.rb | 2 + ...heck_installation_progress_service_spec.rb | 8 +- .../check_uninstall_progress_service_spec.rb | 145 ++ .../applications/create_service_spec.rb | 2 +- .../applications/destroy_service_spec.rb | 63 + .../applications/install_service_spec.rb | 8 +- .../applications/patch_service_spec.rb | 6 +- .../applications/uninstall_service_spec.rb | 77 + .../applications/upgrade_service_spec.rb | 6 +- spec/services/clusters/build_service_spec.rb | 8 + spec/services/clusters/create_service_spec.rb | 2 + .../gcp/fetch_operation_service_spec.rb | 2 + .../clusters/gcp/provision_service_spec.rb | 2 + .../verify_provision_status_service_spec.rb | 2 + .../services/clusters/refresh_service_spec.rb | 6 + spec/services/clusters/update_service_spec.rb | 2 + spec/services/cohorts_service_spec.rb | 2 + spec/services/compare_service_spec.rb | 15 + spec/services/create_branch_service_spec.rb | 2 + spec/services/create_snippet_service_spec.rb | 2 + spec/services/delete_branch_service_spec.rb | 26 +- .../delete_merged_branches_service_spec.rb | 2 + .../deploy_keys/create_service_spec.rb | 2 + .../deploy_tokens/create_service_spec.rb | 2 + .../discussions/resolve_service_spec.rb | 2 + .../update_diff_position_service_spec.rb | 2 + spec/services/emails/confirm_service_spec.rb | 2 + spec/services/event_create_service_spec.rb | 2 + spec/services/events/render_service_spec.rb | 2 + spec/services/files/create_service_spec.rb | 2 + spec/services/files/delete_service_spec.rb | 2 + spec/services/files/multi_service_spec.rb | 2 + spec/services/files/update_service_spec.rb | 2 + .../services/git/branch_hooks_service_spec.rb | 341 ++++ spec/services/git/branch_push_service_spec.rb | 264 +-- spec/services/git/tag_hooks_service_spec.rb | 146 ++ spec/services/git/tag_push_service_spec.rb | 179 +- spec/services/gpg_keys/create_service_spec.rb | 2 + spec/services/gravatar_service_spec.rb | 2 + spec/services/groups/create_service_spec.rb | 13 + spec/services/groups/destroy_service_spec.rb | 2 + .../groups/nested_create_service_spec.rb | 2 + spec/services/groups/transfer_service_spec.rb | 2 + spec/services/groups/update_service_spec.rb | 2 + .../import_export_clean_up_service_spec.rb | 2 + .../issuable/bulk_update_service_spec.rb | 18 +- .../common_system_notes_service_spec.rb | 2 + .../services/issuable/destroy_service_spec.rb | 4 +- spec/services/issues/build_service_spec.rb | 2 + spec/services/issues/close_service_spec.rb | 2 + spec/services/issues/create_service_spec.rb | 2 + .../services/issues/duplicate_service_spec.rb | 2 + spec/services/issues/move_service_spec.rb | 2 + .../issues/related_branches_service_spec.rb | 2 + spec/services/issues/reopen_service_spec.rb | 2 + .../issues/resolve_discussions_spec.rb | 2 + spec/services/issues/update_service_spec.rb | 2 + spec/services/keys/create_service_spec.rb | 2 + spec/services/keys/destroy_service_spec.rb | 2 + spec/services/keys/last_used_service_spec.rb | 2 + spec/services/labels/create_service_spec.rb | 2 + .../labels/find_or_create_service_spec.rb | 2 + spec/services/labels/promote_service_spec.rb | 2 + spec/services/labels/transfer_service_spec.rb | 2 + spec/services/labels/update_service_spec.rb | 2 + spec/services/lfs/file_transformer_spec.rb | 2 + spec/services/lfs/lock_file_service_spec.rb | 2 + .../services/lfs/locks_finder_service_spec.rb | 2 + spec/services/lfs/unlock_file_service_spec.rb | 2 + .../approve_access_request_service_spec.rb | 2 + spec/services/members/create_service_spec.rb | 15 +- spec/services/members/destroy_service_spec.rb | 6 +- .../members/request_access_service_spec.rb | 2 + spec/services/members/update_service_spec.rb | 2 + .../add_todo_when_build_fails_service_spec.rb | 2 + .../assign_issues_service_spec.rb | 2 + .../merge_requests/build_service_spec.rb | 37 + .../merge_requests/close_service_spec.rb | 4 +- .../conflicts/list_service_spec.rb | 2 + .../conflicts/resolve_service_spec.rb | 2 + .../create_from_issue_service_spec.rb | 4 +- .../merge_requests/create_service_spec.rb | 38 +- .../delete_non_latest_diffs_service_spec.rb | 2 + .../merge_requests/ff_merge_service_spec.rb | 4 +- .../merge_requests/get_urls_service_spec.rb | 2 + .../merge_requests/merge_service_spec.rb | 6 +- .../merge_to_ref_service_spec.rb | 4 +- ...rge_when_pipeline_succeeds_service_spec.rb | 2 + .../merge_requests/post_merge_service_spec.rb | 4 +- .../push_options_handler_service_spec.rb | 2 +- .../merge_requests/rebase_service_spec.rb | 20 +- .../merge_requests/refresh_service_spec.rb | 28 +- .../reload_diffs_service_spec.rb | 2 + .../merge_requests/reopen_service_spec.rb | 4 +- ...ed_discussion_notification_service_spec.rb | 2 + .../merge_requests/squash_service_spec.rb | 2 + .../merge_requests/update_service_spec.rb | 46 +- .../services/milestones/close_service_spec.rb | 2 + .../milestones/create_service_spec.rb | 2 + .../milestones/destroy_service_spec.rb | 2 + .../milestones/promote_service_spec.rb | 2 + spec/services/note_summary_spec.rb | 12 +- spec/services/notes/build_service_spec.rb | 2 + spec/services/notes/create_service_spec.rb | 2 + spec/services/notes/destroy_service_spec.rb | 2 + .../notes/post_process_service_spec.rb | 2 + .../notes/quick_actions_service_spec.rb | 2 + spec/services/notes/render_service_spec.rb | 2 + spec/services/notes/resolve_service_spec.rb | 2 + spec/services/notes/update_service_spec.rb | 2 + .../notification_recipient_service_spec.rb | 2 + spec/services/notification_service_spec.rb | 119 +- .../services/preview_markdown_service_spec.rb | 2 + .../projects/after_import_service_spec.rb | 2 + .../projects/autocomplete_service_spec.rb | 2 + .../batch_open_issues_count_service_spec.rb | 2 + .../services/projects/cleanup_service_spec.rb | 91 +- spec/services/projects/count_service_spec.rb | 2 + .../create_from_template_service_spec.rb | 2 + spec/services/projects/create_service_spec.rb | 2 + .../services/projects/destroy_service_spec.rb | 2 + ...etect_repository_languages_service_spec.rb | 2 + .../projects/download_service_spec.rb | 2 + .../enable_deploy_key_service_spec.rb | 2 + spec/services/projects/fork_service_spec.rb | 2 + .../projects/forks_count_service_spec.rb | 2 + .../gitlab_projects_import_service_spec.rb | 2 + .../group_links/create_service_spec.rb | 2 + .../group_links/destroy_service_spec.rb | 2 + .../migrate_attachments_service_spec.rb | 2 + .../migrate_repository_service_spec.rb | 2 + .../hashed_storage/migration_service_spec.rb | 2 + .../projects/housekeeping_service_spec.rb | 5 + .../import_export/export_service_spec.rb | 2 + spec/services/projects/import_service_spec.rb | 47 +- .../lfs_download_link_list_service_spec.rb | 23 +- .../lfs_pointers/lfs_download_service_spec.rb | 1 + .../lfs_pointers/lfs_import_service_spec.rb | 157 +- .../lfs_pointers/lfs_link_service_spec.rb | 1 + .../lfs_object_download_list_service_spec.rb | 148 ++ .../projects/move_access_service_spec.rb | 2 + .../move_deploy_keys_projects_service_spec.rb | 2 + .../projects/move_forks_service_spec.rb | 2 + .../move_lfs_objects_projects_service_spec.rb | 2 + ...move_notification_settings_service_spec.rb | 2 + ...ove_project_authorizations_service_spec.rb | 2 + .../move_project_group_links_service_spec.rb | 2 + .../move_project_members_service_spec.rb | 2 + .../move_users_star_projects_service_spec.rb | 2 + .../open_issues_count_service_spec.rb | 2 + .../open_merge_requests_count_service_spec.rb | 2 + .../operations/update_service_spec.rb | 50 + .../overwrite_project_service_spec.rb | 2 + .../projects/participants_service_spec.rb | 2 + .../propagate_service_template_spec.rb | 2 + .../repository_languages_service_spec.rb | 2 + .../projects/transfer_service_spec.rb | 2 + .../projects/unlink_fork_service_spec.rb | 2 + ...update_pages_configuration_service_spec.rb | 2 + .../projects/update_pages_service_spec.rb | 2 + .../update_remote_mirror_service_spec.rb | 2 + spec/services/projects/update_service_spec.rb | 4 + .../update_statistics_service_spec.rb | 42 + .../prometheus/adapter_service_spec.rb | 2 + .../protected_branches/create_service_spec.rb | 2 + .../destroy_service_spec.rb | 2 + .../protected_branches/update_service_spec.rb | 2 + .../protected_tags/create_service_spec.rb | 2 + .../protected_tags/destroy_service_spec.rb | 2 + .../protected_tags/update_service_spec.rb | 2 + .../push_event_payload_service_spec.rb | 2 + .../quick_actions/interpret_service_spec.rb | 6 +- spec/services/releases/create_service_spec.rb | 12 + .../services/releases/destroy_service_spec.rb | 2 + spec/services/releases/update_service_spec.rb | 2 + .../repair_ldap_blocked_user_service_spec.rb | 2 + ...epository_archive_clean_up_service_spec.rb | 2 + .../reset_project_cache_service_spec.rb | 2 + spec/services/search/global_service_spec.rb | 2 + spec/services/search/group_service_spec.rb | 2 + spec/services/search/snippet_service_spec.rb | 2 + spec/services/search_service_spec.rb | 2 + spec/services/service_response_spec.rb | 57 + spec/services/spam_service_spec.rb | 2 + .../submit_usage_ping_service_spec.rb | 2 + spec/services/system_hooks_service_spec.rb | 14 +- spec/services/system_note_service_spec.rb | 89 +- spec/services/tags/create_service_spec.rb | 2 + spec/services/tags/destroy_service_spec.rb | 2 + .../test_hooks/project_service_spec.rb | 2 + .../test_hooks/system_service_spec.rb | 2 + spec/services/todo_service_spec.rb | 112 +- .../confidential_issue_service_spec.rb | 2 + .../destroy/entity_leave_service_spec.rb | 16 + .../destroy/group_private_service_spec.rb | 2 + .../destroy/private_features_service_spec.rb | 2 + .../destroy/project_private_service_spec.rb | 2 + .../update_deployment_service_spec.rb | 3 + ...date_merge_request_metrics_service_spec.rb | 2 + spec/services/update_snippet_service_spec.rb | 2 + spec/services/upload_service_spec.rb | 2 + ...ser_project_access_changed_service_spec.rb | 2 + spec/services/users/activity_service_spec.rb | 4 +- spec/services/users/build_service_spec.rb | 2 + spec/services/users/create_service_spec.rb | 2 + spec/services/users/destroy_service_spec.rb | 10 +- .../users/last_push_event_service_spec.rb | 2 + .../migrate_to_ghost_user_service_spec.rb | 4 +- ...efresh_authorized_projects_service_spec.rb | 2 + .../users/respond_to_terms_service_spec.rb | 2 + spec/services/users/update_service_spec.rb | 11 + .../verify_pages_domain_service_spec.rb | 91 +- spec/services/web_hook_service_spec.rb | 2 + .../wiki_pages/create_service_spec.rb | 2 + .../wiki_pages/destroy_service_spec.rb | 2 + .../wiki_pages/update_service_spec.rb | 2 + spec/spec_helper.rb | 3 + spec/support/capybara.rb | 11 +- ...uth_callbacks_controller_shared_context.rb | 6 +- .../discussion_comments_shared_example.rb | 2 +- .../features/variable_list_shared_examples.rb | 36 +- spec/support/helpers/email_helpers.rb | 4 +- .../support/helpers/features/notes_helpers.rb | 12 +- .../helpers/filtered_search_helpers.rb | 23 +- spec/support/helpers/graphql_helpers.rb | 16 +- .../helpers/javascript_fixtures_helpers.rb | 2 +- spec/support/helpers/login_helpers.rb | 3 + .../helpers/metrics_dashboard_helpers.rb | 43 + spec/support/helpers/mobile_helpers.rb | 2 +- spec/support/helpers/notification_helpers.rb | 8 +- spec/support/helpers/query_recorder.rb | 2 +- spec/support/helpers/repo_helpers.rb | 78 + spec/support/helpers/select2_helper.rb | 4 + spec/support/helpers/stub_configuration.rb | 3 + spec/support/helpers/stub_object_storage.rb | 3 + spec/support/helpers/test_request_helpers.rb | 4 +- spec/support/helpers/wait_for_requests.rb | 14 - spec/support/helpers/wait_helpers.rb | 20 + spec/support/protected_branch_helpers.rb | 30 + spec/support/protected_tag_helpers.rb | 18 + ...e_to_ghost_user_service_shared_examples.rb | 4 +- .../policies/project_policy_shared_context.rb | 3 +- .../merge_requests_finder_shared_contexts.rb | 6 +- .../shared_contexts/merge_request_create.rb | 26 + .../shared_contexts/merge_request_edit.rb | 28 + .../application_setting_examples.rb | 39 + .../chat_slash_commands_shared_examples.rb | 13 + .../ci/stage_shared_examples.rb | 27 + .../ci_trace_shared_examples.rb | 39 - .../controllers/variables_shared_examples.rb | 12 + .../dirty_submit_form_shared_examples.rb | 14 +- ...creatable_merge_request_shared_examples.rb | 31 +- .../editable_merge_request_shared_examples.rb | 28 +- ..._manages_access_requests_shared_example.rb | 4 +- .../multiple_assignees_mr_shared_examples.rb | 47 + .../finders/assignees_filter_spec.rb | 49 + .../models/atomic_internal_id_spec.rb | 42 +- .../models/chat_service_spec.rb | 8 +- .../models/ci_variable_shared_examples.rb | 29 + ...luster_application_core_shared_examples.rb | 8 + .../cluster_application_helm_cert_examples.rb | 26 + ...ster_application_status_shared_examples.rb | 65 +- .../models/update_project_statistics_spec.rb | 76 + .../close_quick_action_shared_examples.rb | 7 +- ...ge_request_quick_action_shared_examples.rb | 54 + .../issue/due_quick_action_shared_examples.rb | 40 +- .../move_quick_action_shared_examples.rb | 89 + ...e_due_date_quick_action_shared_examples.rb | 2 +- .../requests/api/discussions.rb | 24 +- .../base_helm_service_shared_examples.rb | 2 +- ...attermost_notifications_shared_examples.rb | 14 +- .../shared_examples/url_validator_examples.rb | 24 +- .../wiki_file_attachments_examples.rb | 2 +- spec/uploaders/file_mover_spec.rb | 7 +- spec/uploaders/import_export_uploader_spec.rb | 32 + spec/uploaders/object_storage_spec.rb | 8 + spec/uploaders/personal_file_uploader_spec.rb | 60 +- ...c.rb => addressable_url_validator_spec.rb} | 131 +- spec/validators/public_url_validator_spec.rb | 8 +- .../pipeline_failed_email.text.erb_spec.rb | 39 + .../_merge_requests_status.html.haml_spec.rb | 28 - .../merge_requests/edit.html.haml_spec.rb | 6 +- .../merge_requests/show.html.haml_spec.rb | 13 - .../projects/tags/index.html.haml_spec.rb | 41 +- spec/views/shared/_label_row.html.haml.rb | 32 + spec/workers/build_success_worker_spec.rb | 1 + spec/workers/cluster_configure_worker_spec.rb | 10 + .../wait_for_uninstall_app_worker_spec.rb | 32 + .../deployments/finished_worker_spec.rb | 39 + .../expire_pipeline_cache_worker_spec.rb | 29 +- .../git_garbage_collect_worker_spec.rb | 13 + .../pages_domain_removal_cron_worker_spec.rb | 42 + ...es_domain_verification_cron_worker_spec.rb | 8 +- spec/workers/post_receive_spec.rb | 26 +- spec/workers/project_cache_worker_spec.rb | 47 +- .../update_project_statistics_worker_spec.rb | 17 + yarn.lock | 153 +- 2803 files changed, 53501 insertions(+), 15217 deletions(-) create mode 100644 .gitlab/ci/cng.gitlab-ci.yml create mode 100644 .gitlab/ci/docs.gitlab-ci.yml create mode 100644 .gitlab/ci/frontend.gitlab-ci.yml create mode 100644 .gitlab/ci/global.gitlab-ci.yml create mode 100644 .gitlab/ci/pages.gitlab-ci.yml create mode 100644 .gitlab/ci/qa.gitlab-ci.yml create mode 100644 .gitlab/ci/rails.gitlab-ci.yml create mode 100644 .gitlab/ci/reports.gitlab-ci.yml create mode 100644 .gitlab/ci/review.gitlab-ci.yml create mode 100644 .gitlab/ci/setup.gitlab-ci.yml create mode 100644 .gitlab/ci/test-metadata.gitlab-ci.yml create mode 100644 .gitlab/issue_templates/Refactoring.md create mode 100644 app/assets/javascripts/batch_comments/mixins/resolved_status.js create mode 100644 app/assets/javascripts/boards/boards_util.js create mode 100644 app/assets/javascripts/boards/components/issue_card_inner_scoped_label.vue create mode 100644 app/assets/javascripts/boards/mixins/issue_card_inner.js create mode 100644 app/assets/javascripts/boards/stores/boards_store_ee.js create mode 100644 app/assets/javascripts/clusters/components/uninstall_application_button.vue create mode 100644 app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue create mode 100644 app/assets/javascripts/clusters/mixins/track_uninstall_button_click.js create mode 100644 app/assets/javascripts/clusters/services/application_state_machine.js create mode 100644 app/assets/javascripts/diffs/mixins/image_diff.js create mode 100644 app/assets/javascripts/event_tracking/notes.js create mode 100644 app/assets/javascripts/namespaces/leave_by_url.js create mode 100644 app/assets/javascripts/notes/components/discussion_actions.vue create mode 100644 app/assets/javascripts/notes/components/discussion_notes.vue create mode 100644 app/assets/javascripts/notes/mixins/draft.js create mode 100644 app/assets/javascripts/notes/mixins/get_discussion.js create mode 100644 app/assets/javascripts/notes/mixins/note_form.js create mode 100644 app/assets/javascripts/operation_settings/components/external_dashboard.vue create mode 100644 app/assets/javascripts/operation_settings/index.js create mode 100644 app/assets/javascripts/pages/admin/clusters/destroy/index.js create mode 100644 app/assets/javascripts/pages/admin/clusters/edit/index.js create mode 100644 app/assets/javascripts/pages/admin/clusters/index.js create mode 100644 app/assets/javascripts/pages/admin/clusters/index/index.js create mode 100644 app/assets/javascripts/pages/admin/clusters/show/index.js create mode 100644 app/assets/javascripts/pipelines/components/pipeline_triggerer.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js create mode 100644 app/assets/stylesheets/components/toast.scss create mode 100644 app/assets/stylesheets/pages/prometheus.scss create mode 100644 app/assets/stylesheets/vendors/atwho.scss create mode 100644 app/controllers/admin/clusters/applications_controller.rb create mode 100644 app/controllers/admin/clusters_controller.rb create mode 100644 app/controllers/concerns/enforces_admin_authentication.rb create mode 100644 app/controllers/concerns/import_url_params.rb create mode 100644 app/controllers/projects/stages_controller.rb create mode 100644 app/graphql/resolvers/group_resolver.rb create mode 100644 app/graphql/types/group_type.rb create mode 100644 app/graphql/types/namespace_type.rb create mode 100644 app/graphql/types/permission_types/group.rb create mode 100644 app/models/clusters/instance.rb create mode 100644 app/models/concerns/deprecated_assignee.rb create mode 100644 app/models/concerns/update_project_statistics.rb create mode 100644 app/models/project_metrics_setting.rb create mode 100644 app/models/project_services/chat_message/deployment_message.rb create mode 100644 app/policies/clusters/instance_policy.rb create mode 100644 app/presenters/instance_clusterable_presenter.rb create mode 100644 app/presenters/label_presenter.rb create mode 100644 app/serializers/merge_request_assignee_entity.rb delete mode 100644 app/serializers/merge_request_sidebar_basic_entity.rb create mode 100644 app/serializers/merge_request_sidebar_extras_entity.rb delete mode 100644 app/services/after_branch_delete_service.rb create mode 100644 app/services/ci/expire_pipeline_cache_service.rb create mode 100644 app/services/ci/play_manual_stage_service.rb create mode 100644 app/services/clusters/applications/check_uninstall_progress_service.rb create mode 100644 app/services/clusters/applications/destroy_service.rb create mode 100644 app/services/clusters/applications/uninstall_service.rb create mode 100644 app/services/git/base_hooks_service.rb create mode 100644 app/services/git/branch_hooks_service.rb create mode 100644 app/services/git/tag_hooks_service.rb create mode 100644 app/services/projects/lfs_pointers/lfs_object_download_list_service.rb create mode 100644 app/services/projects/update_statistics_service.rb create mode 100644 app/services/service_response.rb create mode 100644 app/validators/addressable_url_validator.rb delete mode 100644 app/validators/url_validator.rb create mode 100644 app/views/ci/variables/_variable_header.html.haml create mode 100644 app/views/notify/_reassigned_issuable_email.html.haml create mode 100644 app/views/notify/_removal_notification.html.haml create mode 100644 app/views/projects/_merge_request_merge_checks_settings.html.haml create mode 100644 app/views/projects/_merge_request_merge_options_settings.html.haml delete mode 100644 app/views/projects/_merge_request_merge_settings.html.haml create mode 100644 app/views/projects/buttons/_download_links.html.haml delete mode 100644 app/views/projects/issues/_merge_requests_status.html.haml create mode 100644 app/views/projects/mirrors/_disabled_mirror_badge.html.haml create mode 100644 app/views/projects/settings/_general.html.haml create mode 100644 app/views/projects/settings/operations/_external_dashboard.html.haml create mode 100644 app/views/shared/boards/components/sidebar/_time_tracker.html.haml create mode 100644 app/views/shared/icons/_gitea_logo.svg.erb delete mode 100644 app/views/shared/issuable/form/_merge_request_assignee.html.haml rename app/views/shared/issuable/form/{_metadata_issue_assignee.html.haml => _metadata_issuable_assignee.html.haml} (64%) create mode 100644 app/views/shared/projects/_search_bar.html.haml create mode 100644 app/views/shared/projects/_sort_dropdown.html.haml create mode 100644 app/workers/clusters/applications/uninstall_worker.rb create mode 100644 app/workers/clusters/applications/wait_for_uninstall_app_worker.rb create mode 100644 app/workers/deployments/finished_worker.rb create mode 100644 app/workers/pages_domain_removal_cron_worker.rb create mode 100644 app/workers/update_project_statistics_worker.rb delete mode 100644 config/initializers/active_record_avoid_type_casting_in_uniqueness_validator.rb create mode 100644 config/initializers/active_record_build_select.rb delete mode 100644 config/initializers/active_record_locking.rb create mode 100644 config/initializers/config_initializers_active_record_locking.rb create mode 100644 config/initializers/octokit.rb create mode 100644 config/initializers/seed_fu.rb create mode 100644 config/puma.rb.example create mode 100644 danger/ce_ee_vue_templates/Dangerfile create mode 100644 db/migrate/20180115094742_add_default_project_creation_setting.rb create mode 100644 db/migrate/20180115113902_add_project_creation_level_to_groups.rb delete mode 100644 db/migrate/20190311132500_add_default_project_creation_application_setting.rb delete mode 100644 db/migrate/20190311132527_add_project_creation_level_to_namespaces.rb create mode 100644 db/migrate/20190312113229_add_remove_at_to_pages_domains.rb create mode 100644 db/migrate/20190312113634_add_remove_at_index_to_pages_domains.rb create mode 100644 db/migrate/20190320174702_add_lets_encrypt_notification_email_to_application_settings.rb create mode 100644 db/migrate/20190322164830_add_auto_ssl_enabled_to_pages_domain.rb create mode 100644 db/migrate/20190325105715_add_fields_to_user_preferences.rb create mode 100644 db/migrate/20190329085614_add_lets_encrypt_terms_of_service_accepted_to_application_settings.rb create mode 100644 db/migrate/20190415030217_add_variable_type_to_ci_variables.rb create mode 100644 db/migrate/20190415095825_add_packages_size_to_project_statistics.rb create mode 100644 db/migrate/20190416185130_add_merge_train_enabled_to_ci_cd_settings.rb create mode 100644 db/migrate/20190416213556_add_variable_type_to_ci_group_variables.rb create mode 100644 db/migrate/20190416213615_add_variable_type_to_ci_pipeline_variables.rb create mode 100644 db/migrate/20190416213631_add_variable_type_to_ci_pipeline_schedule_variables.rb create mode 100644 db/migrate/20190418182545_create_merge_request_trains_table.rb create mode 100644 db/migrate/20190422082247_create_project_metrics_settings.rb create mode 100644 db/migrate/20190426180107_add_deployment_events_to_services.rb create mode 100644 db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb create mode 100644 db/post_migrate/20190424134256_drop_projects_ci_id.rb create mode 100644 db/post_migrate/20190506135400_schedule_sync_issuables_state_id_where_nil.rb create mode 100644 doc/administration/audit_events.md create mode 100644 doc/administration/audit_log.png create mode 100644 doc/administration/auditor_access_form.png create mode 100644 doc/administration/auditor_users.md create mode 100644 doc/administration/auth/how_to_configure_ldap_gitlab_ee/img/admin_group.png create mode 100644 doc/administration/auth/how_to_configure_ldap_gitlab_ee/img/group_link_final.png create mode 100644 doc/administration/auth/how_to_configure_ldap_gitlab_ee/img/group_linking.gif create mode 100644 doc/administration/auth/how_to_configure_ldap_gitlab_ee/img/manual_permissions.gif create mode 100644 doc/administration/auth/how_to_configure_ldap_gitlab_ee/img/multi_login.gif create mode 100644 doc/administration/auth/how_to_configure_ldap_gitlab_ee/index.md create mode 100644 doc/administration/auth/ldap-ee.md create mode 100644 doc/administration/auth/oidc.md create mode 100644 doc/administration/auth/smartcard.md create mode 100644 doc/administration/database_load_balancing.md create mode 100644 doc/administration/dependency_proxy.md create mode 100644 doc/administration/geo/disaster_recovery/background_verification.md create mode 100644 doc/administration/geo/disaster_recovery/bring_primary_back.md create mode 100644 doc/administration/geo/disaster_recovery/img/checksum-differences-admin-project-page.png create mode 100644 doc/administration/geo/disaster_recovery/img/checksum-differences-admin-projects.png create mode 100644 doc/administration/geo/disaster_recovery/img/replication-status.png create mode 100644 doc/administration/geo/disaster_recovery/img/reverification-interval.png create mode 100644 doc/administration/geo/disaster_recovery/img/verification-status-primary.png create mode 100644 doc/administration/geo/disaster_recovery/img/verification-status-secondary.png create mode 100644 doc/administration/geo/disaster_recovery/index.md create mode 100644 doc/administration/geo/disaster_recovery/planned_failover.md create mode 100644 doc/administration/geo/replication/configuration.md create mode 100644 doc/administration/geo/replication/configuration_source.md create mode 100644 doc/administration/geo/replication/database.md create mode 100644 doc/administration/geo/replication/database_source.md create mode 100644 doc/administration/geo/replication/docker_registry.md create mode 100644 doc/administration/geo/replication/external_database.md create mode 100644 doc/administration/geo/replication/faq.md create mode 100644 doc/administration/geo/replication/high_availability.md create mode 100644 doc/administration/geo/replication/img/geo_architecture.png create mode 100644 doc/administration/geo/replication/img/geo_node_dashboard.png create mode 100644 doc/administration/geo/replication/img/geo_node_healthcheck.png create mode 100644 doc/administration/geo/replication/img/geo_overview.png create mode 100644 doc/administration/geo/replication/index.md create mode 100644 doc/administration/geo/replication/object_storage.md create mode 100644 doc/administration/geo/replication/remove_geo_node.md create mode 100644 doc/administration/geo/replication/security_review.md create mode 100644 doc/administration/geo/replication/troubleshooting.md create mode 100644 doc/administration/geo/replication/tuning.md create mode 100644 doc/administration/geo/replication/updating_the_geo_nodes.md create mode 100644 doc/administration/geo/replication/using_a_geo_server.md create mode 100644 doc/administration/high_availability/alpha_database.md create mode 100644 doc/administration/high_availability/consul.md create mode 100644 doc/administration/high_availability/gitaly.md create mode 100644 doc/administration/high_availability/nfs_host_client_setup.md create mode 100644 doc/administration/high_availability/pg_ha_architecture.png create mode 100644 doc/administration/high_availability/pgbouncer.md create mode 100644 doc/administration/img/db_load_balancing_postgres_stats.png delete mode 100644 doc/administration/img/high_availability/active-active-diagram.png delete mode 100644 doc/administration/img/high_availability/active-passive-diagram.png create mode 100644 doc/administration/img/high_availability/fully-distributed.png create mode 100644 doc/administration/img/high_availability/geo-ha-diagram.png create mode 100644 doc/administration/img/high_availability/horizontal.png create mode 100644 doc/administration/img/high_availability/hybrid.png create mode 100644 doc/administration/img/instance_review_button.png create mode 100644 doc/administration/instance_review.md create mode 100644 doc/administration/maven_packages.md create mode 100644 doc/administration/maven_repository.md create mode 100644 doc/administration/monitoring/prometheus/pgbouncer_exporter.md create mode 100644 doc/administration/npm_registry.md create mode 100644 doc/administration/operations/extra_sidekiq_processes.md create mode 100644 doc/administration/operations/img/sidekiq-cluster.png create mode 100644 doc/administration/packages.md create mode 100644 doc/administration/pseudonymizer.md create mode 100644 doc/administration/raketasks/geo.md create mode 100644 doc/analytics/README.md create mode 100644 doc/analytics/contribution_analytics.md create mode 100644 doc/articles/how_to_configure_ldap_gitlab_ee/index.md create mode 100644 doc/ci/ci_cd_for_external_repos/bitbucket_integration.md create mode 100644 doc/ci/ci_cd_for_external_repos/github_integration.md create mode 100644 doc/ci/ci_cd_for_external_repos/img/bitbucket_app_password.png create mode 100644 doc/ci/ci_cd_for_external_repos/img/bitbucket_webhook.png create mode 100644 doc/ci/ci_cd_for_external_repos/img/ci_cd_for_external_repo.png create mode 100644 doc/ci/ci_cd_for_external_repos/img/external_repository.png create mode 100644 doc/ci/ci_cd_for_external_repos/img/github_omniauth.png create mode 100644 doc/ci/ci_cd_for_external_repos/img/github_omniauth_list.png create mode 100644 doc/ci/ci_cd_for_external_repos/img/github_push_webhook.png create mode 100644 doc/ci/ci_cd_for_external_repos/img/github_repo_list.png create mode 100644 doc/ci/ci_cd_for_external_repos/index.md create mode 100644 doc/ci/examples/dependency_scanning.md create mode 100644 doc/ci/examples/license_management.md create mode 100644 doc/ci/examples/sast.md create mode 100644 doc/ci/img/add_file_template_11_10.png create mode 100644 doc/ci/img/metrics_reports.png create mode 100644 doc/ci/img/multi_pipeline_mini_graph.gif create mode 100644 doc/ci/img/multi_project_pipeline_graph.png create mode 100644 doc/ci/introduction/img/gitlab_workflow_example_extended_11_11.png mode change 100755 => 100644 doc/ci/introduction/img/job_running.png mode change 100755 => 100644 doc/ci/introduction/img/pipeline_status.png mode change 100755 => 100644 doc/ci/introduction/img/rollback.png create mode 100644 doc/ci/metrics_reports.md create mode 100644 doc/ci/multi_project_pipeline_graphs.md create mode 100644 doc/ci/multi_project_pipelines.md mode change 100755 => 100644 doc/ci/variables/img/ci_job_stage_output_example.png delete mode 100755 doc/ci/variables/img/custom_variable_output.png create mode 100644 doc/ci/variables/img/custom_variables_output.png delete mode 100755 doc/ci/variables/img/new_custom_variable_example.png create mode 100644 doc/ci/variables/img/new_custom_variables_example.png mode change 100755 => 100644 doc/ci/variables/img/override_value_via_manual_pipeline_output.png mode change 100755 => 100644 doc/ci/variables/img/override_variable_manual_pipeline.png create mode 100644 doc/ci/variables/img/variable_types_usage_example.png create mode 100644 doc/customization/issue_and_merge_request_template.md create mode 100644 doc/development/elasticsearch.md create mode 100644 doc/development/fe_guide/frontend_faq.md create mode 100644 doc/development/geo.md create mode 100644 doc/development/integrations/jira_connect.md create mode 100644 doc/development/licensed_feature_availability.md create mode 100644 doc/development/packages.md create mode 100644 doc/development/session.md create mode 100644 doc/getting-started/subscription.md create mode 100644 doc/git_hooks/git_hooks.md create mode 100644 doc/gitlab-geo/README.md create mode 100644 doc/gitlab-geo/after_setup.md create mode 100644 doc/gitlab-geo/bring-primary-back.md create mode 100644 doc/gitlab-geo/configuration.md create mode 100644 doc/gitlab-geo/configuration_source.md create mode 100644 doc/gitlab-geo/database.md create mode 100644 doc/gitlab-geo/database_source.md create mode 100644 doc/gitlab-geo/disaster-recovery.md create mode 100644 doc/gitlab-geo/docker_registry.md create mode 100644 doc/gitlab-geo/faq.md create mode 100644 doc/gitlab-geo/ha.md create mode 100644 doc/gitlab-geo/object_storage.md create mode 100644 doc/gitlab-geo/planned-failover.md create mode 100644 doc/gitlab-geo/security-review.md create mode 100644 doc/gitlab-geo/ssh.md create mode 100644 doc/gitlab-geo/troubleshooting.md create mode 100644 doc/gitlab-geo/tuning.md create mode 100644 doc/gitlab-geo/updating_the_geo_nodes.md create mode 100644 doc/gitlab-geo/using_a_geo_server.md create mode 100644 doc/install/ldap.md create mode 100644 doc/install/pivotal/index.md create mode 100644 doc/integration/elasticsearch.md create mode 100644 doc/integration/img/jenkins_gitlab_plugin_config.png create mode 100644 doc/integration/img/jenkins_gitlab_service.png create mode 100644 doc/integration/img/jenkins_gitlab_service_settings.png create mode 100644 doc/integration/img/jenkins_project.png create mode 100644 doc/integration/img/jira_dev_panel_gl_setup_1.png create mode 100644 doc/integration/img/jira_dev_panel_jira_setup_1.png create mode 100644 doc/integration/img/jira_dev_panel_jira_setup_2.png create mode 100644 doc/integration/img/jira_dev_panel_jira_setup_3.png create mode 100644 doc/integration/img/jira_dev_panel_jira_setup_4.png create mode 100644 doc/integration/img/jira_dev_panel_jira_setup_5.png create mode 100644 doc/integration/img/jira_dev_panel_manual_refresh.png create mode 100644 doc/integration/img/limit_namespace_filter.png create mode 100644 doc/integration/img/limit_namespaces_projects_options.png create mode 100644 doc/integration/img/salesforce_app_details.png create mode 100644 doc/integration/img/salesforce_app_secret_details.png create mode 100644 doc/integration/img/salesforce_oauth_app_details.png create mode 100644 doc/integration/img/ultra_auth_credentials.png create mode 100644 doc/integration/img/ultra_auth_edit_callback_url.png create mode 100644 doc/integration/img/ultra_auth_edit_callback_url_highlighted.png create mode 100644 doc/integration/jenkins.md create mode 100644 doc/integration/jenkins_deprecated.md create mode 100644 doc/integration/jira_development_panel.md create mode 100644 doc/integration/kerberos.md create mode 100644 doc/integration/salesforce.md create mode 100644 doc/integration/ultra_auth.md create mode 100644 doc/license/README.md create mode 100644 doc/push_rules/push_rules.md create mode 100644 doc/subscriptions/billing_table.png create mode 100644 doc/subscriptions/index.md create mode 100644 doc/tools/email.md create mode 100644 doc/tools/email1.png create mode 100644 doc/tools/email2.png create mode 100644 doc/update/10.0-ce-to-ee.md create mode 100644 doc/update/10.1-ce-to-ee.md create mode 100644 doc/update/10.2-ce-to-ee.md create mode 100644 doc/update/10.3-ce-to-ee.md create mode 100644 doc/update/10.4-ce-to-ee.md create mode 100644 doc/update/10.5-ce-to-ee.md create mode 100644 doc/update/10.6-ce-to-ee.md create mode 100644 doc/update/10.7-ce-to-ee.md create mode 100644 doc/update/10.8-ce-to-ee.md create mode 100644 doc/update/11.0-ce-to-ee.md create mode 100644 doc/update/11.1-ce-to-ee.md create mode 100644 doc/update/11.2-ce-to-ee.md create mode 100644 doc/update/11.3-ce-to-ee.md create mode 100644 doc/update/11.4-ce-to-ee.md create mode 100644 doc/update/11.5-ce-to-ee.md create mode 100644 doc/update/11.6-ce-to-ee.md create mode 100644 doc/update/11.7-ce-to-ee.md create mode 100644 doc/update/11.8-ce-to-ee.md create mode 100644 doc/update/6.0-ce-to-ee.md create mode 100644 doc/update/6.1-ce-to-ee.md create mode 100644 doc/update/6.2-ce-to-ee.md create mode 100644 doc/update/6.3-ce-to-ee.md create mode 100644 doc/update/6.4-ce-to-ee.md create mode 100644 doc/update/6.5-ce-to-ee.md create mode 100644 doc/update/6.6-ce-to-ee.md create mode 100644 doc/update/6.7-ce-to-ee.md create mode 100644 doc/update/6.8-ce-to-ee.md create mode 100644 doc/update/6.9-ce-to-ee.md create mode 100644 doc/update/7.0-ce-to-ee.md create mode 100644 doc/update/7.1-ce-to-ee.md create mode 100644 doc/update/7.10-ce-to-ee.md create mode 100644 doc/update/7.11-ce-to-ee.md create mode 100644 doc/update/7.12-ce-to-ee.md create mode 100644 doc/update/7.13-ce-to-ee.md create mode 100644 doc/update/7.14-ce-to-ee.md create mode 100644 doc/update/7.3-ce-to-ee.md create mode 100644 doc/update/7.4-ce-to-ee.md create mode 100644 doc/update/7.5-ce-to-ee.md create mode 100644 doc/update/7.6-ce-to-ee.md create mode 100644 doc/update/7.7-ce-to-ee.md create mode 100644 doc/update/7.8-ce-to-ee.md create mode 100644 doc/update/7.9-ce-to-ee.md create mode 100644 doc/update/8.0-ce-to-ee.md create mode 100644 doc/update/8.1-ce-to-ee.md create mode 100644 doc/update/8.10-ce-to-ee.md create mode 100644 doc/update/8.11-ce-to-ee.md create mode 100644 doc/update/8.12-ce-to-ee.md create mode 100644 doc/update/8.13-ce-to-ee.md create mode 100644 doc/update/8.14-ce-to-ee.md create mode 100644 doc/update/8.15-ce-to-ee.md create mode 100644 doc/update/8.16-ce-to-ee.md create mode 100644 doc/update/8.17-ce-to-ee.md create mode 100644 doc/update/8.2-ce-to-ee.md create mode 100644 doc/update/8.3-ce-to-ee.md create mode 100644 doc/update/8.4-ce-to-ee.md create mode 100644 doc/update/8.5-ce-to-ee.md create mode 100644 doc/update/8.6-ce-to-ee.md create mode 100644 doc/update/8.7-ce-to-ee.md create mode 100644 doc/update/8.8-ce-to-ee.md create mode 100644 doc/update/8.9-ce-to-ee.md create mode 100644 doc/update/9.0-ce-to-ee.md create mode 100644 doc/update/9.1-ce-to-ee.md create mode 100644 doc/update/9.2-ce-to-ee.md create mode 100644 doc/update/9.3-ce-to-ee.md create mode 100644 doc/update/9.4-ce-to-ee.md create mode 100644 doc/update/9.5-ce-to-ee.md create mode 100644 doc/user/admin_area/geo_nodes.md create mode 100644 doc/user/admin_area/img/admin_wrench.png create mode 100644 doc/user/admin_area/img/license_admin_area.png create mode 100644 doc/user/admin_area/img/license_details.png create mode 100644 doc/user/admin_area/img/license_no_license_message.png create mode 100644 doc/user/admin_area/img/license_upload.png create mode 100644 doc/user/admin_area/license.md create mode 100644 doc/user/admin_area/settings/account_and_limit_settings.md create mode 100644 doc/user/admin_area/settings/img/additional_minutes.png create mode 100644 doc/user/admin_area/settings/img/admin_area_group_edit.png create mode 100644 doc/user/admin_area/settings/img/admin_area_groups.png create mode 100644 doc/user/admin_area/settings/img/admin_project_quota_view.png create mode 100644 doc/user/admin_area/settings/img/buy_btn.png create mode 100644 doc/user/admin_area/settings/img/buy_minutes_card.png create mode 100644 doc/user/admin_area/settings/img/ci_shared_runners_build_minutes_quota.png create mode 100644 doc/user/admin_area/settings/img/email_settings.png create mode 100644 doc/user/admin_area/settings/img/file_template_admin_area.png create mode 100644 doc/user/admin_area/settings/img/file_template_user_dropdown.png create mode 100644 doc/user/admin_area/settings/img/group_pipelines_quota.png create mode 100644 doc/user/admin_area/settings/img/group_quota_view.png create mode 100644 doc/user/admin_area/settings/img/group_settings.png create mode 100644 doc/user/admin_area/settings/img/mirror_settings.png create mode 100644 doc/user/admin_area/settings/instance_template_repository.md create mode 100644 doc/user/application_security/container_scanning/img/container_scanning.png create mode 100644 doc/user/application_security/container_scanning/index.md create mode 100644 doc/user/application_security/dast/img/dast_all.png create mode 100644 doc/user/application_security/dast/img/dast_single.png create mode 100644 doc/user/application_security/dast/index.md create mode 100644 doc/user/application_security/dependency_scanning/img/dependency_scanning.png create mode 100644 doc/user/application_security/dependency_scanning/index.md create mode 100644 doc/user/application_security/img/create_issue_with_list_hover.png create mode 100644 doc/user/application_security/img/interactive_reports.png create mode 100644 doc/user/application_security/img/issue.png create mode 100644 doc/user/application_security/img/vulnerability_solution.png create mode 100644 doc/user/application_security/index.md create mode 100644 doc/user/application_security/license_management/img/license_management.png create mode 100644 doc/user/application_security/license_management/img/license_management_decision.png create mode 100644 doc/user/application_security/license_management/img/license_management_pipeline_tab.png create mode 100644 doc/user/application_security/license_management/img/license_management_settings.png create mode 100644 doc/user/application_security/license_management/index.md create mode 100644 doc/user/application_security/sast/img/sast.png create mode 100644 doc/user/application_security/sast/img/security_report.png create mode 100644 doc/user/application_security/sast/index.md create mode 100644 doc/user/application_security/security_dashboard/img/dashboard.png create mode 100644 doc/user/application_security/security_dashboard/img/project_security_dashboard.png create mode 100644 doc/user/application_security/security_dashboard/index.md create mode 100644 doc/user/discussions/img/mr_review_resolve.png create mode 100644 doc/user/discussions/img/mr_review_resolve2.png create mode 100644 doc/user/discussions/img/mr_review_second_comment.png create mode 100644 doc/user/discussions/img/mr_review_second_comment_added.png create mode 100644 doc/user/discussions/img/mr_review_start.png create mode 100644 doc/user/discussions/img/mr_review_unresolve.png create mode 100644 doc/user/discussions/img/mr_review_unresolve2.png create mode 100644 doc/user/discussions/img/pending_review_comment.png create mode 100644 doc/user/discussions/img/review_comment_quickactions.png create mode 100644 doc/user/discussions/img/review_preview.png create mode 100644 doc/user/group/contribution_analytics/img/group_stats_cal.png create mode 100644 doc/user/group/contribution_analytics/img/group_stats_graph.png create mode 100644 doc/user/group/contribution_analytics/img/group_stats_table.png create mode 100644 doc/user/group/contribution_analytics/index.md create mode 100644 doc/user/group/dependency_proxy/img/group_dependency_proxy.png create mode 100644 doc/user/group/dependency_proxy/index.md create mode 100644 doc/user/group/epics/img/button_close_epic.png create mode 100644 doc/user/group/epics/img/button_reopen_epic.png create mode 100644 doc/user/group/epics/img/child_epics_roadmap.png create mode 100644 doc/user/group/epics/img/containing_epic.png create mode 100644 doc/user/group/epics/img/epic_view.png create mode 100644 doc/user/group/epics/img/epics_list_view.png create mode 100644 doc/user/group/epics/img/epics_search.png create mode 100644 doc/user/group/epics/img/epics_sort.png create mode 100644 doc/user/group/epics/index.md create mode 100644 doc/user/group/img/group_file_template_dropdown.png create mode 100644 doc/user/group/img/group_file_template_settings.png create mode 100644 doc/user/group/img/group_issue_board.png create mode 100644 doc/user/group/img/member_lock.png delete mode 100644 doc/user/group/img/membership_lock.png create mode 100644 doc/user/group/insights/img/insights_example_stacked_bar_chart.png create mode 100644 doc/user/group/insights/img/insights_group_configuration.png create mode 100644 doc/user/group/insights/index.md create mode 100644 doc/user/group/issues_analytics/img/issues_created_per_month.png create mode 100644 doc/user/group/issues_analytics/index.md create mode 100644 doc/user/group/roadmap/img/epics_state_dropdown.png create mode 100644 doc/user/group/roadmap/img/roadmap_timeline_months.png create mode 100644 doc/user/group/roadmap/img/roadmap_timeline_quarters.png create mode 100644 doc/user/group/roadmap/img/roadmap_timeline_weeks.png create mode 100644 doc/user/group/roadmap/img/roadmap_view.png create mode 100644 doc/user/group/roadmap/index.md create mode 100644 doc/user/group/saml_sso/img/group_saml_configuration_information.png create mode 100644 doc/user/group/saml_sso/img/group_saml_settings.png create mode 100644 doc/user/group/saml_sso/img/scim_advanced.png create mode 100644 doc/user/group/saml_sso/img/scim_attribute_mapping.png create mode 100644 doc/user/group/saml_sso/img/scim_token.png create mode 100644 doc/user/group/saml_sso/img/unlink_group_saml.png create mode 100644 doc/user/group/saml_sso/index.md create mode 100644 doc/user/group/saml_sso/scim_setup.md create mode 100644 doc/user/group/security_dashboard/index.md create mode 100644 doc/user/instance/clusters/index.md create mode 100644 doc/user/operations_dashboard/img/index_operations_dashboard_top_bar_icon.png create mode 100644 doc/user/operations_dashboard/img/index_operations_dashboard_with_projects.png create mode 100644 doc/user/operations_dashboard/index.md create mode 100644 doc/user/project/canary_deployments.md create mode 100644 doc/user/project/ci_cd_for_external_repo.md create mode 100644 doc/user/project/clusters/img/k8s_cluster_monitoring.png create mode 100644 doc/user/project/clusters/img/kubernetes_pod_logs.png create mode 100644 doc/user/project/clusters/img/pod_logs_deploy_board.png create mode 100644 doc/user/project/clusters/kubernetes_pod_logs.md create mode 100644 doc/user/project/code_owners.md create mode 100644 doc/user/project/deploy_boards.md create mode 100644 doc/user/project/file_lock.md create mode 100644 doc/user/project/img/assignee_lists.png create mode 100644 doc/user/project/img/deploy_boards_canary_deployments.png create mode 100644 doc/user/project/img/deploy_boards_kubernetes_label.png create mode 100644 doc/user/project/img/deploy_boards_landing_page.png create mode 100644 doc/user/project/img/description_templates_default_settings.png create mode 100644 doc/user/project/img/file_lock.png create mode 100644 doc/user/project/img/file_lock_folders.png create mode 100644 doc/user/project/img/file_lock_list.png create mode 100644 doc/user/project/img/file_lock_merge_request_error_message.png create mode 100644 doc/user/project/img/file_lock_repository_view.png create mode 100644 doc/user/project/img/key_value_labels.png create mode 100644 doc/user/project/img/labels_epic_sidebar.png create mode 100644 doc/user/project/img/project_security_dashboard.png create mode 100644 doc/user/project/img/protected_branches_select_roles_and_users.png create mode 100644 doc/user/project/img/protected_branches_select_roles_and_users_list.png create mode 100644 doc/user/project/img/service_desk_confirmation_email.png create mode 100644 doc/user/project/img/service_desk_disabled.png create mode 100644 doc/user/project/img/service_desk_enabled.png create mode 100644 doc/user/project/img/service_desk_issue_tracker.png create mode 100644 doc/user/project/img/service_desk_nav_item.png create mode 100644 doc/user/project/img/service_desk_reply.png create mode 100644 doc/user/project/img/service_desk_thread.png create mode 100644 doc/user/project/import/gemnasium.md create mode 100644 doc/user/project/import/img/gemnasium/connect_github.png create mode 100644 doc/user/project/import/img/gemnasium/create_project.png create mode 100644 doc/user/project/import/img/gemnasium/edit_gitlab-ci.png create mode 100644 doc/user/project/import/img/gemnasium/pipeline.png create mode 100644 doc/user/project/import/img/gemnasium/project_connected.png create mode 100644 doc/user/project/import/img/gemnasium/report.png create mode 100644 doc/user/project/import/img/gemnasium/select_project.png create mode 100644 doc/user/project/insights/img/insights_example_bar_chart.png create mode 100644 doc/user/project/insights/img/insights_example_bar_time_series_chart.png create mode 100644 doc/user/project/insights/img/insights_example_line_chart.png create mode 100644 doc/user/project/insights/img/insights_example_pie_chart.png create mode 100644 doc/user/project/insights/img/insights_example_stacked_bar_chart.png create mode 100644 doc/user/project/insights/img/project_insights.png create mode 100644 doc/user/project/insights/index.md create mode 100644 doc/user/project/integrations/github.md create mode 100644 doc/user/project/integrations/gitlab_slack_application.md create mode 100644 doc/user/project/integrations/img/github_configuration.png create mode 100644 doc/user/project/integrations/img/github_status_check_pipeline_update.png create mode 100644 doc/user/project/integrations/img/gitlab_slack_app_landing_page.png create mode 100644 doc/user/project/integrations/img/prometheus_add_metric.png create mode 100644 doc/user/project/integrations/img/prometheus_alert.png create mode 100644 doc/user/project/integrations/img/prometheus_service_alerts.png create mode 100644 doc/user/project/issues/csv_export.md create mode 100644 doc/user/project/issues/img/create_issue_from_group_level_issue_tracker.png create mode 100644 doc/user/project/issues/img/csv_export_button.png create mode 100644 doc/user/project/issues/img/csv_export_modal.png create mode 100644 doc/user/project/issues/img/multiple_assignees.gif create mode 100644 doc/user/project/issues/img/multiple_assignees_for_issues.png create mode 100644 doc/user/project/issues/img/related_issues_add.png create mode 100644 doc/user/project/issues/img/related_issues_remove.png create mode 100644 doc/user/project/issues/img/select_project_from_group_level_issue_tracker.png rename doc/user/project/issues/{issues_functionalities.md => issue_data_and_actions.md} (95%) create mode 100644 doc/user/project/issues/multiple_assignees_for_issues.md create mode 100644 doc/user/project/issues/related_issues.md create mode 100644 doc/user/project/maven_packages.md create mode 100644 doc/user/project/merge_requests/browser_performance_testing.md create mode 100644 doc/user/project/merge_requests/code_quality.md create mode 100644 doc/user/project/merge_requests/code_quality_diff.md create mode 100644 doc/user/project/merge_requests/container_scanning.md create mode 100644 doc/user/project/merge_requests/dast.md create mode 100644 doc/user/project/merge_requests/dependency_scanning.md create mode 100644 doc/user/project/merge_requests/img/approvals_can_override.png create mode 100644 doc/user/project/merge_requests/img/approvals_premium_mr_widget.png create mode 100644 doc/user/project/merge_requests/img/approvals_premium_project_edit.png create mode 100644 doc/user/project/merge_requests/img/approvals_remove_on_push.png create mode 100644 doc/user/project/merge_requests/img/approvals_starter_project_edit.png create mode 100644 doc/user/project/merge_requests/img/approvals_starter_project_empty.png create mode 100644 doc/user/project/merge_requests/img/approve.png create mode 100644 doc/user/project/merge_requests/img/approve_additionally.png create mode 100644 doc/user/project/merge_requests/img/browser_performance_testing.png create mode 100644 doc/user/project/merge_requests/img/code_quality.gif create mode 100644 doc/user/project/merge_requests/img/container_scanning.png create mode 100644 doc/user/project/merge_requests/img/create-issue-with-list-hover.png create mode 100644 doc/user/project/merge_requests/img/dast_all.png create mode 100644 doc/user/project/merge_requests/img/dast_single.png create mode 100644 doc/user/project/merge_requests/img/dependency_scanning.png create mode 100644 doc/user/project/merge_requests/img/filter_approver_merge_requests.png create mode 100644 doc/user/project/merge_requests/img/interactive_reports.png create mode 100644 doc/user/project/merge_requests/img/license_management.png create mode 100644 doc/user/project/merge_requests/img/license_management_decision.png create mode 100644 doc/user/project/merge_requests/img/license_management_pipeline_tab.png create mode 100644 doc/user/project/merge_requests/img/license_management_settings.png create mode 100644 doc/user/project/merge_requests/img/multiple_assignees_for_merge_requests_sidebar.png create mode 100644 doc/user/project/merge_requests/img/remove_approval.png create mode 100644 doc/user/project/merge_requests/img/sast.png create mode 100644 doc/user/project/merge_requests/img/security_report.png create mode 100644 doc/user/project/merge_requests/img/vulnerability_solution.png create mode 100644 doc/user/project/merge_requests/license_management.md create mode 100644 doc/user/project/merge_requests/merge_request_approvals.md create mode 100644 doc/user/project/merge_requests/sast.md create mode 100644 doc/user/project/merge_requests/sast_docker.md create mode 100644 doc/user/project/milestones/burndown_charts.md create mode 100644 doc/user/project/milestones/img/burndown_chart.png create mode 100644 doc/user/project/operations/feature_flags.md create mode 100644 doc/user/project/operations/img/feature_flags_list.png create mode 100644 doc/user/project/operations/img/specs_list.png create mode 100644 doc/user/project/operations/tracing.md create mode 100644 doc/user/project/packages/img/maven_package_view.png create mode 100644 doc/user/project/packages/img/npm_package_view.png create mode 100644 doc/user/project/packages/maven.md create mode 100644 doc/user/project/packages/maven_packages.md create mode 100644 doc/user/project/packages/maven_repository.md create mode 100644 doc/user/project/packages/npm_registry.md delete mode 100644 doc/user/project/pages/img/pages_remove.png create mode 100644 doc/user/project/pages/img/remove_pages.png create mode 100644 doc/user/project/repository/img/download_source_code.png create mode 100644 doc/user/project/security_dashboard.md create mode 100644 doc/user/project/service_desk.md create mode 100644 doc/user/search/advanced_global_search.md create mode 100644 doc/user/search/advanced_search_syntax.md create mode 100644 doc/user/search/img/advanced_global_search.png create mode 100644 doc/user/search/img/multiple_assignees.png create mode 100644 doc/workflow/ff_merge.md create mode 100644 doc/workflow/git_annex.md create mode 100644 doc/workflow/git_lfs.md create mode 100644 doc/workflow/img/copy_ssh_public_key_button.png create mode 100644 doc/workflow/issue_weight.md create mode 100644 doc/workflow/issue_weight/issue.png create mode 100644 doc/workflow/lfs/images/git-annex-branches.png create mode 100644 doc/workflow/lfs/migrate_from_git_annex_to_git_lfs.md create mode 100644 doc/workflow/merge_request_approvals.md create mode 100644 doc/workflow/rebase_before_merge.md create mode 100644 lib/gitlab/ci/pipeline/expression/lexeme/not_equals.rb create mode 100644 lib/gitlab/ci/pipeline/expression/lexeme/not_matches.rb create mode 100644 lib/gitlab/ci/status/stage/play_manual.rb create mode 100644 lib/gitlab/ci/templates/dotNET-Core.yml create mode 100644 lib/gitlab/data_builder/deployment.rb rename lib/gitlab/graphql/{tracing.rb => generic_tracing.rb} (59%) create mode 100644 lib/gitlab/kubernetes/helm/delete_command.rb create mode 100644 lib/gitlab/metrics/dashboard/base_service.rb create mode 100644 lib/gitlab/metrics/dashboard/finder.rb create mode 100644 lib/gitlab/metrics/dashboard/processor.rb create mode 100644 lib/gitlab/metrics/dashboard/project_dashboard_service.rb create mode 100644 lib/gitlab/metrics/dashboard/stages/base_stage.rb create mode 100644 lib/gitlab/metrics/dashboard/stages/common_metrics_inserter.rb create mode 100644 lib/gitlab/metrics/dashboard/stages/project_metrics_inserter.rb create mode 100644 lib/gitlab/metrics/dashboard/stages/sorter.rb create mode 100644 lib/gitlab/metrics/dashboard/system_dashboard_service.rb create mode 100644 lib/gitlab/namespaced_session_store.rb create mode 100644 lib/gitlab/octokit/middleware.rb create mode 100644 lib/gitlab/session.rb delete mode 100644 lib/gitlab/tracing/common.rb delete mode 100644 lib/gitlab/tracing/factory.rb delete mode 100644 lib/gitlab/tracing/grpc_interceptor.rb delete mode 100644 lib/gitlab/tracing/jaeger_factory.rb delete mode 100644 lib/gitlab/tracing/rack_middleware.rb delete mode 100644 lib/gitlab/tracing/rails/action_view_subscriber.rb delete mode 100644 lib/gitlab/tracing/rails/active_record_subscriber.rb delete mode 100644 lib/gitlab/tracing/rails/rails_common.rb delete mode 100644 lib/gitlab/tracing/sidekiq/client_middleware.rb delete mode 100644 lib/gitlab/tracing/sidekiq/server_middleware.rb delete mode 100644 lib/gitlab/tracing/sidekiq/sidekiq_common.rb create mode 100644 lib/gitlab/utils/sanitize_node_link.rb create mode 100644 lib/quality/seeders/issues.rb create mode 100644 lib/tasks/gitlab/seed.rake create mode 100644 qa/qa/page/admin/settings/component/performance_bar.rb create mode 100644 qa/qa/page/admin/settings/metrics_and_profiling.rb create mode 100644 qa/qa/page/layout/performance_bar.rb create mode 100644 qa/qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb create mode 100644 rubocop/cop/active_record_association_reload.rb create mode 100644 security.txt create mode 100644 spec/controllers/admin/clusters/applications_controller_spec.rb create mode 100644 spec/controllers/admin/clusters_controller_spec.rb create mode 100644 spec/controllers/concerns/enforces_admin_authentication_spec.rb create mode 100644 spec/controllers/concerns/import_url_params_spec.rb create mode 100644 spec/controllers/projects/stages_controller_spec.rb create mode 100644 spec/factories/project_metrics_settings.rb rename spec/features/merge_request/{user_tries_to_access_private_repository_through_new_mr_spec.rb => user_tries_to_access_private_project_info_through_new_mr_spec.rb} (58%) create mode 100644 spec/features/profiles/user_edit_preferences_spec.rb create mode 100644 spec/features/projects/labels/user_promotes_label_spec.rb create mode 100644 spec/fixtures/api/schemas/public_api/v4/artifact.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/artifact_file.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/deployment.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/environment.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/job.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/release/release_for_guest.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/release/releases_for_guest.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/release/tag_release.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/releases.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/runner.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/sample_dashboard.yml create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/dashboard.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/metrics.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/panel_groups.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/panels.json create mode 100644 spec/frontend/clusters/components/uninstall_application_button_spec.js create mode 100644 spec/frontend/clusters/components/uninstall_application_confirmation_modal_spec.js create mode 100644 spec/frontend/clusters/services/application_state_machine_spec.js create mode 100644 spec/frontend/ide/services/index_spec.js create mode 100644 spec/frontend/import_projects/components/import_projects_table_spec.js rename spec/{javascripts => frontend}/import_projects/components/imported_project_table_row_spec.js (77%) rename spec/{javascripts => frontend}/import_projects/components/provider_repo_table_row_spec.js (54%) rename spec/{javascripts => frontend}/import_projects/store/actions_spec.js (98%) create mode 100644 spec/frontend/notes/components/discussion_actions_spec.js create mode 100644 spec/frontend/notes/components/discussion_notes_spec.js create mode 100644 spec/frontend/operation_settings/components/external_dashboard_spec.js rename spec/{javascripts => frontend}/vue_shared/components/issue/issue_assignees_spec.js (96%) create mode 100644 spec/frontend/vue_shared/components/issue/issue_milestone_spec.js rename spec/{javascripts => frontend}/vue_shared/components/issue/issue_warning_spec.js (82%) rename spec/{javascripts => frontend}/vue_shared/components/issue/related_issuable_item_spec.js (93%) create mode 100644 spec/frontend/vue_shared/components/markdown/suggestion_diff_header_spec.js rename spec/{javascripts => frontend}/vue_shared/components/notes/placeholder_note_spec.js (95%) rename spec/{javascripts => frontend}/vue_shared/components/notes/placeholder_system_note_spec.js (90%) rename spec/{javascripts => frontend}/vue_shared/components/notes/system_note_spec.js (91%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/collapsed_calendar_icon_spec.js (89%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/collapsed_grouped_date_picker_spec.js (94%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/date_picker_spec.js (94%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/base_spec.js (75%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_button_spec.js (94%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_create_label_spec.js (95%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_footer_spec.js (93%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_header_spec.js (93%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_search_input_spec.js (93%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_title_spec.js (93%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_value_collapsed_spec.js (87%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/labels_select/dropdown_value_spec.js (95%) rename spec/{javascripts => frontend}/vue_shared/components/sidebar/toggle_sidebar_spec.js (88%) create mode 100644 spec/graphql/types/group_type_spec.rb create mode 100644 spec/graphql/types/namespace_type.rb create mode 100644 spec/javascripts/boards/board_list_common_spec.js create mode 100644 spec/javascripts/boards/components/issue_card_inner_scoped_label_spec.js delete mode 100644 spec/javascripts/fixtures/environments/table.html.haml create mode 100644 spec/javascripts/fixtures/static/environments/table.html rename spec/javascripts/fixtures/{ => static}/images/green_box.png (100%) rename spec/javascripts/fixtures/{ => static/images}/one_white_pixel.png (100%) rename spec/javascripts/fixtures/{ => static}/images/red_box.png (100%) rename spec/javascripts/fixtures/{ => static}/projects.json (100%) delete mode 100644 spec/javascripts/fixtures/static_fixtures.rb delete mode 100644 spec/javascripts/import_projects/components/import_projects_table_spec.js create mode 100644 spec/javascripts/pipelines/pipeline_triggerer_spec.js delete mode 100644 spec/javascripts/vue_shared/components/issue/issue_milestone_spec.js delete mode 100644 spec/javascripts/vue_shared/components/markdown/suggestion_diff_header_spec.js create mode 100644 spec/lib/gitlab/ci/pipeline/expression/lexeme/not_equals_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline/expression/lexeme/not_matches_spec.rb create mode 100644 spec/lib/gitlab/ci/status/stage/play_manual_spec.rb delete mode 100644 spec/lib/gitlab/correlation_id_spec.rb create mode 100644 spec/lib/gitlab/data_builder/deployment_spec.rb create mode 100644 spec/lib/gitlab/graphql/generic_tracing_spec.rb delete mode 100644 spec/lib/gitlab/graphql/tracing_spec.rb create mode 100644 spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/finder_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/processor_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/project_dashboard_service_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/system_dashboard_service_spec.rb create mode 100644 spec/lib/gitlab/namespaced_session_store_spec.rb create mode 100644 spec/lib/gitlab/octokit/middleware_spec.rb create mode 100644 spec/lib/gitlab/session_spec.rb delete mode 100644 spec/lib/gitlab/tracing/factory_spec.rb delete mode 100644 spec/lib/gitlab/tracing/grpc_interceptor_spec.rb delete mode 100644 spec/lib/gitlab/tracing/jaeger_factory_spec.rb delete mode 100644 spec/lib/gitlab/tracing/rack_middleware_spec.rb delete mode 100644 spec/lib/gitlab/tracing/rails/action_view_subscriber_spec.rb delete mode 100644 spec/lib/gitlab/tracing/rails/active_record_subscriber_spec.rb delete mode 100644 spec/lib/gitlab/tracing/sidekiq/client_middleware_spec.rb delete mode 100644 spec/lib/gitlab/tracing/sidekiq/server_middleware_spec.rb create mode 100644 spec/lib/gitlab/utils/sanitize_node_link_spec.rb create mode 100644 spec/lib/quality/seeders/issues_spec.rb create mode 100644 spec/migrations/schedule_sync_issuables_state_id_where_nil_spec.rb create mode 100644 spec/models/concerns/deprecated_assignee_spec.rb create mode 100644 spec/models/project_metrics_setting_spec.rb create mode 100644 spec/models/project_services/chat_message/deployment_message_spec.rb create mode 100644 spec/policies/clusters/instance_policy_spec.rb create mode 100644 spec/presenters/label_presenter_spec.rb delete mode 100644 spec/rack_servers/configs/puma.rb create mode 100644 spec/requests/api/graphql/group_query_spec.rb create mode 100644 spec/rubocop/cop/active_record_association_reload_spec.rb create mode 100644 spec/serializers/stage_serializer_spec.rb delete mode 100644 spec/services/after_branch_delete_service_spec.rb create mode 100644 spec/services/ci/expire_pipeline_cache_service_spec.rb create mode 100644 spec/services/ci/play_manual_stage_service_spec.rb create mode 100644 spec/services/clusters/applications/check_uninstall_progress_service_spec.rb create mode 100644 spec/services/clusters/applications/destroy_service_spec.rb create mode 100644 spec/services/clusters/applications/uninstall_service_spec.rb create mode 100644 spec/services/git/branch_hooks_service_spec.rb create mode 100644 spec/services/git/tag_hooks_service_spec.rb create mode 100644 spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb create mode 100644 spec/services/projects/update_statistics_service_spec.rb create mode 100644 spec/services/service_response_spec.rb create mode 100644 spec/support/helpers/metrics_dashboard_helpers.rb create mode 100644 spec/support/helpers/wait_helpers.rb create mode 100644 spec/support/protected_branch_helpers.rb create mode 100644 spec/support/protected_tag_helpers.rb create mode 100644 spec/support/shared_contexts/merge_request_create.rb create mode 100644 spec/support/shared_contexts/merge_request_edit.rb create mode 100644 spec/support/shared_examples/ci/stage_shared_examples.rb create mode 100644 spec/support/shared_examples/features/multiple_assignees_mr_shared_examples.rb create mode 100644 spec/support/shared_examples/finders/assignees_filter_spec.rb create mode 100644 spec/support/shared_examples/models/ci_variable_shared_examples.rb create mode 100644 spec/support/shared_examples/models/update_project_statistics_spec.rb rename spec/validators/{url_validator_spec.rb => addressable_url_validator_spec.rb} (60%) create mode 100644 spec/views/notify/pipeline_failed_email.text.erb_spec.rb delete mode 100644 spec/views/projects/issues/_merge_requests_status.html.haml_spec.rb create mode 100644 spec/views/shared/_label_row.html.haml.rb create mode 100644 spec/workers/clusters/applications/wait_for_uninstall_app_worker_spec.rb create mode 100644 spec/workers/deployments/finished_worker_spec.rb create mode 100644 spec/workers/pages_domain_removal_cron_worker_spec.rb create mode 100644 spec/workers/update_project_statistics_worker_spec.rb diff --git a/.gitignore b/.gitignore index 0696dd217a..627c806787 100644 --- a/.gitignore +++ b/.gitignore @@ -59,8 +59,6 @@ eslint-report.html /public/uploads.* /public/uploads/ /shared/artifacts/ -/spec/javascripts/fixtures/blob/pdf/ -/spec/javascripts/fixtures/blob/balsamiq/ /rails_best_practices_output.html /tags /tmp/* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4eb17656ed..44beccd966 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,29 +1,4 @@ -image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-golang-1.11-git-2.18-chrome-73.0-node-10.x-yarn-1.12-postgresql-9.6-graphicsmagick-1.3.29" - -include: - - local: /lib/gitlab/ci/templates/Code-Quality.gitlab-ci.yml - -.dedicated-runner: &dedicated-runner - retry: 1 - tags: - - gitlab-org - -.default-cache: &default-cache - key: "debian-stretch-ruby-2.5.3-node-10.x" - paths: - - vendor/ruby - - .yarn-cache/ - - vendor/gitaly-ruby - -.push-cache: &push-cache - cache: - <<: *default-cache - policy: push - -.pull-cache: &pull-cache - cache: - <<: *default-cache - policy: pull +image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-golang-1.11-git-2.21-chrome-73.0-node-10.x-yarn-1.12-postgresql-9.6-graphicsmagick-1.3.29" variables: MYSQL_ALLOW_EMPTY_PASSWORD: "1" @@ -53,1092 +28,21 @@ stages: - prepare - merge - test + - review + - qa - post-test - pages - post-cleanup -# Predefined scopes -.tests-metadata-state: &tests-metadata-state - <<: *dedicated-runner - variables: - TESTS_METADATA_S3_BUCKET: "gitlab-ce-cache" - before_script: - - source scripts/utils.sh - artifacts: - expire_in: 31d - paths: - - knapsack/ - - rspec_flaky/ - - rspec_profiling/ - -.use-pg: &use-pg - services: - - postgres:9.6 - - redis:alpine - -.use-mysql: &use-mysql - services: - - mysql:5.7 - - redis:alpine - -# Skip all jobs except the ones that begin with 'docs/'. -# Used for commits including ONLY documentation changes. -# https://docs.gitlab.com/ce/development/documentation/#testing -.except-docs: &except-docs - except: - - /(^docs[\/-].*|.*-docs$)/ - -.except-qa: &except-qa - except: - - /(^qa[\/-].*|.*-qa$)/ - -.except-docs-and-qa: &except-docs-and-qa - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ - -# Jobs that only need to pull cache -.dedicated-no-docs-pull-cache-job: &dedicated-no-docs-pull-cache-job - <<: *dedicated-runner - <<: *except-docs - <<: *pull-cache - dependencies: - - setup-test-env - stage: test - -# Jobs that do not need a DB -.dedicated-no-docs-no-db-pull-cache-job: &dedicated-no-docs-no-db-pull-cache-job - <<: *dedicated-no-docs-pull-cache-job - variables: - SETUP_DB: "false" - -.dedicated-no-docs-and-no-qa-pull-cache-job: &dedicated-no-docs-and-no-qa-pull-cache-job - <<: *dedicated-no-docs-pull-cache-job - <<: *except-docs-and-qa - -.single-script-job: &single-script-job - image: ruby:2.5-alpine - stage: test - cache: {} - dependencies: [] - variables: &single-script-job-variables - GIT_STRATEGY: none - before_script: - # We don't clone the repo by using GIT_STRATEGY: none and only download the - # single script we need here so it's much faster than cloning. - - export SCRIPT_NAME="${SCRIPT_NAME:-$CI_JOB_NAME}" - - apk add --update openssl - - wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/$SCRIPT_NAME - - chmod 755 $(basename $SCRIPT_NAME) - -.rake-exec: &rake-exec - <<: *dedicated-no-docs-no-db-pull-cache-job - script: - - bundle exec rake $CI_JOB_NAME - -.rspec-metadata: &rspec-metadata - <<: *dedicated-runner - <<: *except-docs-and-qa - <<: *pull-cache - stage: test - script: - - JOB_NAME=( $CI_JOB_NAME ) - - TEST_TOOL=${JOB_NAME[0]} - - export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/${TEST_TOOL}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - - export KNAPSACK_GENERATE_REPORT=true - - export SUITE_FLAKY_RSPEC_REPORT_PATH=${FLAKY_RSPEC_SUITE_REPORT_PATH} - - export FLAKY_RSPEC_REPORT_PATH=rspec_flaky/all_${TEST_TOOL}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - - export NEW_FLAKY_RSPEC_REPORT_PATH=rspec_flaky/new_${TEST_TOOL}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - - export FLAKY_RSPEC_GENERATE_REPORT=true - - export CACHE_CLASSES=true - - cp ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} ${KNAPSACK_REPORT_PATH} - - '[[ -f $FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_REPORT_PATH}' - - '[[ -f $NEW_FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${NEW_FLAKY_RSPEC_REPORT_PATH}' - - scripts/gitaly-test-spawn - - knapsack rspec "--color --format documentation --format RspecJunitFormatter --out junit_rspec.xml" - artifacts: - expire_in: 31d - when: always - paths: - - coverage/ - - knapsack/ - - rspec_flaky/ - - rspec_profiling/ - - tmp/capybara/ - reports: - junit: junit_rspec.xml - -.rspec-metadata-pg: &rspec-metadata-pg - <<: *rspec-metadata - <<: *use-pg - -.rspec-metadata-mysql: &rspec-metadata-mysql - <<: *rspec-metadata - <<: *use-mysql - -.only-canonical-masters: &only-canonical-masters - only: - - master@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - - master@gitlab/gitlabhq - - master@gitlab/gitlab-ee - -.gitlab-setup: &gitlab-setup - <<: *dedicated-no-docs-and-no-qa-pull-cache-job - <<: *use-pg - variables: - SETUP_DB: "false" - script: - # Manually clone gitlab-test and only seed this project in - # db/fixtures/development/04_project.rb thanks to SIZE=1 below - - git clone https://gitlab.com/gitlab-org/gitlab-test.git - /home/git/repositories/gitlab-org/gitlab-test.git - - scripts/gitaly-test-spawn - - force=yes SIZE=1 FIXTURE_PATH="db/fixtures/development" bundle exec rake gitlab:setup - artifacts: - when: on_failure - expire_in: 1d - paths: - - log/development.log - -# DB migration, rollback, and seed jobs -.db-migrate-reset: &db-migrate-reset - <<: *dedicated-no-docs-and-no-qa-pull-cache-job - script: - - bundle exec rake db:migrate:reset - -.migration-paths: &migration-paths - <<: *dedicated-no-docs-and-no-qa-pull-cache-job - variables: - SETUP_DB: "false" - script: - - git fetch https://gitlab.com/gitlab-org/gitlab-ce.git v9.3.0 - - git checkout -f FETCH_HEAD - - sed -i "s/gem 'oj', '~> 2.17.4'//" Gemfile - - bundle update google-protobuf grpc - - bundle install $BUNDLE_INSTALL_FLAGS - - date - - cp config/gitlab.yml.example config/gitlab.yml - - bundle exec rake db:drop db:create db:schema:load db:seed_fu - - date - - git checkout -f $CI_COMMIT_SHA - - bundle install $BUNDLE_INSTALL_FLAGS - - date - - . scripts/prepare_build.sh - - date - - bundle exec rake db:migrate - -## -# Trigger a package build in omnibus-gitlab repository -# -package-and-qa: - image: ruby:2.5-alpine - stage: test - before_script: [] - dependencies: [] - cache: {} - variables: - GIT_DEPTH: "1" - API_TOKEN: "${GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN}" - retry: 0 - script: - - apk add --update openssl curl jq - - gem install gitlab --no-document - - source ./scripts/review_apps/review-apps.sh - - wait_for_job_to_be_done "gitlab:assets:compile" - - ./scripts/trigger-build omnibus - when: manual - only: - - /.+/@gitlab-org/gitlab-ce - - /.+/@gitlab-org/gitlab-ee - -# Review docs base -.review-docs: &review-docs - <<: *dedicated-runner - <<: *single-script-job - variables: - <<: *single-script-job-variables - SCRIPT_NAME: trigger-build-docs - environment: - name: review-docs/$CI_COMMIT_REF_SLUG - # DOCS_REVIEW_APPS_DOMAIN and DOCS_GITLAB_REPO_SUFFIX are CI variables - # Discussion: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14236/diffs#note_40140693 - url: http://$CI_ENVIRONMENT_SLUG.$DOCS_REVIEW_APPS_DOMAIN/$DOCS_GITLAB_REPO_SUFFIX - on_stop: review-docs-cleanup - -# Trigger a manual docs build in gitlab-docs only on non docs-only branches. -# Useful to preview the docs changes live. -review-docs-deploy-manual: - <<: *review-docs - stage: build - script: - - gem install gitlab --no-document - - ./$SCRIPT_NAME deploy - when: manual - only: - - branches@gitlab-org/gitlab-ce - - branches@gitlab-org/gitlab-ee - <<: *except-docs-and-qa - -# Always trigger a docs build in gitlab-docs only on docs-only branches. -# Useful to preview the docs changes live. -review-docs-deploy: - <<: *review-docs - stage: post-test - script: - - gem install gitlab --no-document - - ./$SCRIPT_NAME deploy - only: - - /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ce - - /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ee - <<: *except-qa - -# Cleanup remote environment of gitlab-docs -review-docs-cleanup: - <<: *review-docs - stage: post-cleanup - environment: - name: review-docs/$CI_COMMIT_REF_SLUG - action: stop - script: - - gem install gitlab --no-document - - ./$SCRIPT_NAME cleanup - when: manual - only: - - branches@gitlab-org/gitlab-ce - - branches@gitlab-org/gitlab-ee - -## -# Trigger a docker image build in CNG (Cloud Native GitLab) repository -# -cloud-native-image: - image: ruby:2.5-alpine - before_script: [] - dependencies: [] - stage: post-test - allow_failure: true - variables: - GIT_DEPTH: "1" - cache: {} - when: manual - script: - - gem install gitlab --no-document - - CNG_PROJECT_PATH="gitlab-org/build/CNG" BUILD_TRIGGER_TOKEN=$CI_JOB_TOKEN ./scripts/trigger-build cng - only: - - tags@gitlab-org/gitlab-ce - - tags@gitlab-org/gitlab-ee - -# Retrieve knapsack and rspec_flaky reports -retrieve-tests-metadata: - <<: *tests-metadata-state - <<: *except-docs-and-qa - stage: prepare - cache: - key: tests_metadata - policy: pull - script: - - mkdir -p knapsack/${CI_PROJECT_NAME}/ - - wget -O $KNAPSACK_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || rm $KNAPSACK_RSPEC_SUITE_REPORT_PATH - - '[[ -f $KNAPSACK_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_RSPEC_SUITE_REPORT_PATH}' - - mkdir -p rspec_flaky/ - - mkdir -p rspec_profiling/ - - wget -O $FLAKY_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$FLAKY_RSPEC_SUITE_REPORT_PATH || rm $FLAKY_RSPEC_SUITE_REPORT_PATH - - '[[ -f $FLAKY_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_SUITE_REPORT_PATH}' - -update-tests-metadata: - <<: *tests-metadata-state - <<: *only-canonical-masters - stage: post-test - cache: - key: tests_metadata - paths: - - knapsack/ - - rspec_flaky/ - policy: push - script: - - retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document - - scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec-pg_node_*.json - - scripts/merge-reports ${FLAKY_RSPEC_SUITE_REPORT_PATH} rspec_flaky/all_*_*.json - - FLAKY_RSPEC_GENERATE_REPORT=1 scripts/prune-old-flaky-specs ${FLAKY_RSPEC_SUITE_REPORT_PATH} - - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH' - - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $FLAKY_RSPEC_SUITE_REPORT_PATH' - - rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json - - rm -f rspec_flaky/all_*.json rspec_flaky/new_*.json - - scripts/insert-rspec-profiling-data - -flaky-examples-check: - <<: *dedicated-runner - image: ruby:2.5-alpine - services: [] - before_script: [] - variables: - SETUP_DB: "false" - USE_BUNDLE_INSTALL: "false" - NEW_FLAKY_SPECS_REPORT: rspec_flaky/report-new.json - stage: post-test - allow_failure: true - retry: 0 - only: - - branches - except: - - master - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ - artifacts: - expire_in: 30d - paths: - - rspec_flaky/ - script: - - '[[ -f $NEW_FLAKY_SPECS_REPORT ]] || echo "{}" > ${NEW_FLAKY_SPECS_REPORT}' - - scripts/merge-reports ${NEW_FLAKY_SPECS_REPORT} rspec_flaky/new_*_*.json - - scripts/detect-new-flaky-examples $NEW_FLAKY_SPECS_REPORT - -.assets-compile-cache: &assets-compile-cache - cache: - key: "assets-compile:vendor_ruby:.yarn-cache:tmp_cache_assets_sprockets:v5" - paths: - - vendor/ruby/ - - .yarn-cache/ - - tmp/cache/assets/sprockets - -compile-assets: - <<: *dedicated-runner - <<: *except-docs - <<: *use-pg - stage: prepare - script: - - node --version - - yarn install --frozen-lockfile --cache-folder .yarn-cache - - free -m - - bundle exec rake gitlab:assets:compile - - scripts/clean-old-cached-assets - variables: - # we override the max_old_space_size to prevent OOM errors - NODE_OPTIONS: --max_old_space_size=3584 - artifacts: - expire_in: 7d - paths: - - node_modules - - public/assets - <<: *assets-compile-cache - -setup-test-env: - <<: *dedicated-runner - <<: *except-docs - <<: *use-pg - stage: prepare - cache: - <<: *default-cache - script: - - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' - - scripts/gitaly-test-build # Do not use 'bundle exec' here - artifacts: - expire_in: 7d - paths: - - tmp/tests - - config/secrets.yml - - vendor/gitaly-ruby - -# GitLab Review apps -.review-only: &review-only - only: - refs: - - branches@gitlab-org/gitlab-ce - - branches@gitlab-org/gitlab-ee - kubernetes: active - except: - refs: - - master - - /(^docs[\/-].*|.*-docs$)/ - -.review-schedules-only: &review-schedules-only - only: - refs: - - schedules@gitlab-org/gitlab-ce - - schedules@gitlab-org/gitlab-ee - kubernetes: active - except: - refs: - - tags - - /(^docs[\/-].*|.*-docs$)/ - -.review-base: &review-base - <<: *dedicated-no-docs-no-db-pull-cache-job - <<: *review-only - image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base - stage: test - cache: {} - dependencies: [] - environment: &review-environment - name: review/${CI_COMMIT_REF_NAME} - url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} - before_script: [] - -.review-docker: &review-docker - <<: *review-base - image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine - services: - - docker:stable-dind - tags: - - gitlab-org - - docker - variables: &review-docker-variables - GIT_DEPTH: "1" - DOCKER_DRIVER: overlay2 - DOCKER_HOST: tcp://docker:2375 - LATEST_QA_IMAGE: "gitlab/${CI_PROJECT_NAME}-qa:nightly" - QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/${CI_PROJECT_NAME}-qa:${CI_COMMIT_REF_SLUG}" - -build-qa-image: - <<: *review-docker - variables: - <<: *review-docker-variables - GIT_DEPTH: "20" - stage: prepare - script: - - time docker build --cache-from ${LATEST_QA_IMAGE} --tag ${QA_IMAGE} ./qa/ - - echo "${CI_JOB_TOKEN}" | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY} - - time docker push ${QA_IMAGE} - -danger-review: - <<: *pull-cache - image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger - stage: test - dependencies: [] - before_script: [] - only: - variables: - - $DANGER_GITLAB_API_TOKEN - except: - refs: - - master - variables: - - $CI_COMMIT_REF_NAME =~ /^ce-to-ee-.*/ - - $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/ - script: - - git version - - node --version - - yarn install --frozen-lockfile --cache-folder .yarn-cache - - danger --fail-on-errors=true - -rspec-pg: - <<: *rspec-metadata-pg - parallel: 50 - -rspec-mysql: - <<: *rspec-metadata-mysql - parallel: 50 - -.rspec-quarantine: &rspec-quarantine - retry: 0 - script: - - export CACHE_CLASSES=true - - scripts/gitaly-test-spawn - - bin/rspec --color --format documentation --tag quarantine spec/ - -rspec-pg-quarantine: - <<: *rspec-metadata-pg - <<: *rspec-quarantine - allow_failure: true - -rspec-mysql-quarantine: - <<: *rspec-metadata-mysql - <<: *rspec-quarantine - allow_failure: true - -static-analysis: - <<: *dedicated-no-docs-no-db-pull-cache-job - dependencies: - - compile-assets - - setup-test-env - script: - - scripts/static-analysis - cache: - key: "debian-stretch-ruby-2.5.3-node-10.x-and-rubocop" - paths: - - vendor/ruby - - .yarn-cache/ - - tmp/rubocop_cache - -# Documentation checks: -# - Check validity of relative links -# - Make sure cURL examples in API docs use the full switches -docs lint: - <<: *dedicated-runner - <<: *except-qa - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-docs-lint" - stage: test - cache: {} - dependencies: [] - before_script: [] - script: - - scripts/lint-doc.sh - - scripts/lint-changelog-yaml - - mv doc/ /tmp/gitlab-docs/content/$DOCS_GITLAB_REPO_SUFFIX - - cd /tmp/gitlab-docs - # Build HTML from Markdown - - bundle exec nanoc - # Check the internal links - - bundle exec nanoc check internal_links - -downtime_check: - <<: *rake-exec - except: - - master - - tags - - /^[\d-]+-stable(-ee)?$/ - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ - -ee_compat_check: - <<: *rake-exec - dependencies: [] - except: - - master - - tags - - /[\d-]+-stable(-ee)?/ - - /^security-/ - - branches@gitlab-org/gitlab-ee - - branches@gitlab/gitlab-ee - retry: 0 - artifacts: - name: "${CI_JOB_NAME}_${CI_COMIT_REF_NAME}_${CI_COMMIT_SHA}" - when: always - expire_in: 10d - paths: - - ee_compat_check/patches/*.patch - -db:migrate:reset-pg: - <<: *db-migrate-reset - <<: *use-pg - -db:migrate:reset-mysql: - <<: *db-migrate-reset - <<: *use-mysql - -db:check-schema-pg: - <<: *db-migrate-reset - <<: *use-pg - script: - - source scripts/schema_changed.sh - -migration:path-pg: - <<: *migration-paths - <<: *use-pg - -migration:path-mysql: - <<: *migration-paths - <<: *use-mysql - -.db-rollback: &db-rollback - <<: *dedicated-no-docs-and-no-qa-pull-cache-job - script: - - bundle exec rake db:migrate VERSION=20170523121229 - - bundle exec rake db:migrate - -db:rollback-pg: - <<: *db-rollback - <<: *use-pg - -db:rollback-mysql: - <<: *db-rollback - <<: *use-mysql - -gitlab:setup-pg: - <<: *gitlab-setup - <<: *use-pg - -gitlab:setup-mysql: - <<: *gitlab-setup - <<: *use-mysql - -# Frontend-related jobs -gitlab:assets:compile: - <<: *dedicated-no-docs-pull-cache-job - image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-git-2.18-chrome-73.0-node-8.x-yarn-1.12-graphicsmagick-1.3.29-docker-18.06.1 - dependencies: - - setup-test-env - services: - - docker:stable-dind - variables: - NODE_ENV: "production" - RAILS_ENV: "production" - SETUP_DB: "false" - SKIP_STORAGE_VALIDATION: "true" - WEBPACK_REPORT: "true" - # we override the max_old_space_size to prevent OOM errors - NODE_OPTIONS: --max_old_space_size=3584 - DOCKER_DRIVER: overlay2 - DOCKER_HOST: tcp://docker:2375 - script: - - node --version - - yarn install --frozen-lockfile --production --cache-folder .yarn-cache - - free -m - - bundle exec rake gitlab:assets:compile - - time scripts/build_assets_image - - scripts/clean-old-cached-assets - artifacts: - name: webpack-report - expire_in: 31d - paths: - - webpack-report/ - - public/assets/ - <<: *assets-compile-cache - only: - - /.+/@gitlab-org/gitlab-ce - - /.+/@gitlab-org/gitlab-ee - - /.+/@gitlab/gitlabhq - - /.+/@gitlab/gitlab-ee - tags: - - docker - - gitlab-org - -gitlab:ui:visual: - tags: - - gitlab-org - before_script: [] - allow_failure: true - dependencies: - - compile-assets - script: - # Remove node modules from GitLab that may conflict with gitlab-ui - - rm -r node_modules - - git clone https://gitlab.com/gitlab-org/gitlab-ui.git - - cp public/assets/application-*.css gitlab-ui/styles/application.css - - cd gitlab-ui - - yarn install - - CSS_URL=./application.css yarn test - only: - changes: - - app/assets/stylesheets/*.scss - - app/assets/stylesheets/**/*.scss - - app/assets/stylesheets/**/**/*.scss - except: - refs: - - /(^docs[\/-].*|.*-docs$)/ - - master - variables: - - $CI_COMMIT_MESSAGE =~ /\[skip visual\]/i - artifacts: - paths: - - tests/__image_snapshots__/ - -karma: - <<: *dedicated-no-docs-pull-cache-job - <<: *use-pg - dependencies: - - compile-assets - - setup-test-env - variables: - # we override the max_old_space_size to prevent OOM errors - NODE_OPTIONS: --max_old_space_size=3584 - script: - - export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log - - date - - scripts/gitaly-test-spawn - - date - - bundle exec rake karma - coverage: '/^Statements *: (\d+\.\d+%)/' - artifacts: - name: coverage-javascript - expire_in: 31d - when: always - paths: - - chrome_debug.log - - coverage-javascript/ - reports: - junit: junit_karma.xml - -jest: - <<: *dedicated-no-docs-and-no-qa-pull-cache-job - <<: *use-pg - dependencies: - - compile-assets - - setup-test-env - script: - - scripts/gitaly-test-spawn - - date - - bundle exec rake karma:fixtures - - date - - yarn jest --ci --coverage - artifacts: - name: coverage-frontend - expire_in: 31d - when: always - paths: - - coverage-frontend/ - - junit_jest.xml - reports: - junit: junit_jest.xml - cache: - key: jest - paths: - - tmp/jest/jest/ - -code_quality: - <<: *dedicated-no-docs-no-db-pull-cache-job - # gitlab-org runners set `privileged: false` but we need to have it set to true - # since we're using Docker in Docker - tags: [] - before_script: [] - cache: {} - dependencies: [] - variables: - SETUP_DB: "false" - -sast: - <<: *dedicated-no-docs-no-db-pull-cache-job - image: docker:stable - variables: - SAST_CONFIDENCE_LEVEL: 2 - DOCKER_DRIVER: overlay2 - allow_failure: true - tags: [] - before_script: [] - cache: {} - dependencies: [] - services: - - docker:stable-dind - script: - - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - - docker run - --env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}" - --volume "$PWD:/code" - --volume /var/run/docker.sock:/var/run/docker.sock - "registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code - artifacts: - reports: - sast: gl-sast-report.json - -dependency_scanning: - <<: *dedicated-no-docs-no-db-pull-cache-job - image: docker:stable - variables: - DOCKER_DRIVER: overlay2 - allow_failure: true - tags: [] - before_script: [] - cache: {} - dependencies: [] - services: - - docker:stable-dind - script: - - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - - docker run - --env DEP_SCAN_DISABLE_REMOTE_CHECKS="${DEP_SCAN_DISABLE_REMOTE_CHECKS:-false}" - --volume "$PWD:/code" - --volume /var/run/docker.sock:/var/run/docker.sock - "registry.gitlab.com/gitlab-org/security-products/dependency-scanning:$SP_VERSION" /code - artifacts: - reports: - dependency_scanning: gl-dependency-scanning-report.json - -qa:internal: - <<: *dedicated-no-docs-no-db-pull-cache-job - services: [] - script: - - cd qa/ - - bundle install - - bundle exec rspec - -qa:selectors: - <<: *dedicated-no-docs-no-db-pull-cache-job - services: [] - script: - - cd qa/ - - bundle install - - bundle exec bin/qa Test::Sanity::Selectors - -.qa-frontend-node: &qa-frontend-node - <<: *dedicated-no-docs-no-db-pull-cache-job - stage: test - cache: - key: "$CI_JOB_NAME" - paths: - - .yarn-cache/ - dependencies: [] - before_script: [] - script: - - date - - yarn install --frozen-lockfile --cache-folder .yarn-cache - - date - - yarn run webpack-prod - -qa-frontend-node:8: - <<: *qa-frontend-node - image: node:8-alpine - -qa-frontend-node:10: - <<: *qa-frontend-node - image: node:10-alpine - -qa-frontend-node:latest: - <<: *qa-frontend-node - image: node:alpine - allow_failure: true - -coverage: - # Don't include dedicated-no-docs-no-db-pull-cache-job here since we need to - # download artifacts from all the rspec jobs instead of from setup-test-env only - <<: *dedicated-runner - <<: *except-docs-and-qa - <<: *pull-cache - variables: - SETUP_DB: "false" - stage: post-test - script: - - bundle exec scripts/merge-simplecov - coverage: '/LOC \((\d+\.\d+%)\) covered.$/' - artifacts: - name: coverage - expire_in: 31d - paths: - - coverage/index.html - - coverage/assets/ - -lint:javascript:report: - <<: *dedicated-no-docs-and-no-qa-pull-cache-job - stage: post-test - dependencies: [] - before_script: [] - script: - - date - - yarn run eslint-report || true # ignore exit code - artifacts: - name: eslint-report - expire_in: 31d - paths: - - eslint-report.html - -jsdoc: - <<: *dedicated-no-docs-pull-cache-job - stage: post-test - dependencies: - - compile-assets - before_script: [] - script: - - date - - yarn run jsdoc || true # ignore exit code - artifacts: - name: jsdoc - expire_in: 31d - paths: - - jsdoc/ - -pages: - <<: *dedicated-no-docs-no-db-pull-cache-job - before_script: [] - stage: pages - dependencies: - - coverage - - karma - - gitlab:assets:compile - - lint:javascript:report - - jsdoc - script: - - mv public/ .public/ - - mkdir public/ - - mv coverage/ public/coverage-ruby/ || true - - mv coverage-javascript/ public/coverage-javascript/ || true - - mv eslint-report.html public/ || true - - mv webpack-report/ public/webpack-report/ || true - - cp .public/assets/application-*.css public/application.css || true - - cp .public/assets/application-*.css.gz public/application.css.gz || true - - mv jsdoc/ public/jsdoc/ || true - artifacts: - paths: - - public - only: - - master@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - -# Insurance in case a gem needed by one of our releases gets yanked from -# rubygems.org in the future. -cache gems: - <<: *dedicated-no-docs-no-db-pull-cache-job - script: - - bundle package --all --all-platforms - artifacts: - paths: - - vendor/cache - only: - - master@gitlab-org/gitlab-ce - - master@gitlab-org/gitlab-ee - - tags - -gitlab_git_test: - <<: *dedicated-runner - <<: *except-docs-and-qa - variables: - SETUP_DB: "false" - before_script: [] - dependencies: [] - cache: {} - script: - - spec/support/prepare-gitlab-git-test-for-commit --check-for-changes - -no_ee_check: - <<: *dedicated-runner - <<: *except-docs-and-qa - variables: - SETUP_DB: "false" - before_script: [] - dependencies: [] - cache: {} - script: - - scripts/no-ee-check - only: - - /.+/@gitlab-org/gitlab-ce - -# GitLab Review apps -.review-build-cng-base: &review-build-cng-base - image: ruby:2.5-alpine - stage: test - before_script: [] - dependencies: [] - cache: {} - variables: - API_TOKEN: "${GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN}" - script: - - apk add --update openssl curl jq - - gem install gitlab --no-document - - source ./scripts/review_apps/review-apps.sh - - wait_for_job_to_be_done "gitlab:assets:compile" - - BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng - -review-build-cng: - <<: *review-only - <<: *review-build-cng-base - -schedule:review-build-cng: - <<: *review-schedules-only - <<: *review-build-cng-base - -.review-deploy-base: &review-deploy-base - <<: *review-base - allow_failure: true - variables: - HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" - DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "master" - API_TOKEN: "${GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN}" - environment: - <<: *review-environment - on_stop: review-stop - before_script: - - export GITLAB_SHELL_VERSION=$( ${FLAKY_RSPEC_REPORT_PATH}' + - '[[ -f $NEW_FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${NEW_FLAKY_RSPEC_REPORT_PATH}' + - scripts/gitaly-test-spawn + - knapsack rspec "--color --format documentation --format RspecJunitFormatter --out junit_rspec.xml" + artifacts: + expire_in: 31d + when: always + paths: + - coverage/ + - knapsack/ + - rspec_flaky/ + - rspec_profiling/ + - tmp/capybara/ + reports: + junit: junit_rspec.xml + except: + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ + +.rspec-metadata-pg: &rspec-metadata-pg + <<: *rspec-metadata + <<: *use-pg + +.rspec-metadata-pg-10: &rspec-metadata-pg-10 + <<: *rspec-metadata + <<: *use-pg-10 + image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.5.3-golang-1.11-git-2.21-chrome-73.0-node-10.x-yarn-1.12-postgresql-10-graphicsmagick-1.3.29" + +.rspec-metadata-mysql: &rspec-metadata-mysql + <<: *rspec-metadata + <<: *use-mysql + +# DB migration, rollback, and seed jobs +.db-migrate-reset: &db-migrate-reset + extends: .dedicated-no-docs-and-no-qa-pull-cache-job + script: + - bundle exec rake db:migrate:reset + dependencies: + - setup-test-env + +.migration-paths: &migration-paths + extends: .dedicated-no-docs-and-no-qa-pull-cache-job + variables: + SETUP_DB: "false" + script: + - git fetch https://gitlab.com/gitlab-org/gitlab-ce.git v9.3.0 + - git checkout -f FETCH_HEAD + - sed -i "s/gem 'oj', '~> 2.17.4'//" Gemfile + - bundle update google-protobuf grpc + - bundle install $BUNDLE_INSTALL_FLAGS + - date + - cp config/gitlab.yml.example config/gitlab.yml + - bundle exec rake db:drop db:create db:schema:load db:seed_fu + - date + - git checkout -f $CI_COMMIT_SHA + - bundle install $BUNDLE_INSTALL_FLAGS + - date + - . scripts/prepare_build.sh + - date + - bundle exec rake db:migrate + dependencies: + - setup-test-env + +setup-test-env: + extends: .dedicated-runner-default-cache + <<: *use-pg + stage: prepare + script: + - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' + - scripts/gitaly-test-build # Do not use 'bundle exec' here + artifacts: + expire_in: 7d + paths: + - tmp/tests + - config/secrets.yml + - vendor/gitaly-ruby + except: + - /(^docs[\/-].*|.*-docs$)/ + +rspec-pg: + <<: *rspec-metadata-pg + parallel: 50 + +rspec-pg-10: + <<: *rspec-metadata-pg-10 + <<: *only-schedules-master + parallel: 50 + +rspec-mysql: + <<: *rspec-metadata-mysql + <<: *only-schedules-master + parallel: 50 + +rspec-fast-spec-helper: + <<: *rspec-metadata-pg + script: + - bundle exec rspec spec/fast_spec_helper.rb + +.rspec-quarantine: &rspec-quarantine + <<: *only-schedules-master + script: + - export CACHE_CLASSES=true + - scripts/gitaly-test-spawn + - bin/rspec --color --format documentation --tag quarantine spec/ + +rspec-pg-quarantine: + <<: *rspec-metadata-pg + <<: *rspec-quarantine + allow_failure: true + +rspec-mysql-quarantine: + <<: *rspec-metadata-mysql + <<: *rspec-quarantine + allow_failure: true + +static-analysis: + extends: .dedicated-no-docs-no-db-pull-cache-job + dependencies: + - compile-assets + - setup-test-env + script: + - scripts/static-analysis + cache: + key: "debian-stretch-ruby-2.5.3-node-10.x-and-rubocop" + paths: + - vendor/ruby + - .yarn-cache/ + - tmp/rubocop_cache + policy: pull-push + +downtime_check: + <<: *rake-exec + except: + - master + - tags + - /^[\d-]+-stable(-ee)?$/ + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ + dependencies: + - setup-test-env + +ee_compat_check: + <<: *rake-exec + dependencies: [] + except: + - master + - tags + - /[\d-]+-stable(-ee)?/ + - /^security-/ + - branches@gitlab-org/gitlab-ee + - branches@gitlab/gitlab-ee + retry: 0 + artifacts: + name: "${CI_JOB_NAME}_${CI_COMIT_REF_NAME}_${CI_COMMIT_SHA}" + when: always + expire_in: 10d + paths: + - ee_compat_check/patches/*.patch + +db:migrate:reset-pg: + <<: *db-migrate-reset + <<: *use-pg + +db:migrate:reset-mysql: + <<: *db-migrate-reset + <<: *use-mysql + +db:check-schema-pg: + <<: *db-migrate-reset + <<: *use-pg + script: + - source scripts/schema_changed.sh + +migration:path-pg: + <<: *migration-paths + <<: *use-pg + +migration:path-mysql: + <<: *migration-paths + <<: *use-mysql + +.db-rollback: &db-rollback + extends: .dedicated-no-docs-and-no-qa-pull-cache-job + script: + - bundle exec rake db:migrate VERSION=20170523121229 + - bundle exec rake db:migrate + dependencies: + - setup-test-env + +db:rollback-pg: + <<: *db-rollback + <<: *use-pg + +db:rollback-mysql: + <<: *db-rollback + <<: *use-mysql + +gitlab:setup-pg: + <<: *gitlab-setup + <<: *use-pg + dependencies: + - setup-test-env + +gitlab:setup-mysql: + <<: *gitlab-setup + <<: *use-mysql + dependencies: + - setup-test-env + +coverage: + # Don't include dedicated-no-docs-no-db-pull-cache-job here since we need to + # download artifacts from all the rspec jobs instead of from setup-test-env only + extends: .dedicated-runner-default-cache + cache: + policy: pull + variables: + SETUP_DB: "false" + stage: post-test + script: + - bundle exec scripts/merge-simplecov + coverage: '/LOC \((\d+\.\d+%)\) covered.$/' + artifacts: + name: coverage + expire_in: 31d + paths: + - coverage/index.html + - coverage/assets/ + except: + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml new file mode 100644 index 0000000000..d0e09dbf2f --- /dev/null +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -0,0 +1,98 @@ +include: + - template: Code-Quality.gitlab-ci.yml + +code_quality: + extends: .dedicated-no-docs-no-db-pull-cache-job + # gitlab-org runners set `privileged: false` but we need to have it set to true + # since we're using Docker in Docker + tags: [] + before_script: [] + cache: {} + dependencies: [] + variables: + SETUP_DB: "false" + +sast: + extends: .dedicated-no-docs-no-db-pull-cache-job + image: docker:stable + variables: + SAST_CONFIDENCE_LEVEL: 2 + DOCKER_DRIVER: overlay2 + allow_failure: true + tags: [] + before_script: [] + cache: {} + dependencies: [] + services: + - docker:stable-dind + script: + - | # this is required to avoid undesirable reset of Docker image ENV variables being set on build stage + function propagate_env_vars() { + CURRENT_ENV=$(printenv) + + for VAR_NAME; do + echo $CURRENT_ENV | grep "${VAR_NAME}=" > /dev/null && echo "--env $VAR_NAME " + done + } + - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') + - | + docker run \ + $(propagate_env_vars \ + SAST_ANALYZER_IMAGES \ + SAST_ANALYZER_IMAGE_PREFIX \ + SAST_ANALYZER_IMAGE_TAG \ + SAST_DEFAULT_ANALYZERS \ + SAST_BRAKEMAN_LEVEL \ + SAST_GOSEC_LEVEL \ + SAST_FLAWFINDER_LEVEL \ + SAST_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \ + SAST_PULL_ANALYZER_IMAGE_TIMEOUT \ + SAST_RUN_ANALYZER_TIMEOUT \ + ) \ + --volume "$PWD:/code" \ + --volume /var/run/docker.sock:/var/run/docker.sock \ + "registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code + artifacts: + reports: + sast: gl-sast-report.json + +dependency_scanning: + extends: .dedicated-no-docs-no-db-pull-cache-job + image: docker:stable + variables: + DOCKER_DRIVER: overlay2 + allow_failure: true + tags: [] + before_script: [] + cache: {} + dependencies: [] + services: + - docker:stable-dind + script: + - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') + - | # this is required to avoid undesirable reset of Docker image ENV variables being set on build stage + function propagate_env_vars() { + CURRENT_ENV=$(printenv) + + for VAR_NAME; do + echo $CURRENT_ENV | grep "${VAR_NAME}=" > /dev/null && echo "--env $VAR_NAME " + done + } + - | + docker run \ + $(propagate_env_vars \ + DS_ANALYZER_IMAGES \ + DS_ANALYZER_IMAGE_PREFIX \ + DS_ANALYZER_IMAGE_TAG \ + DS_DEFAULT_ANALYZERS \ + DEP_SCAN_DISABLE_REMOTE_CHECKS \ + DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \ + DS_PULL_ANALYZER_IMAGE_TIMEOUT \ + DS_RUN_ANALYZER_TIMEOUT \ + ) \ + --volume "$PWD:/code" \ + --volume /var/run/docker.sock:/var/run/docker.sock \ + "registry.gitlab.com/gitlab-org/security-products/dependency-scanning:$SP_VERSION" /code + artifacts: + reports: + dependency_scanning: gl-dependency-scanning-report.json diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml new file mode 100644 index 0000000000..ae16549ef6 --- /dev/null +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -0,0 +1,233 @@ +.review-only: &review-only + only: + refs: + - branches@gitlab-org/gitlab-ce + - branches@gitlab-org/gitlab-ee + kubernetes: active + except: + refs: + - master + - /(^docs[\/-].*|.*-docs$)/ + +.review-schedules-only: &review-schedules-only + only: + refs: + - schedules@gitlab-org/gitlab-ce + - schedules@gitlab-org/gitlab-ee + kubernetes: active + variables: + - $REVIEW_APP_CLEANUP + except: + refs: + - tags + - /(^docs[\/-].*|.*-docs$)/ + +.review-base: &review-base + extends: .dedicated-runner + <<: *review-only + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base + cache: {} + dependencies: [] + before_script: + - source scripts/utils.sh + +.review-docker: &review-docker + <<: *review-base + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine + services: + - docker:stable-dind + tags: + - gitlab-org + - docker + variables: &review-docker-variables + DOCKER_DRIVER: overlay2 + DOCKER_HOST: tcp://docker:2375 + LATEST_QA_IMAGE: "gitlab/${CI_PROJECT_NAME}-qa:nightly" + QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab/${CI_PROJECT_NAME}-qa:${CI_COMMIT_REF_SLUG}" + +build-qa-image: + <<: *review-docker + stage: test + script: + - time docker build --cache-from ${LATEST_QA_IMAGE} --tag ${QA_IMAGE} ./qa/ + - echo "${CI_JOB_TOKEN}" | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY} + - time docker push ${QA_IMAGE} + +.review-build-cng-base: &review-build-cng-base + image: ruby:2.5-alpine + stage: test + when: manual + before_script: + - source scripts/utils.sh + - install_api_client_dependencies_with_apk + - install_gitlab_gem + dependencies: [] + cache: {} + script: + - BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng + +review-build-cng: + <<: *review-only + <<: *review-build-cng-base + +schedule:review-build-cng: + <<: *review-schedules-only + <<: *review-build-cng-base + +.review-deploy-base: &review-deploy-base + <<: *review-base + stage: review + retry: 2 + allow_failure: true + variables: + HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" + DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" + GITLAB_HELM_CHART_REF: "master" + environment: &review-environment + name: review/${CI_COMMIT_REF_NAME} + url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} + on_stop: review-stop + before_script: + - export GITLAB_SHELL_VERSION=$( review_app_url.txt + - source scripts/utils.sh + - install_api_client_dependencies_with_apk + - source scripts/review_apps/review-apps.sh + script: + - perform_review_app_deployment + artifacts: + paths: + - review_app_url.txt + expire_in: 2 days + when: always + +review-deploy: + <<: *review-deploy-base + +schedule:review-deploy: + <<: *review-deploy-base + <<: *review-schedules-only + script: + - perform_review_app_deployment + +review-stop: + <<: *review-base + stage: review + when: manual + allow_failure: true + variables: + GIT_DEPTH: "1" + environment: + <<: *review-environment + action: stop + script: + - source scripts/review_apps/review-apps.sh + - delete + - cleanup + +.review-qa-base: &review-qa-base + <<: *review-docker + stage: qa + allow_failure: true + variables: + <<: *review-docker-variables + QA_ARTIFACTS_DIR: "${CI_PROJECT_DIR}/qa" + QA_CAN_TEST_GIT_PROTOCOL_V2: "false" + 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}" + QA_DEBUG: "true" + dependencies: + - review-deploy + artifacts: + paths: + - ./qa/gitlab-qa-run-* + expire_in: 7 days + when: always + before_script: + - export CI_ENVIRONMENT_URL="$(cat review_app_url.txt)" + - echo "${CI_ENVIRONMENT_URL}" + - echo "${QA_IMAGE}" + - source scripts/utils.sh + - install_api_client_dependencies_with_apk + - gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}} + +review-qa-smoke: + <<: *review-qa-base + retry: 2 + script: + - gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" + +review-qa-all: + <<: *review-qa-base + when: manual + script: + - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" + +.review-performance-base: &review-performance-base + <<: *review-qa-base + stage: qa + before_script: + - export CI_ENVIRONMENT_URL="$(cat review_app_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: + - docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io:6.3.1 --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" + after_script: + - mv sitespeed-results/data/performance.json performance.json + artifacts: + paths: + - sitespeed-results/ + reports: + performance: performance.json + +review-performance: + <<: *review-performance-base + +schedule:review-performance: + <<: *review-performance-base + <<: *review-schedules-only + dependencies: + - schedule:review-deploy + +schedule:review-cleanup: + <<: *review-base + <<: *review-schedules-only + stage: build + allow_failure: true + environment: + name: review/auto-cleanup + action: stop + before_script: + - source scripts/utils.sh + - install_gitlab_gem + script: + - ruby -rrubygems scripts/review_apps/automated_cleanup.rb + +danger-review: + extends: .dedicated-pull-cache-job + image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger + stage: test + dependencies: [] + before_script: [] + only: + variables: + - $DANGER_GITLAB_API_TOKEN + except: + refs: + - master + variables: + - $CI_COMMIT_REF_NAME =~ /^ce-to-ee-.*/ + - $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/ + script: + - git version + - node --version + - yarn install --frozen-lockfile --cache-folder .yarn-cache + - danger --fail-on-errors=true diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml new file mode 100644 index 0000000000..debc90a1cb --- /dev/null +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -0,0 +1,43 @@ +# Insurance in case a gem needed by one of our releases gets yanked from +# rubygems.org in the future. +cache gems: + extends: .dedicated-no-docs-no-db-pull-cache-job + script: + - bundle package --all --all-platforms + artifacts: + paths: + - vendor/cache + only: + - master@gitlab-org/gitlab-ce + - master@gitlab-org/gitlab-ee + - tags + dependencies: + - setup-test-env + +gitlab_git_test: + extends: .dedicated-runner + variables: + SETUP_DB: "false" + before_script: [] + dependencies: [] + cache: {} + script: + - spec/support/prepare-gitlab-git-test-for-commit --check-for-changes + except: + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ + +no_ee_check: + extends: .dedicated-runner + variables: + SETUP_DB: "false" + before_script: [] + dependencies: [] + cache: {} + script: + - scripts/no-ee-check + only: + - /.+/@gitlab-org/gitlab-ce + except: + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml new file mode 100644 index 0000000000..3ba7af956b --- /dev/null +++ b/.gitlab/ci/test-metadata.gitlab-ci.yml @@ -0,0 +1,82 @@ +.tests-metadata-state: &tests-metadata-state + extends: .dedicated-runner + variables: + TESTS_METADATA_S3_BUCKET: "gitlab-ce-cache" + before_script: + - source scripts/utils.sh + artifacts: + expire_in: 31d + paths: + - knapsack/ + - rspec_flaky/ + - rspec_profiling/ + +retrieve-tests-metadata: + <<: *tests-metadata-state + stage: prepare + cache: + key: tests_metadata + policy: pull + script: + - mkdir -p knapsack/${CI_PROJECT_NAME}/ + - wget -O $KNAPSACK_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || rm $KNAPSACK_RSPEC_SUITE_REPORT_PATH + - '[[ -f $KNAPSACK_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_RSPEC_SUITE_REPORT_PATH}' + - mkdir -p rspec_flaky/ + - mkdir -p rspec_profiling/ + - wget -O $FLAKY_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$FLAKY_RSPEC_SUITE_REPORT_PATH || rm $FLAKY_RSPEC_SUITE_REPORT_PATH + - '[[ -f $FLAKY_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_SUITE_REPORT_PATH}' + except: + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ + +update-tests-metadata: + <<: *tests-metadata-state + stage: post-test + cache: + key: tests_metadata + paths: + - knapsack/ + - rspec_flaky/ + policy: push + script: + - retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document + - scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec-pg_node_*.json + - scripts/merge-reports ${FLAKY_RSPEC_SUITE_REPORT_PATH} rspec_flaky/all_*_*.json + - FLAKY_RSPEC_GENERATE_REPORT=1 scripts/prune-old-flaky-specs ${FLAKY_RSPEC_SUITE_REPORT_PATH} + - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH' + - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $FLAKY_RSPEC_SUITE_REPORT_PATH' + - rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json + - rm -f rspec_flaky/all_*.json rspec_flaky/new_*.json + - scripts/insert-rspec-profiling-data + only: + - master@gitlab-org/gitlab-ce + - master@gitlab-org/gitlab-ee + - master@gitlab/gitlabhq + - master@gitlab/gitlab-ee + +flaky-examples-check: + extends: .dedicated-runner + image: ruby:2.5-alpine + services: [] + before_script: [] + variables: + SETUP_DB: "false" + USE_BUNDLE_INSTALL: "false" + NEW_FLAKY_SPECS_REPORT: rspec_flaky/report-new.json + stage: post-test + allow_failure: true + retry: 0 + only: + - branches + except: + - master + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ + artifacts: + expire_in: 30d + paths: + - rspec_flaky/ + script: + - '[[ -f $NEW_FLAKY_SPECS_REPORT ]] || echo "{}" > ${NEW_FLAKY_SPECS_REPORT}' + - scripts/merge-reports ${NEW_FLAKY_SPECS_REPORT} rspec_flaky/new_*_*.json + - scripts/detect-new-flaky-examples $NEW_FLAKY_SPECS_REPORT diff --git a/.gitlab/issue_templates/Database Reviewer.md b/.gitlab/issue_templates/Database Reviewer.md index a5e7e42fd1..acbaf5c196 100644 --- a/.gitlab/issue_templates/Database Reviewer.md +++ b/.gitlab/issue_templates/Database Reviewer.md @@ -1,6 +1,8 @@ #### Database Reviewer Checklist -Thank you for becoming a ~database reviewer! Please work on the list below to complete your setup. For any question, reach out to #database an mention @abrandl. +Thank you for becoming a ~database reviewer! Please work on the list +below to complete your setup. For any question, reach out to #database +an mention `@abrandl`. - [ ] Change issue title to include your name: `Database Reviewer Checklist: Your Name` - [ ] Review general [code review guide](https://docs.gitlab.com/ee/development/code_review.html) @@ -12,7 +14,7 @@ Thank you for becoming a ~database reviewer! Please work on the list below to co - [ ] Read [Understanding EXPLAIN plans](https://docs.gitlab.com/ee/development/understanding_explain_plans.html) - [ ] Review [database best practices](https://docs.gitlab.com/ee/development/#best-practices) - [ ] Review how we use [database instances restored from a backup](https://ops.gitlab.net/gitlab-com/gl-infra/gitlab-restore/postgres-gprd) for testing and make sure you're set up to execute pipelines (check [README.md](https://ops.gitlab.net/gitlab-com/gl-infra/gitlab-restore/postgres-gprd/blob/master/README.md) and reach out to @abrandl since this is currently subject to being changed) -- [ ] Get yourself added to [@gl-database](https://gitlab.com/groups/gl-database/-/group_members) group and respond to @-mentions to the group (reach out to any maintainer on the group to get added). You will get TODOs on gitlab.com for group mentions. +- [ ] Get yourself added to [`@gl-database`](https://gitlab.com/groups/gl-database/-/group_members) group and respond to @-mentions to the group (reach out to any maintainer on the group to get added). You will get TODOs on gitlab.com for group mentions. - [ ] Make sure you have proper access to at least a read-only replica in staging and production - [ ] Indicate in `data/team.yml` your role as a database reviewer ([example MR](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/19600/diffs)). Assign MR to your manager for merge. - [ ] Send one MR to improve the [review documentation](https://about.gitlab.com/handbook/engineering/workflow/code-review/database.html) or the [issue template](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.gitlab/issue_templates/Database%20Reviewer.md) @@ -25,7 +27,7 @@ You're all set! Watch out for TODOs on GitLab.com. ###### Where to go for questions? -Reach out to `#database` on Slack and mention @abrandl for any questions. +Reach out to `#database` on Slack and mention `@abrandl` for any questions. cc @abrandl diff --git a/.gitlab/issue_templates/Refactoring.md b/.gitlab/issue_templates/Refactoring.md new file mode 100644 index 0000000000..cd0ce8486f --- /dev/null +++ b/.gitlab/issue_templates/Refactoring.md @@ -0,0 +1,41 @@ +## Summary + + + +## Improvements + + + +## Risks + + + +## Involved components + + + +## Optional: Intended side effects + + + + +## Optional: Missing test coverage + + + +/label ~backstage diff --git a/.haml-lint.yml b/.haml-lint.yml index bad918ef35..e9cc4a91a2 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -97,6 +97,7 @@ linters: - Cop/LineBreakAroundConditionalBlock - Cop/ProjectPathHelper - GitlabSecurity/PublicSend + - Layout/EmptyLineAfterGuardClause - Layout/LeadingCommentSpace - Layout/SpaceAfterColon - Layout/SpaceAfterComma @@ -112,11 +113,13 @@ linters: - Lint/LiteralInInterpolation - Lint/ParenthesesAsGroupedExpression - Lint/RedundantWithIndex + - Lint/SafeNavigationConsistency - Lint/Syntax - Metrics/BlockNesting - Naming/VariableName - Performance/RedundantMatch - Performance/StringReplacement + - Rails/LinkToBlank - Rails/Presence - Rails/RequestReferer - Style/AndOr @@ -134,6 +137,7 @@ linters: - Style/TernaryParentheses - Style/TrailingCommaInHashLiteral - Style/UnlessElse + - Style/UnneededCondition - Style/WordArray - Style/ZeroLengthPredicate diff --git a/.rubocop.yml b/.rubocop.yml index 648d59e806..e5fe527e61 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -75,6 +75,7 @@ Naming/FileName: - 'qa/spec/**/*' - 'qa/qa/specs/**/*' - 'qa/bin/*' + - 'ee/bin/*' - 'config/**/*' - 'ee/config/**/*' - 'lib/generators/**/*' @@ -204,3 +205,9 @@ Style/ReturnNil: # nil values on the left hand side Performance/RegexpMatch: Enabled: false + +ActiveRecordAssociationReload: + Enabled: true + Exclude: + - 'spec/**/*' + - 'ee/spec/**/*' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 77ad4753c8..63b1685fed 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,42 +1,154 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2018-01-18 18:23:26 +0100 using RuboCop version 0.52.1. +# on 2019-05-04 16:01:00 +0000 using RuboCop version 0.68.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 181 +# Offense count: 264 Capybara/CurrentPathExpectation: Enabled: false -# Offense count: 167 +# Offense count: 1097 # Cop supports --auto-correct. -Layout/EmptyLinesAroundArguments: +# Configuration parameters: EnforcedStyle, IndentationWidth. +# SupportedStyles: with_first_argument, with_fixed_indentation +Layout/AlignArguments: Enabled: false -# Offense count: 83 +# Offense count: 824 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle. +# SupportedHashRocketStyles: key, separator, table +# SupportedColonStyles: key, separator, table +# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit +Layout/AlignHash: + Enabled: false + +# Offense count: 13 +# Cop supports --auto-correct. +Layout/ClosingHeredocIndentation: + Exclude: + - 'app/graphql/mutations/merge_requests/set_wip.rb' + - 'ee/db/geo/migrate/20180322062741_migrate_ci_job_artifacts_to_separate_registry.rb' + - 'ee/db/migrate/20160204190809_update_jenkins_service_category.rb' + - 'ee/lib/gitlab/background_migration/prune_orphaned_geo_events.rb' + - 'ee/lib/gitlab/geo/health_check.rb' + - 'lib/gitlab/background_migration/populate_untracked_uploads.rb' + - 'qa/qa/service/kubernetes_cluster.rb' + - 'spec/features/merge_request/user_sees_diff_spec.rb' + - 'spec/lib/gitlab/asciidoc_spec.rb' + - 'spec/lib/gitlab/checks/project_moved_spec.rb' + - 'spec/rubocop/cop/active_record_association_reload_spec.rb' + - 'spec/services/task_list_toggle_service_spec.rb' + +# Offense count: 14 +# Cop supports --auto-correct. +Layout/ClosingParenthesisIndentation: + Exclude: + - 'db/post_migrate/20180704145007_update_project_indexes.rb' + - 'ee/db/geo/migrate/20180405074130_add_partial_index_project_repository_verification.rb' + - 'ee/db/migrate/20180308234102_add_partial_index_to_project_repository_states_checksum_columns.rb' + - 'ee/db/post_migrate/20180605213516_fix_partial_index_to_project_repository_states_checksum_columns.rb' + - 'ee/lib/ee/gitlab/usage_data.rb' + - 'spec/services/issues/resolve_discussions_spec.rb' + - 'spec/services/projects/update_service_spec.rb' + - 'spec/support/helpers/stub_object_storage.rb' + - 'spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: leading, trailing +Layout/DotPosition: + Exclude: + - 'app/models/concerns/relative_positioning.rb' + - 'app/models/group.rb' + +# Offense count: 69 +# Cop supports --auto-correct. +Layout/EmptyLinesAroundArguments: + Exclude: + - 'app/models/concerns/discussion_on_diff.rb' + - 'app/models/concerns/resolvable_discussion.rb' + - 'app/models/diff_discussion.rb' + - 'app/models/discussion.rb' + - 'ee/app/helpers/license_helper.rb' + - 'ee/spec/models/geo/project_registry_spec.rb' + - 'lib/banzai/pipeline/broadcast_message_pipeline.rb' + - 'lib/banzai/pipeline/gfm_pipeline.rb' + - 'lib/banzai/pipeline/single_line_pipeline.rb' + - 'spec/features/markdown/copy_as_gfm_spec.rb' + +# Offense count: 160 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: special_inside_parentheses, consistent, align_brackets -Layout/IndentArray: +Layout/IndentFirstArrayElement: Enabled: false -# Offense count: 237 +# Offense count: 631 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, IndentationWidth. # SupportedStyles: special_inside_parentheses, consistent, align_braces -Layout/IndentHash: +Layout/IndentFirstHashElement: Enabled: false -# Offense count: 93 +# Offense count: 5 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, IndentationWidth. +# SupportedStyles: consistent, align_parentheses +Layout/IndentFirstParameter: + Exclude: + - 'app/models/ci/pipeline_schedule.rb' + - 'lib/gitlab/cross_project_access.rb' + - 'lib/gitlab/data_builder/push.rb' + - 'spec/support/helpers/repo_helpers.rb' + - 'spec/support/helpers/stub_object_storage.rb' + +# Offense count: 5 +# Cop supports --auto-correct. +Layout/LeadingBlankLines: + Exclude: + - 'app/workers/update_project_statistics_worker.rb' + - 'db/migrate/20161007073613_create_user_activities.rb' + - 'ee/spec/helpers/boards_helper_spec.rb' + - 'lib/tasks/yarn.rake' + - 'spec/javascripts/fixtures/merge_requests_diffs.rb' + +# Offense count: 30 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, IndentationWidth. +# SupportedStyles: aligned, indented +Layout/MultilineOperationIndentation: + Enabled: false + +# Offense count: 13 +# Cop supports --auto-correct. +Layout/RescueEnsureAlignment: + Exclude: + - 'app/models/blob_viewer/dependency_manager.rb' + - 'app/models/ci/pipeline.rb' + - 'app/models/project.rb' + - 'app/services/prometheus/proxy_service.rb' + - 'app/workers/delete_stored_files_worker.rb' + - 'app/workers/reactive_caching_worker.rb' + - 'config/initializers/1_settings.rb' + - 'config/initializers/trusted_proxies.rb' + - 'ee/db/migrate/20151113115819_canonicalize_kerberos_identities.rb' + - 'lib/gitlab/background_migration/archive_legacy_traces.rb' + - 'lib/gitlab/highlight.rb' + - 'lib/tasks/gitlab/lfs/migrate.rake' + +# Offense count: 344 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: require_no_space, require_space Layout/SpaceInLambdaLiteral: Enabled: false -# Offense count: 327 +# Offense count: 583 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters. # SupportedStyles: space, no_space @@ -44,20 +156,27 @@ Layout/SpaceInLambdaLiteral: Layout/SpaceInsideBlockBraces: Enabled: false -# Offense count: 156 +# Offense count: 255 # Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: space, no_space Layout/SpaceInsideParens: Enabled: false -# Offense count: 26 +# Offense count: 1 +Lint/DisjunctiveAssignmentInConstructor: + Exclude: + - 'app/models/uploads/base.rb' + +# Offense count: 19 Lint/DuplicateMethods: Exclude: - - 'app/models/application_setting.rb' - 'app/models/commit.rb' - 'app/models/note.rb' - - 'app/services/merge_requests/merge_service.rb' - 'lib/bitbucket/representation/repo.rb' - 'lib/declarative_policy/base.rb' + - 'lib/gitlab/auth/ldap/person.rb' + - 'lib/gitlab/auth/o_auth/user.rb' - 'lib/gitlab/ci/build/artifacts/metadata/entry.rb' - 'lib/gitlab/cycle_analytics/base_event_fetcher.rb' - 'lib/gitlab/diff/formatters/base_formatter.rb' @@ -65,22 +184,34 @@ Lint/DuplicateMethods: - 'lib/gitlab/git/repository.rb' - 'lib/gitlab/git/tree.rb' - 'lib/gitlab/git/wiki_page.rb' - - 'lib/gitlab/auth/ldap/person.rb' - - 'lib/gitlab/auth/o_auth/user.rb' -# Offense count: 4 +# Offense count: 2 Lint/InterpolationCheck: Exclude: - 'spec/features/issues/filtered_search/filter_issues_spec.rb' - - 'spec/features/users_spec.rb' - 'spec/services/quick_actions/interpret_service_spec.rb' -# Offense count: 206 +# Offense count: 326 # Configuration parameters: MaximumRangeSize. Lint/MissingCopEnableDirective: Enabled: false -# Offense count: 9 +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: Whitelist. +# Whitelist: present?, blank?, presence, try, try! +Lint/SafeNavigationConsistency: + Exclude: + - 'lib/gitlab/gpg/commit.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +Lint/ToJSON: + Exclude: + - 'lib/gitlab/cycle_analytics/usage_data.rb' + - 'lib/gitlab/template/base_template.rb' + +# Offense count: 7 Lint/UriEscapeUnescape: Exclude: - 'app/controllers/application_controller.rb' @@ -88,13 +219,25 @@ Lint/UriEscapeUnescape: - 'spec/lib/google_api/auth_spec.rb' - 'spec/requests/api/files_spec.rb' - 'spec/requests/api/internal_spec.rb' - - 'spec/requests/api/issues_spec.rb' # Offense count: 1 -# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. +# Configuration parameters: CheckForMethodsWithNoSideEffects. +Lint/Void: + Exclude: + - 'lib/gitlab/git/diff_collection.rb' + +# Offense count: 158 +# Cop supports --auto-correct. +# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. # URISchemes: http, https Metrics/LineLength: - Max: 1310 + Max: 176 + +# Offense count: 94 +# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms. +# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS +Naming/FileName: + Enabled: false # Offense count: 11 # Configuration parameters: EnforcedStyle. @@ -107,61 +250,85 @@ Naming/HeredocDelimiterCase: - 'spec/support/helpers/repo_helpers.rb' - 'spec/support/helpers/seed_repo.rb' -# Offense count: 112 +# Offense count: 197 # Configuration parameters: Blacklist. -# Blacklist: END, (?-mix:EO[A-Z]{1}) +# Blacklist: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$)) Naming/HeredocDelimiterNaming: Enabled: false +# Offense count: 125 +# Cop supports --auto-correct. +# Configuration parameters: PreferredName. +Naming/RescuedExceptionsVariableName: + Enabled: false -# Offense count: 3821 +# Offense count: 6 +# Cop supports --auto-correct. +Performance/InefficientHashSearch: + Exclude: + - 'app/controllers/concerns/sessionless_authentication.rb' + - 'app/models/note.rb' + - 'app/models/user_preference.rb' + - 'ee/app/models/ee/project.rb' + - 'lib/gitlab/import_export/members_mapper.rb' + - 'qa/spec/spec_helper.rb' + +# Offense count: 3 +# Cop supports --auto-correct. +Performance/ReverseEach: + Exclude: + - 'app/models/commit.rb' + - 'db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb' + - 'lib/gitlab/profiler.rb' + +# Offense count: 7081 # Configuration parameters: Prefixes. # Prefixes: when, with, without RSpec/ContextWording: Enabled: false -# Offense count: 293 +# Offense count: 407 +# Cop supports --auto-correct. RSpec/EmptyLineAfterFinalLet: Enabled: false -# Offense count: 188 +# Offense count: 232 +# Cop supports --auto-correct. RSpec/EmptyLineAfterSubject: Enabled: false -# Offense count: 258 +# Offense count: 719 +# Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: method_call, block RSpec/ExpectChange: Enabled: false -# Offense count: 221 +# Offense count: 512 RSpec/ExpectInHook: Enabled: false -# Offense count: 19 +# Offense count: 10 +# Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: it_behaves_like, it_should_behave_like RSpec/ItBehavesLike: Exclude: - 'spec/lib/gitlab/git/commit_spec.rb' - 'spec/lib/gitlab/git/repository_spec.rb' - - 'spec/lib/gitlab/shell_spec.rb' - 'spec/services/notification_service_spec.rb' - - 'spec/workers/git_garbage_collect_worker_spec.rb' -# Offense count: 5 +# Offense count: 3 RSpec/IteratedExpectation: Exclude: - 'spec/features/admin/admin_settings_spec.rb' - - 'spec/features/merge_requests/diff_notes_resolve_spec.rb' - - 'spec/features/projects/awards/user_interacts_with_awards_in_issue_spec.rb' - 'spec/lib/gitlab/gitlab_import/client_spec.rb' - 'spec/lib/gitlab/legacy_github_import/client_spec.rb' -# Offense count: 75 +# Offense count: 68 +# Cop supports --auto-correct. RSpec/LetBeforeExamples: Exclude: - - 'spec/controllers/projects/commit_controller_spec.rb' - 'spec/lib/banzai/filter/issue_reference_filter_spec.rb' - 'spec/lib/banzai/filter/user_reference_filter_spec.rb' - 'spec/lib/gitlab/email/handler/create_issue_handler_spec.rb' @@ -170,12 +337,11 @@ RSpec/LetBeforeExamples: - 'spec/models/commit_range_spec.rb' - 'spec/models/milestone_spec.rb' - 'spec/models/project_services/packagist_service_spec.rb' - - 'spec/models/repository_spec.rb' - 'spec/rubocop/cop/migration/update_column_in_batches_spec.rb' - 'spec/serializers/pipeline_details_entity_spec.rb' - - 'spec/views/ci/lints/show.html.haml_spec.rb' # Offense count: 1 +# Cop supports --auto-correct. RSpec/MultipleSubjects: Exclude: - 'spec/services/merge_requests/create_from_issue_service_spec.rb' @@ -188,95 +354,136 @@ RSpec/OverwritingSetup: - 'spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb' - 'spec/services/notes/quick_actions_service_spec.rb' -# Offense count: 965 +# Offense count: 1828 +# Cop supports --auto-correct. # Configuration parameters: Strict, EnforcedStyle. # SupportedStyles: inflected, explicit RSpec/PredicateMatcher: Enabled: false -# Offense count: 35 +# Offense count: 57 RSpec/RepeatedExample: Enabled: false -# Offense count: 140 +# Offense count: 474 +# Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: and_return, block RSpec/ReturnFromStub: Enabled: false -# Offense count: 112 +# Offense count: 188 RSpec/ScatteredLet: Enabled: false -# Offense count: 22 +# Offense count: 10 RSpec/ScatteredSetup: Exclude: - 'spec/controllers/projects/templates_controller_spec.rb' - 'spec/lib/gitlab/bitbucket_import/importer_spec.rb' - - 'spec/lib/gitlab/git/env_spec.rb' - 'spec/requests/api/jobs_spec.rb' - 'spec/services/projects/create_service_spec.rb' # Offense count: 1 +# Cop supports --auto-correct. RSpec/SharedContext: Exclude: - 'spec/features/admin/admin_groups_spec.rb' -# Offense count: 5 +# Offense count: 4 RSpec/VoidExpect: Exclude: - - 'spec/features/projects/artifacts/download_spec.rb' - 'spec/features/projects/services/user_activates_mattermost_slash_command_spec.rb' - 'spec/models/ci/group_spec.rb' - 'spec/models/ci/runner_spec.rb' - 'spec/services/users/destroy_service_spec.rb' -# Offense count: 41 +# Offense count: 8 +# Cop supports --auto-correct. +Rails/BelongsTo: + Exclude: + - 'app/models/deployment.rb' + - 'app/models/environment.rb' + - 'ee/app/models/prometheus_alert.rb' + - 'ee/app/models/prometheus_alert_event.rb' + +# Offense count: 80 # Configuration parameters: Include. # Include: db/migrate/*.rb Rails/CreateTableWithTimestamps: Enabled: false -# Offense count: 155 +# Offense count: 222 +# Configuration parameters: EnforcedStyle. +# SupportedStyles: slashes, arguments Rails/FilePath: Enabled: false -# Offense count: 121 +# Offense count: 167 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/HasManyOrHasOneDependent: Enabled: false -# Offense count: 157 +# Offense count: 40 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: numeric, symbolic +Rails/HttpStatus: + Enabled: false + +# Offense count: 2 +# Configuration parameters: Include. +# Include: app/controllers/**/*.rb +Rails/IgnoredSkipActionFilterOption: + Exclude: + - 'app/controllers/projects/snippets_controller.rb' + - 'app/controllers/snippets_controller.rb' + +# Offense count: 87 # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/InverseOf: Enabled: false -# Offense count: 48 +# Offense count: 46 # Configuration parameters: Include. # Include: app/controllers/**/*.rb Rails/LexicallyScopedActionFilter: Enabled: false -# Offense count: 14 +# Offense count: 4 +# Cop supports --auto-correct. +Rails/LinkToBlank: + Exclude: + - 'app/helpers/projects_helper.rb' + - 'app/helpers/wiki_helper.rb' + - 'ee/app/helpers/ee/user_callouts_helper.rb' + - 'ee/app/helpers/license_helper.rb' + +# Offense count: 11 # Cop supports --auto-correct. Rails/Presence: Exclude: - - 'app/controllers/projects/blob_controller.rb' - 'app/models/ci/pipeline.rb' - 'app/models/clusters/platforms/kubernetes.rb' - 'app/models/concerns/mentionable.rb' - - 'app/models/concerns/token_authenticatable.rb' - 'app/models/project_services/hipchat_service.rb' - 'app/models/project_services/irker_service.rb' - 'app/models/project_services/jira_service.rb' - 'app/models/project_services/kubernetes_service.rb' - 'app/models/project_services/packagist_service.rb' - 'app/models/wiki_page.rb' - - 'lib/gitlab/git/hook.rb' - 'lib/gitlab/github_import/importer/releases_importer.rb' +# Offense count: 1 +# Cop supports --auto-correct. +# Configuration parameters: Include. +# Include: app/models/**/*.rb +Rails/RedundantAllowNil: + Exclude: + - 'app/models/application_setting.rb' + # Offense count: 2 # Configuration parameters: Include. # Include: db/migrate/*.rb @@ -284,8 +491,8 @@ Rails/ReversibleMigration: Exclude: - 'db/migrate/20160824103857_drop_unused_ci_tables.rb' -# Offense count: 446 -# Configuration parameters: Blacklist. +# Offense count: 860 +# Configuration parameters: Blacklist, Whitelist. # Blacklist: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters Rails/SkipsModelValidations: Enabled: false @@ -297,21 +504,25 @@ Rails/UnknownEnv: Exclude: - 'db/migrate/20171124125748_populate_missing_merge_request_statuses.rb' -# Offense count: 13 +# Offense count: 11 # Cop supports --auto-correct. Security/YAMLLoad: Exclude: - - 'config/initializers/carrierwave.rb' - 'lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits.rb' - 'lib/gitlab/redis/wrapper.rb' - 'lib/system_check/incoming_email/imap_authentication_check.rb' - 'spec/config/mail_room_spec.rb' - 'spec/initializers/secret_token_spec.rb' - 'spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb' - - 'spec/models/clusters/platforms/kubernetes_spec.rb' - 'spec/models/project_services/kubernetes_service_spec.rb' -# Offense count: 64 +# Offense count: 34 +# Configuration parameters: EnforcedStyle. +# SupportedStyles: inline, group +Style/AccessModifierDeclarations: + Enabled: false + +# Offense count: 121 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: percent_q, bare_percent @@ -324,17 +535,13 @@ Style/CommentedKeyword: - 'lib/tasks/gitlab/backup.rake' - 'spec/tasks/gitlab/backup_rake_spec.rb' -# Offense count: 30 -Style/DateTime: - Enabled: false - # Offense count: 1 # Cop supports --auto-correct. Style/Dir: Exclude: - 'qa/qa.rb' -# Offense count: 9 +# Offense count: 7 # Cop supports --auto-correct. Style/EachWithObject: Exclude: @@ -345,46 +552,42 @@ Style/EachWithObject: - 'lib/gitlab/i18n/po_linter.rb' - 'lib/gitlab/import_export/members_mapper.rb' - 'lib/gitlab/import_export/relation_factory.rb' - - 'scripts/static-analysis' -# Offense count: 24 +# Offense count: 34 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: empty, nil, both Style/EmptyElse: Enabled: false -# Offense count: 14 +# Offense count: 11 # Cop supports --auto-correct. Style/EmptyLambdaParameter: Exclude: - 'app/models/ci/build.rb' - 'app/models/ci/runner.rb' -# Offense count: 12 +# Offense count: 9 # Cop supports --auto-correct. Style/EmptyLiteral: Exclude: - - 'features/steps/project/commits/commits.rb' - 'lib/gitlab/fogbugz_import/importer.rb' - 'lib/gitlab/git/diff_collection.rb' - 'lib/gitlab/gitaly_client.rb' - - 'scripts/trigger-build' - - 'spec/features/merge_requests/versions_spec.rb' - 'spec/helpers/merge_requests_helper_spec.rb' - 'spec/lib/gitlab/request_context_spec.rb' - 'spec/lib/gitlab/workhorse_spec.rb' - 'spec/requests/api/jobs_spec.rb' - 'spec/support/shared_examples/chat_slash_commands_shared_examples.rb' -# Offense count: 102 +# Offense count: 180 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: compact, expanded Style/EmptyMethod: Enabled: false -# Offense count: 23 +# Offense count: 40 # Cop supports --auto-correct. Style/Encoding: Enabled: false @@ -394,52 +597,52 @@ Style/EvalWithLocation: Exclude: - 'app/models/service.rb' -# Offense count: 35 +# Offense count: 203 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: format, sprintf, percent Style/FormatString: Enabled: false -# Offense count: 384 +# Offense count: 669 # Configuration parameters: MinBodyLength. Style/GuardClause: Enabled: false -# Offense count: 22 +# Offense count: 27 Style/IfInsideElse: Enabled: false -# Offense count: 809 +# Offense count: 1346 # Cop supports --auto-correct. Style/IfUnlessModifier: Enabled: false -# Offense count: 75 +# Offense count: 186 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: line_count_dependent, lambda, literal Style/Lambda: Enabled: false -# Offense count: 11 +# Offense count: 3 # Cop supports --auto-correct. Style/LineEndConcatenation: Exclude: - - 'app/helpers/tree_helper.rb' - - 'spec/features/issuables/markdown_references_spec.rb' - - 'spec/lib/gitlab/checks/project_moved_spec.rb' - 'spec/lib/gitlab/gfm/reference_rewriter_spec.rb' - 'spec/lib/gitlab/incoming_email_spec.rb' # Offense count: 18 -Style/MethodMissing: +Style/MethodMissingSuper: Enabled: false -# Offense count: 7 +# Offense count: 18 +Style/MissingRespondToMissing: + Enabled: false + +# Offense count: 6 Style/MixinUsage: Exclude: - - 'features/support/env.rb' - 'spec/factories/ci/builds.rb' - 'spec/factories/ci/job_artifacts.rb' - 'spec/factories/lfs_objects.rb' @@ -447,59 +650,63 @@ Style/MixinUsage: - 'spec/lib/gitlab/import_export/project_tree_restorer_spec.rb' - 'spec/lib/gitlab/import_export/version_checker_spec.rb' -# Offense count: 6 +# Offense count: 4 # Cop supports --auto-correct. Style/MultilineIfModifier: Exclude: - 'app/helpers/snippets_helper.rb' - 'app/models/project_wiki.rb' - 'app/services/ci/process_pipeline_service.rb' - - 'app/services/create_deployment_service.rb' - 'lib/api/commit_statuses.rb' - - 'lib/gitlab/ci/trace.rb' -# Offense count: 25 +# Offense count: 72 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle. +# SupportedStyles: literals, strict +Style/MutableConstant: + Enabled: false + +# Offense count: 28 # Cop supports --auto-correct. # Configuration parameters: Whitelist. # Whitelist: be, be_a, be_an, be_between, be_falsey, be_kind_of, be_instance_of, be_truthy, be_within, eq, eql, end_with, include, match, raise_error, respond_to, start_with Style/NestedParenthesizedCalls: Enabled: false -# Offense count: 19 +# Offense count: 31 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, MinBodyLength. # SupportedStyles: skip_modifier_ifs, always Style/Next: Enabled: false -# Offense count: 61 +# Offense count: 67 # Cop supports --auto-correct. # Configuration parameters: EnforcedOctalStyle. # SupportedOctalStyles: zero_with_o, zero_only Style/NumericLiteralPrefix: Enabled: false -# Offense count: 114 +# Offense count: 186 # Cop supports --auto-correct. -# Configuration parameters: AutoCorrect, EnforcedStyle. +# Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods. # SupportedStyles: predicate, comparison Style/NumericPredicate: Enabled: false -# Offense count: 4 +# Offense count: 2 # Cop supports --auto-correct. Style/OrAssignment: Exclude: - - 'app/models/concerns/token_authenticatable.rb' - 'lib/api/commit_statuses.rb' - 'lib/gitlab/project_transfer.rb' -# Offense count: 50 +# Offense count: 79 # Cop supports --auto-correct. Style/ParallelAssignment: Enabled: false -# Offense count: 917 +# Offense count: 1390 # Cop supports --auto-correct. # Configuration parameters: PreferredDelimiters. Style/PercentLiteralDelimiters: @@ -521,25 +728,20 @@ Style/PerlBackrefs: - 'lib/gitlab/search_results.rb' - 'lib/gitlab/sherlock/query.rb' -# Offense count: 87 +# Offense count: 129 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: compact, exploded Style/RaiseArgs: Enabled: false -# Offense count: 9 +# Offense count: 3 # Cop supports --auto-correct. Style/RedundantBegin: Exclude: - - 'app/controllers/projects/clusters/gcp_controller.rb' - 'app/models/merge_request.rb' - 'app/services/projects/import_service.rb' - - 'lib/api/branches.rb' - - 'lib/gitlab/current_settings.rb' - - 'lib/gitlab/git/commit.rb' - 'lib/gitlab/health_checks/base_abstract_check.rb' - - 'lib/tasks/gitlab/task_helpers.rb' # Offense count: 1 # Cop supports --auto-correct. @@ -547,7 +749,7 @@ Style/RedundantConditional: Exclude: - 'lib/system_check/helpers.rb' -# Offense count: 57 +# Offense count: 360 # Cop supports --auto-correct. Style/RedundantFreeze: Enabled: false @@ -567,41 +769,36 @@ Style/RedundantReturn: - 'lib/gitlab/utils.rb' - 'lib/google_api/auth.rb' -# Offense count: 460 +# Offense count: 700 # Cop supports --auto-correct. Style/RedundantSelf: Enabled: false -# Offense count: 142 +# Offense count: 28 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, AllowInnerSlashes. # SupportedStyles: slashes, percent_r, mixed Style/RegexpLiteral: - Enabled: true - EnforcedStyle: mixed - AllowInnerSlashes: false + Enabled: false -# Offense count: 36 +# Offense count: 41 # Cop supports --auto-correct. Style/RescueModifier: Enabled: false -# Offense count: 107 +# Offense count: 197 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: implicit, explicit Style/RescueStandardError: Enabled: false -# Offense count: 8 +# Offense count: 5 # Cop supports --auto-correct. Style/SelfAssignment: Exclude: - 'app/models/concerns/bulk_member_access_load.rb' - 'app/serializers/base_serializer.rb' - - 'app/services/notification_service.rb' - - 'lib/api/runners.rb' - - 'spec/features/merge_requests/diff_notes_resolve_spec.rb' - 'spec/features/projects/clusters/interchangeability_spec.rb' - 'spec/support/import_export/configuration_helper.rb' @@ -612,7 +809,7 @@ Style/SingleLineMethods: Exclude: - 'lib/gitlab/ci/ansi2html.rb' -# Offense count: 66 +# Offense count: 91 # Cop supports --auto-correct. # Configuration parameters: . # SupportedStyles: use_perl_names, use_english_names @@ -625,21 +822,21 @@ Style/StderrPuts: Exclude: - 'config/initializers/rspec_profiling.rb' -# Offense count: 45 +# Offense count: 65 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. # SupportedStyles: single_quotes, double_quotes Style/StringLiteralsInInterpolation: Enabled: false -# Offense count: 106 +# Offense count: 187 # Cop supports --auto-correct. # Configuration parameters: IgnoredMethods. # IgnoredMethods: respond_to, define_method Style/SymbolProc: Enabled: false -# Offense count: 9 +# Offense count: 7 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, AllowSafeAssignment. # SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex @@ -647,45 +844,65 @@ Style/TernaryParentheses: Exclude: - 'app/finders/projects_finder.rb' - 'app/helpers/namespaces_helper.rb' - - 'features/support/capybara.rb' - 'lib/gitlab/ci/build/artifacts/metadata/entry.rb' - 'spec/requests/api/pipeline_schedules_spec.rb' - 'spec/support/capybara.rb' -# Offense count: 17 +# Offense count: 3 # Cop supports --auto-correct. -# Configuration parameters: AllowNamedUnderscoreVariables. -Style/TrailingUnderscoreVariable: +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInArguments: Exclude: - - 'app/controllers/admin/background_jobs_controller.rb' - - 'app/controllers/invites_controller.rb' - - 'app/helpers/tab_helper.rb' - - 'lib/backup/manager.rb' - - 'lib/gitlab/logger.rb' - - 'lib/gitlab/upgrader.rb' - - 'lib/system_check/app/migrations_are_up_check.rb' - - 'lib/system_check/incoming_email/mail_room_running_check.rb' - - 'lib/tasks/gitlab/check.rake' - - 'lib/tasks/gitlab/task_helpers.rb' - - 'spec/lib/gitlab/etag_caching/middleware_spec.rb' - - 'spec/services/quick_actions/interpret_service_spec.rb' + - 'spec/features/markdown/copy_as_gfm_spec.rb' -# Offense count: 4 +# Offense count: 10 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInArrayLiteral: + Exclude: + - 'ee/spec/models/project_spec.rb' + - 'spec/lib/gitlab/diff/position_tracer_spec.rb' + - 'spec/lib/gitlab/metrics/dashboard/processor_spec.rb' + +# Offense count: 2 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInHashLiteral: + Exclude: + - 'lib/gitlab/ci/ansi2html.rb' + - 'lib/gitlab/kubernetes.rb' + +# Offense count: 2 # Cop supports --auto-correct. Style/UnlessElse: Exclude: - 'lib/backup/manager.rb' - 'lib/gitlab/project_search_results.rb' - - 'lib/tasks/gitlab/check.rake' - - 'spec/features/issues/award_emoji_spec.rb' -# Offense count: 31 +# Offense count: 10 +# Cop supports --auto-correct. +Style/UnneededCondition: + Exclude: + - 'app/helpers/button_helper.rb' + - 'app/helpers/environment_helper.rb' + - 'app/models/project.rb' + - 'app/services/issuable/clone/base_service.rb' + - 'app/services/prometheus/adapter_service.rb' + - 'lib/gitlab/email/message/repository_push.rb' + - 'lib/gitlab/prometheus_client.rb' + - 'spec/lib/rspec_flaky/flaky_example_spec.rb' + +# Offense count: 73 # Cop supports --auto-correct. Style/UnneededInterpolation: Enabled: false -# Offense count: 22840 -# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. -# URISchemes: http, https -Metrics/LineLength: - Max: 1310 +# Offense count: 2 +# Cop supports --auto-correct. +Style/UnneededSort: + Exclude: + - 'app/models/concerns/resolvable_discussion.rb' + - 'lib/gitlab/highlight.rb' diff --git a/.stylelintrc b/.stylelintrc index 59ee0e879e..b0ace93e04 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -2,7 +2,7 @@ "plugins":[ "./scripts/frontend/stylelint/stylelint-duplicate-selectors.js", "./scripts/frontend/stylelint/stylelint-utility-classes.js", - "stylelint-scss", + "stylelint-scss" ], "rules":{ "at-rule-blacklist":[ @@ -94,7 +94,7 @@ { "message":"Selector should be written in lowercase with hyphens (selector-class-pattern)", "severity": "warning" - }, + } ], "selector-list-comma-newline-after":"always", "selector-max-compound-selectors":[3, { "severity": "warning" }], @@ -104,8 +104,8 @@ "selector-pseudo-element-no-unknown":true, "shorthand-property-no-redundant-values":true, "string-quotes":"single", - "value-no-vendor-prefix":[true, { ignoreValues: ["sticky"] }], + "value-no-vendor-prefix":[true, { "ignoreValues": ["sticky"] }], "stylelint-gitlab/duplicate-selectors":[true,{ "severity": "warning" }], - "stylelint-gitlab/utility-classes":[true,{ "severity": "warning" }], + "stylelint-gitlab/utility-classes":[true,{ "severity": "warning" }] } } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d73e94d73..d7f4e80078 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,60 +2,82 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 11.10.8 (2019-06-27) +## 11.11.7 + +### Security (9 changes) + +- Restrict slash commands to users who can log in. +- Patch XSS issue in wiki links. +- Filter merge request params on the new merge request page. +- Fix Server Side Request Forgery mitigation bypass. +- Show badges if pipelines are public otherwise default to project permissions. +- Do not allow localhost url redirection in GitHub Integration. +- Do not show moved issue id for users that cannot read issue. +- Use source project as permissions reference for MergeRequestsController#pipelines. +- Drop feature to take ownership of trigger token. + + +## 11.11.6 + +- Unreleased due to QA failure. + +## 11.11.5 (2019-06-27) -- No changes. ### Security (10 changes) -- Fix Denial of Service for comments when rendering issues/MR comments. -- Gate MR head_pipeline behind read_pipeline ability. +- Disable Rails SQL query cache when applying service templates. !30060 +- Add missing authorizations in GraphQL. - Fix DoS vulnerability in color validation regex. - Expose merge requests count based on user access. -- Persist tmp snippet uploads at users. -- Add missing authorizations in GraphQL. -- Disable Rails SQL query cache when applying service templates. +- Fix Denial of Service for comments when rendering issues/MR comments. +- Gate MR head_pipeline behind read_pipeline ability. - Prevent Billion Laughs attack. - Correctly check permissions when creating snippet notes. - Prevent the detection of merge request templates by unauthorized users. - -### Performance (1 change) - -- Add improvements to global search of issues and merge requests. !27817 +- Persist tmp snippet uploads at users. -## 11.10.7 (2019-06-26) +## 11.11.4 (2019-06-26) ### Fixed (3 changes) -- Remove a default git depth in Pipelines for merge requests. !28926 -- Fix label click scrolling to top. !29202 +- Fix Fogbugz Importer not working. !29383 - Fix scrolling to top on assignee change. !29500 +- Fix IDE commit using latest ref in branch and overriding contents. !29769 -## 11.10.6 (2019-06-04) +## 11.11.3 (2019-06-10) -### Fixed (7 changes, 1 of them is from the community) +### Fixed (5 changes) -- Allow a member to have an access level equal to parent group. !27913 -- Fix uploading of LFS tracked file through UI. !28052 -- Use 3-way merge for squashing commits. !28078 -- Use a path for the related merge requests endpoint. !28171 -- Fix project visibility level validation. !28305 (Peter Marko) -- Fix Rugged get_tree_entries recursive flag not working. !28494 +- Fix invalid visibility string comparison in project import. !28612 +- Remove a default git depth in Pipelines for merge requests. !28926 +- Fix connection to Tiller error while uninstalling. !29131 +- Fix label click scrolling to top. !29202 +- Make OpenID Connect work without requiring a name. !29312 + + +## 11.11.2 (2019-06-04) + +### Fixed (7 changes) + +- Update SAST.gitlab-ci.yml - Add SAST_GITLEAKS_ENTROPY_LEVEL. !28607 +- Fix OmniAuth OAuth2Generic strategy not loading. !28680 - Use source ref in pipeline webhook. !28772 +- Fix migration failure when groups are missing route. !29022 +- Stop two-step rebase from hanging when errors occur. !29068 +- Fix project settings not being able to update. !29097 +- Fix display of 'Promote to group label' button. ### Other (1 change) - Fix input group height. -## 11.10.5 (2019-05-30) +## 11.11.1 (2019-05-30) -### Security (12 changes, 1 of them is from the community) +### Security (12 changes) -- Protect Gitlab::HTTP against DNS rebinding attack. -- Fix project visibility level validation. (Peter Marko) -- Update Knative version. - Add DNS rebinding protection settings. - Prevent XSS injection in note imports. - Prevent invalid branch for merge request. @@ -63,10 +85,198 @@ entry. - Fix confidential issue label disclosure on milestone view. - Fix url redaction for issue links. - Resolve: Milestones leaked via search API. +- Protect Gitlab::HTTP against DNS rebinding attack. +- Add extra fields for handling basic auth on import by url page. - Prevent bypass of restriction disabling web password sign in. +- Update Gitaly to fix GetArchive vulnerability. - Hide confidential issue title on unsubscribe for anonymous users. +## 11.11.0 (2019-05-22) + +### Security (1 change) + +- Destroy project remote mirrors instead of disabling. !27087 + +### Fixed (74 changes, 19 of them are from the community) + +- Don't create a temp reference for branch comparisons within project. !24038 +- Fix some label links not appearing on group labels page and label title being a link on project labels page. !24060 (Tanya Pazitny) +- Fix extra emails for custom notifications. !25607 +- Rewind IID on Ci::Pipelines. !26490 +- Fix duplicate merge request pipelines created by Sidekiq worker retry. !26643 +- Catch and report OpenSSL exceptions while fetching external configuration files in CI::Config. !26750 (Drew Cimino) +- stop rendering download links for expired artifacts on the project tags page. !26753 (Drew Cimino) +- Format extra help page text like wiki. !26782 (Bastian Blank) +- Always show instance configuration link. !26783 (Bastian Blank) +- Display maximum artifact size from runtime config. !26784 (Bastian Blank) +- Resolve issue where list labels did not have the correct text color on creation. !26794 (Tucker Chapman) +- Set release name when adding release notes to an existing tag. !26807 +- Fix the bug that the project statistics is not updated. !26854 (Hiroyuki Sato) +- Client side changes for ListLastCommitsForTree response update. !26880 +- Fix api group visibility. !26896 +- Require all templates to use default stages. !26954 +- Remove a "reopen merge request button" on a "merged" merge request. !26965 (Hiroyuki Sato) +- Fix misaligned image diff swipe view. !26969 (ftab) +- Add badge-pill class on group member count. !27019 +- Remove leading / trailing spaces from heading when generating header ids. !27025 (Willian Balmant) +- Respect updated_at attribute in notes produced by API calls. !27124 (Ben Gamari) +- Fix GitHub project import visibility. !27133 (Daniel Wyatt) +- Fixes actions dropdowns in environments page. !27160 +- Fixes create button background for Environments form. !27161 +- Display scoped labels in Issue Boards. !27164 +- Align UrlValidator to validate_url gem implementation. !27194 (Horatiu Eugen Vlad) +- Resolve Web IDE template dropdown showing duplicates. !27237 +- Update GitLab Workhorse to v8.6.0. !27260 +- Only show in autocomplete when author active. !27292 +- Remove deadline for Git fsck. !27299 +- Show prioritized labels to guests. !27307 +- Properly expire all pipeline caches when pipeline is deleted. !27334 +- Replaced icon for external URL with doc-text icon. !27365 +- Add auto direction for issue title. !27378 (Ahmad Haghighi) +- fix wiki search result links in titles. !27400 (khm) +- Fix system notes timestamp when creating issue in the past. !27406 +- Fix approvals sometimes being reset after a merge request is rebased. !27446 +- Fix empty block in MR widget when user doesn't have permission. !27462 +- Fix wrong use of ActiveRecord in PoolRepository. !27464 +- Show proper preview for uploaded images in Web IDE. !27471 +- Resolve Renaming an image via Web IDE corrupts it. !27486 +- Clean up CarrierWave's import/export files. !27487 +- Fix autocomplete dropdown for usernames starting with period. !27533 (Jan Beckmann) +- Disable password autocomplete in mirror repository form. !27542 +- Always use internal ID tables in development and production. !27544 +- Only show the "target branch has advanced" message when the merge request is open. !27588 +- Resolve Misalignment on suggested changes diff table. !27612 +- Update Workhorse to v8.7.0. !27630 +- Fix FE API and IDE handling of '/' relative_url_root. !27635 +- Hide ScopedBadge overflow notes. !27651 +- Fix base domain help text update. !27746 +- Upgrade letter_opener_web to support Rails 5.1. !27829 +- Fix webpack assets handling when relative url root is '/'. !27909 +- Fix IDE get file data with '/' as relative root. !27911 +- Allow a member to have an access level equal to parent group. !27913 +- Fix issuables state_id nil when importing projects from GitHub. !28027 +- Fix uploading of LFS tracked file through UI. !28052 +- Render Next badge only for gitlab.com. !28056 +- Fix update head pipeline process of Pipelines for merge requests. !28057 +- Fix visual issues in set status modal. !28147 +- Use a path for the related merge requests endpoint. !28171 +- disable SSH key validation in key details view. !28180 (Roger Meier) +- Fix MR discussion border missing in chrome sometimes. !28185 +- Fix Error 500 when inviting user already present. !28198 +- Remove non-semantic use of `.row` in member listing controls. !28204 +- Properly handle LFS Batch API response in project import. !28223 +- Fix project visibility level validation. !28305 (Peter Marko) +- Fix incorrect prefix used in new uploads for personal snippets. !28337 +- Fix Rugged get_tree_entries recursive flag not working. !28494 +- Fixes next badge being always visible. +- Next badge must visible when canary flag is true. +- Adds arrow icons to select option in CI/CD settings. +- Vertically aligns the play button for stages. +- Allow replying to individual notes from API. + +### Changed (19 changes, 3 of them are from the community) + +- Sort by due date and popularity in both directions for Issues and Merge requests. !25502 (Nermin Vehabovic) +- Improve pipelines table spacing, add triggerer column. !26136 +- Allow extra arguments in helm commands when deploying the application in Auto-DevOps.gitlab-ci.yml. !26171 (tortuetorche) +- Switch to sassc-rails for faster stylesheet compilation. !26224 +- Reorganize project merge request settings. !26834 +- Display a toast message when the Kubernetes runner has successfully upgraded. !27206 +- Allow guests users to access project releases. !27247 +- Add help texts to K8 form fields. !27274 +- Support prometheus for group level clusters. !27280 +- Include link to raw job log in plain-text emails. !27409 +- Only escape Markdown emphasis characters in autocomplete when necessary. !27457 +- Move location of charts/auto-deploy-app -> gitlab-org/charts/auto-deploy-app. !27477 +- Make canceled jobs not retryable. !27503 +- Upgrade to Gitaly v1.36.0. !27831 +- Update deployment event chat notification message. !27972 +- Upgrade to Gitaly v1.42.0. !28135 +- Resolve discussion when apply suggestion. !28160 +- Improve expanding diff to full file performance. +- Knative version bump 0.3 -> 0.5. (Chris Baumbauer ) + +### Performance (5 changes) + +- Added list_pages method to avoid loading all wiki pages content. !22801 +- Add gitaly session id & catfile-cache feature flag. !27472 +- Add improvements to global search of issues and merge requests. !27817 +- Disable method replacement in avatar loading. !27866 +- Fix Blob.lazy always loading all previously-requested blobs when a new request is made. + +### Added (36 changes, 10 of them are from the community) + +- Add time preferences for user. !25381 +- Added write_repository scope for personal access token. !26021 (Horatiu Eugen Vlad) +- Mark disabled pages domains for removal, but don't remove them yet. !26212 +- Remove pages domains if they weren't verified for 1 week. !26227 +- Expose pipeline variables via API. !26501 (Agustin Henze ) +- Download a folder from repository. !26532 (kiameisomabes) +- Remove cleaned up OIDs from database and cache. !26555 +- Disables kubernetes resources creation if a cluster is not managed. !26565 +- Add CI_COMMIT_REF_PROTECTED CI variable. !26716 (Jason van den Hurk) +- Add new API endpoint to expose a single environment. !26887 +- Allow Sentry configuration to be passed on gitlab.yml. !27091 (Roger Meier) +- CI variables of type file. !27112 +- Allow linking to a private helm repository by providing credentials, and customisation of repository name. !27123 (Stuart Moore @stjm-cc) +- Add time tracking information to Issue Boards sidebar. !27166 +- Play all manual jobs in a stage. !27188 +- Instance level kubernetes clusters. !27196 +- Adds if InfluxDB and Prometheus metrics are enabled to usage ping data. !27238 +- Autosave description in epics. !27296 +- Add deployment events to chat notification services. !27338 +- Add packages_size to ProjectStatistics. !27373 +- Added OmniAuth OpenID Connect strategy. !27383 (Horatiu Eugen Vlad) +- Test using Git 2.21. !27418 +- Use official Gitea logo in importer. !27424 (Matti Ranta (@techknowlogick)) +- Add option to set access_level of runners upon registration. !27490 (Zelin L) +- Add initial GraphQL query for Groups. !27492 +- Enable Sidekiq Reliable Fetcher for background jobs by default. !27530 +- Add backend support for a External Dashboard URL setting. !27550 +- Implement UI for uninstalling Cluster’s managed apps. !27559 +- Resolve Salesforce.com omniauth support. !27834 +- Leave project/group from access granted email. !27892 +- Allow Sentry client-side DSN to be passed on gitlab.yml. !27967 +- GraphQL: improve evaluation of query complexity based on arguments and query limits. !28017 +- Adds badge for Canary environment and help link. +- Support negative matches. +- Show category icons in user popover. +- Added Omniauth UltraAuth strategy to GitLab. (Kartikey Tanna) + +### Other (29 changes, 8 of them are from the community) + +- Validate refs used in controllers don't have spaces. !24037 +- Migrate correlation and tracing code to LabKit. !25379 +- Update node.js to 10.15.3 in CI template for Hexo. !25943 (Takuya Noguchi) +- Improve icons and button order in project overview. !26796 +- Add instructions on how to contribute a Built-In template for project. !26976 +- Extract DiscussionNotes component from NoteableDiscussion. !27066 +- Bump gRPC to 1.19.0 and protobuf to 3.7.1. !27086 +- Extract DiscussionActions component from NoteableDiscussion. !27227 +- Show disabled project repo mirrors in settings. !27326 +- Add backtrace to Gitaly performance bar. !27345 +- Moved EE/CE differences for dropdown_value_collapsed into CE. !27367 +- Remove "You are already signed in" banner. !27377 +- Move ee-specific code from boards/components/issue_card_inner.vue. !27394 (Roman Rodionov) +- Upgrade to Rails 5.1. !27480 (Jasper Maes) +- Update GitLab Runner Helm Chart to 0.4.0. !27508 +- Update GitLab Runner Helm Chart to 0.4.1. !27627 +- Refactored notes tests from Karma to Jest. !27648 (Martin Hobert) +- refactor(issue): Refactored issue tests from Karma to Jest. !27673 (Martin Hobert) +- Refactored Karma spec files to Jest. !27688 (Martin Hobert) +- Add CSS fix for elements on IE11. !27846 +- Update clair-local-scan to v2.0.8 for container scanning. !27977 +- Use PostgreSQL 10.7 in tests. !28020 +- Document EE License Auto Import During Install. !28106 +- Remove the note in the docs that multi-line suggestions are not yet available. !28119 (hardysim) +- Update gitlab-shell to v9.1.0. !28184 +- Add EE fixtures to SeedFu list. !28241 +- Replaces CSS with BS4 utility class for pipeline schedules. +- Creates a vendors folder for external CSS. +- Add some frozen string to spec/**/*.rb. (gfyoung) + + ## 11.10.4 (2019-05-01) ### Fixed (12 changes) @@ -358,6 +568,44 @@ entry. - Removes EE differences for environment_item.vue. +## 11.9.10 (2019-04-26) + +### Security (5 changes) + +- Loosen regex for exception sanitization. !3077 +- Resolve: moving an issue to private repo leaks namespace and project name. +- Escape path in new merge request mail. +- Stop sending emails to users who can't read commit. +- Upgrade Rails to 5.0.7.2. + + +## 11.9.9 (2019-04-23) + +### Performance (1 change) + +- Bring back Rugged implementation of ListCommitsByOid. !27441 + + +## 11.9.8 (2019-04-11) + +### Deprecated (1 change) + +- Allow to use untrusted Regexp via feature flag. !26905 + +### Performance (2 changes) + +- Improve performance of PR import. !27121 +- Disable method instrumentation for diffs. !27235 + +### Other (1 change) + +- Restore HipChat project service. !27172 + + +## 11.9.7 (2019-04-09) + +- No changes. + ## 11.9.6 (2019-04-04) ### Fixed (3 changes) @@ -689,6 +937,35 @@ entry. - Removes EE differences for jobs/getters.js. +## 11.8.10 (2019-04-30) + +### Security (1 change) + +- Allow to see project events only with api scope token. + + +## 11.8.8 (2019-04-23) + +### Fixed (5 changes) + +- Bring back Rugged implementation of find_commit. !25477 +- Fix bug in BitBucket imports with SHA shorter than 40 chars. !26050 +- Fix health checks not working behind load balancers. !26055 +- Fix error creating a merge request when diff includes a null byte. !26190 +- Avoid excessive recursive calls with Rugged TreeEntries. !26813 + +### Performance (1 change) + +- Bring back Rugged implementation of ListCommitsByOid. !27441 + +### Other (4 changes) + +- Bring back Rugged implementation of GetTreeEntries. !25674 +- Bring back Rugged implementation of CommitIsAncestor. !25702 +- Bring back Rugged implementation of TreeEntry. !25706 +- Bring back Rugged implementation of commit_tree_entry. !25896 + + ## 11.8.3 (2019-03-19) ### Security (1 change) @@ -958,6 +1235,29 @@ entry. - Creates mixin to reduce code duplication between CE and EE in graph component. +## 11.7.12 (2019-04-23) + +### Fixed (2 changes) + +- Bring back Rugged implementation of find_commit. !25477 +- Avoid excessive recursive calls with Rugged TreeEntries. !26813 + +### Performance (1 change) + +- Bring back Rugged implementation of ListCommitsByOid. !27441 + +### Other (4 changes) + +- Bring back Rugged implementation of GetTreeEntries. !25674 +- Bring back Rugged implementation of CommitIsAncestor. !25702 +- Bring back Rugged implementation of TreeEntry. !25706 +- Bring back Rugged implementation of commit_tree_entry. !25896 + + +## 11.7.11 (2019-04-09) + +- No changes. + ## 11.7.10 (2019-03-28) ### Security (7 changes) @@ -1229,6 +1529,30 @@ entry. - Update url placeholder for the sentry configuration page. !24338 +## 11.6.11 (2019-04-23) + +### Security (2 changes) + +- Fixed ability to see private groups by users not belonging to given group. +- Fix XSS in resolve conflicts form. + +### Fixed (2 changes) + +- Bring back Rugged implementation of find_commit. !25477 +- Avoid excessive recursive calls with Rugged TreeEntries. !26813 + +### Performance (1 change) + +- Bring back Rugged implementation of ListCommitsByOid. !27441 + +### Other (4 changes) + +- Bring back Rugged implementation of GetTreeEntries. !25674 +- Bring back Rugged implementation of CommitIsAncestor. !25702 +- Bring back Rugged implementation of TreeEntry. !25706 +- Bring back Rugged implementation of commit_tree_entry. !25896 + + ## 11.6.10 (2019-02-28) ### Security (21 changes) @@ -1600,6 +1924,25 @@ entry. - Enable Rubocop on lib/gitlab. (gfyoung) +## 11.5.11 (2019-04-23) + +### Fixed (2 changes) + +- Bring back Rugged implementation of find_commit. !25477 +- Avoid excessive recursive calls with Rugged TreeEntries. !26813 + +### Performance (1 change) + +- Bring back Rugged implementation of ListCommitsByOid. !27441 + +### Other (4 changes) + +- Bring back Rugged implementation of GetTreeEntries. !25674 +- Bring back Rugged implementation of CommitIsAncestor. !25702 +- Bring back Rugged implementation of TreeEntry. !25706 +- Bring back Rugged implementation of commit_tree_entry. !25896 + + ## 11.5.8 (2019-01-28) ### Security (21 changes) diff --git a/Dangerfile b/Dangerfile index 3e8cb45600..9e3a08949b 100644 --- a/Dangerfile +++ b/Dangerfile @@ -1,3 +1,4 @@ +# frozen_string_literal: true danger.import_plugin('danger/plugins/helper.rb') unless helper.release_automation? @@ -16,4 +17,5 @@ unless helper.release_automation? danger.import_dangerfile(path: 'danger/roulette') danger.import_dangerfile(path: 'danger/single_codebase') danger.import_dangerfile(path: 'danger/gitlab_ui_wg') + danger.import_dangerfile(path: 'danger/ce_ee_vue_templates') end diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 7e3856fe87..c39f63b9ef 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1.34.3 +1.42.5 diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index f7ee06693c..47da986f86 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -9.0.0 +9.1.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index 85e2cd5309..df5119ec64 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.5.2 +8.7.0 diff --git a/Gemfile b/Gemfile index 00f90bdf7e..faedbd892c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,6 @@ source 'https://rubygems.org' -gem 'rails', '5.0.7.2' -gem 'rails-deprecated_sanitizer', '~> 1.0.3' +gem 'rails', '5.1.7' # Improves copy-on-write performance for MRI gem 'nakayoshi_fork', '~> 0.0.4' @@ -19,7 +18,7 @@ gem 'mysql2', '~> 0.4.10', group: :mysql gem 'pg', '~> 1.1', group: :postgres gem 'rugged', '~> 0.28' -gem 'grape-path-helpers', '~> 1.0' +gem 'grape-path-helpers', '~> 1.1' gem 'faraday', '~> 0.12' @@ -42,6 +41,9 @@ gem 'omniauth-shibboleth', '~> 1.3.0' gem 'omniauth-twitter', '~> 1.4' gem 'omniauth_crowd', '~> 2.2.0' gem 'omniauth-authentiq', '~> 0.3.3' +gem 'omniauth_openid_connect', '~> 0.3.0' +gem "omniauth-ultraauth", '~> 0.0.2' +gem 'omniauth-salesforce', '~> 1.0.5' gem 'rack-oauth2', '~> 1.9.3' gem 'jwt', '~> 2.1.0' @@ -79,6 +81,7 @@ gem 'rack-cors', '~> 1.0.0', require: 'rack/cors' # GraphQL API gem 'graphql', '~> 1.8.0' gem 'graphiql-rails', '~> 1.4.10' +gem 'apollo_upload_server', '~> 2.0.0.beta3' # Disable strong_params so that Mash does not respond to :permitted? gem 'hashie-forbidden_attributes' @@ -129,7 +132,7 @@ gem 'asciidoctor-plantuml', '0.0.8' gem 'rouge', '~> 3.1' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' -gem 'nokogiri', '~> 1.10.1' +gem 'nokogiri', '~> 1.10.3' gem 'escape_utils', '~> 1.1' # Calendar rendering @@ -158,7 +161,7 @@ gem 'state_machines-activerecord', '~> 0.5.1' gem 'acts-as-taggable-on', '~> 6.0' # Background jobs -gem 'sidekiq', '~> 5.2.1' +gem 'sidekiq', '~> 5.2.7' gem 'sidekiq-cron', '~> 1.0' gem 'redis-namespace', '~> 1.6.0' gem 'gitlab-sidekiq-fetcher', '~> 0.4.0', require: 'sidekiq-reliable-fetch' @@ -257,8 +260,7 @@ gem 'chronic_duration', '~> 0.10.6' gem 'webpack-rails', '~> 0.9.10' gem 'rack-proxy', '~> 0.6.0' -gem 'sass-rails', '~> 5.0.6' -gem 'sass', '~> 3.5' +gem 'sassc-rails', '~> 2.1.0' gem 'uglifier', '~> 2.7.2' gem 'addressable', '~> 2.5.2' @@ -274,6 +276,9 @@ gem 'sentry-raven', '~> 2.7' gem 'premailer-rails', '~> 1.9.7' +# LabKit: Tracing and Correlation +gem 'gitlab-labkit', '~> 0.2.0' + # I18n gem 'ruby_parser', '~> 3.8', require: false gem 'rails-i18n', '~> 5.1' @@ -281,7 +286,7 @@ gem 'gettext_i18n_rails', '~> 1.8.0' gem 'gettext_i18n_rails_js', '~> 1.3' gem 'gettext', '~> 3.2.2', require: false, group: :development -gem 'batch-loader', '~> 1.2.2' +gem 'batch-loader', '~> 1.4.0' # Perf bar gem 'peek', '~> 1.0.1' @@ -301,17 +306,11 @@ group :metrics do gem 'raindrops', '~> 0.18' end -group :tracing do - # OpenTracing - gem 'opentracing', '~> 0.4.3' - gem 'jaeger-client', '~> 0.10.0' -end - group :development do gem 'foreman', '~> 0.84.0' gem 'brakeman', '~> 4.2', require: false - gem 'letter_opener_web', '~> 1.3.0' + gem 'letter_opener_web', '~> 1.3.4' gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false # Better errors handler @@ -334,7 +333,7 @@ group :development, :test do gem 'database_cleaner', '~> 1.7.0' gem 'factory_bot_rails', '~> 4.8.2' gem 'rspec-rails', '~> 3.7.0' - gem 'rspec-retry', '~> 0.4.5' + gem 'rspec-retry', '~> 0.6.1' gem 'rspec_profiling', '~> 0.0.5' gem 'rspec-set', '~> 0.1.3' gem 'rspec-parameterized', require: false @@ -345,20 +344,21 @@ group :development, :test do # Generate Fake data gem 'ffaker', '~> 2.10' - gem 'capybara', '~> 2.16.1' - gem 'capybara-screenshot', '~> 1.0.18' - gem 'selenium-webdriver', '~> 3.12' + gem 'capybara', '~> 2.18.0' + gem 'capybara-screenshot', '~> 1.0.22' + gem 'selenium-webdriver', '~> 3.141' gem 'spring', '~> 2.0.0' gem 'spring-commands-rspec', '~> 1.0.4' - gem 'gitlab-styles', '~> 2.4', require: false + gem 'gitlab-styles', '~> 2.6', require: false # Pin these dependencies, otherwise a new rule could break the CI pipelines - gem 'rubocop', '~> 0.54.0' + gem 'rubocop', '~> 0.68.1' + gem 'rubocop-performance', '~> 1.1.0' gem 'rubocop-rspec', '~> 1.22.1' gem 'scss_lint', '~> 0.56.0', require: false - gem 'haml_lint', '~> 0.28.0', require: false + gem 'haml_lint', '~> 0.30.0', require: false gem 'simplecov', '~> 0.14.0', require: false gem 'bundler-audit', '~> 0.5.0', require: false @@ -419,11 +419,11 @@ group :ed25519 do end # Gitaly GRPC client -gem 'gitaly-proto', '~> 1.22.1', require: 'gitaly' +gem 'gitaly-proto', '~> 1.27.2', require: 'gitaly' -gem 'grpc', '~> 1.15.0' +gem 'grpc', '~> 1.19.0' -gem 'google-protobuf', '~> 3.6' +gem 'google-protobuf', '~> 3.7.1' gem 'toml-rb', '~> 1.0.0', require: false diff --git a/Gemfile.lock b/Gemfile.lock index d498172b02..8708e79733 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,41 +4,41 @@ GEM RedCloth (4.3.2) abstract_type (0.0.7) ace-rails-ap (4.1.2) - actioncable (5.0.7.2) - actionpack (= 5.0.7.2) - nio4r (>= 1.2, < 3.0) + actioncable (5.1.7) + actionpack (= 5.1.7) + nio4r (~> 2.0) websocket-driver (~> 0.6.1) - actionmailer (5.0.7.2) - actionpack (= 5.0.7.2) - actionview (= 5.0.7.2) - activejob (= 5.0.7.2) + actionmailer (5.1.7) + actionpack (= 5.1.7) + actionview (= 5.1.7) + activejob (= 5.1.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (5.0.7.2) - actionview (= 5.0.7.2) - activesupport (= 5.0.7.2) + actionpack (5.1.7) + actionview (= 5.1.7) + activesupport (= 5.1.7) rack (~> 2.0) - rack-test (~> 0.6.3) + rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.0.7.2) - activesupport (= 5.0.7.2) + actionview (5.1.7) + activesupport (= 5.1.7) builder (~> 3.1) - erubis (~> 2.7.0) + erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (5.0.7.2) - activesupport (= 5.0.7.2) + activejob (5.1.7) + activesupport (= 5.1.7) globalid (>= 0.3.6) - activemodel (5.0.7.2) - activesupport (= 5.0.7.2) - activerecord (5.0.7.2) - activemodel (= 5.0.7.2) - activesupport (= 5.0.7.2) - arel (~> 7.0) + activemodel (5.1.7) + activesupport (= 5.1.7) + activerecord (5.1.7) + activemodel (= 5.1.7) + activesupport (= 5.1.7) + arel (~> 8.0) activerecord_sane_schema_dumper (1.0) rails (>= 5, < 6) - activesupport (5.0.7.2) + activesupport (5.1.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) @@ -52,7 +52,10 @@ GEM public_suffix (>= 2.0.2, < 4.0) aes_key_wrap (1.0.1) akismet (2.0.0) - arel (7.1.4) + apollo_upload_server (2.0.0.beta.3) + graphql (>= 1.8) + rails (>= 4.2) + arel (8.0.0) asana (0.8.1) faraday (~> 0.9) faraday_middleware (~> 0.9) @@ -73,7 +76,7 @@ GEM thread_safe (~> 0.3, >= 0.3.1) babosa (1.0.2) base32 (0.3.2) - batch-loader (1.2.2) + batch-loader (1.4.0) bcrypt (3.1.12) bcrypt_pbkdf (1.0.0) benchmark-ips (2.3.0) @@ -100,13 +103,13 @@ GEM bundler (~> 1.2) thor (~> 0.18) byebug (9.1.0) - capybara (2.16.1) + capybara (2.18.0) addressable mini_mime (>= 0.1.3) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) - xpath (~> 2.0) + xpath (>= 2.0, < 4.0) capybara-screenshot (1.0.22) capybara (>= 1.0, < 4) launchy @@ -185,8 +188,7 @@ GEM mail (~> 2.7) encryptor (3.0.0) equalizer (0.0.11) - erubi (1.7.1) - erubis (2.7.0) + erubi (1.8.0) escape_utils (1.2.1) et-orbi (1.1.7) tzinfo @@ -257,8 +259,8 @@ GEM fog-xml (0.1.3) fog-core nokogiri (>= 1.5.11, < 2.0.0) - font-awesome-rails (4.7.0.1) - railties (>= 3.2, < 5.1) + font-awesome-rails (4.7.0.4) + railties (>= 3.2, < 6.0) foreman (0.84.0) thor (~> 0.19.1) formatador (0.2.5) @@ -281,17 +283,24 @@ GEM gettext_i18n_rails (>= 0.7.1) po_to_json (>= 1.0.0) rails (>= 3.2.0) - gitaly-proto (1.22.1) + gitaly-proto (1.27.2) grpc (~> 1.0) github-markup (1.7.0) gitlab-default_value_for (3.1.1) activerecord (>= 3.2.0, < 6.0) + gitlab-labkit (0.2.0) + actionpack (~> 5) + activesupport (~> 5) + grpc (~> 1.15) + jaeger-client (~> 0.10) + opentracing (~> 0.4) gitlab-markup (1.7.0) gitlab-sidekiq-fetcher (0.4.0) sidekiq (~> 5) - gitlab-styles (2.5.1) - rubocop (~> 0.54.0) + gitlab-styles (2.6.2) + rubocop (~> 0.68.1) rubocop-gitlab-security (~> 0.1.0) + rubocop-performance (~> 1.1.0) rubocop-rspec (~> 1.19) gitlab_omniauth-ldap (2.1.1) net-ldap (~> 0.16) @@ -311,8 +320,8 @@ GEM mime-types (~> 3.0) representable (~> 3.0) retriable (>= 2.0, < 4.0) - google-protobuf (3.6.1) - googleapis-common-protos-types (1.0.3) + google-protobuf (3.7.1) + googleapis-common-protos-types (1.0.4) google-protobuf (~> 3.0) googleauth (0.6.6) faraday (~> 0.12) @@ -333,8 +342,8 @@ GEM grape-entity (0.7.1) activesupport (>= 4.0) multi_json (>= 1.3.2) - grape-path-helpers (1.0.6) - activesupport (>= 4, < 5.1) + grape-path-helpers (1.1.0) + activesupport grape (~> 1.0) rake (~> 12) grape_logging (1.7.0) @@ -343,13 +352,13 @@ GEM railties sprockets-rails graphql (1.8.1) - grpc (1.15.0) + grpc (1.19.0) google-protobuf (~> 3.1) googleapis-common-protos-types (~> 1.0.0) haml (5.0.4) temple (>= 0.8.0) tilt - haml_lint (0.28.0) + haml_lint (0.30.0) haml (>= 4.0, < 5.1) rainbow rake (>= 10, < 13) @@ -399,6 +408,7 @@ GEM jaeger-client (0.10.0) opentracing (~> 0.3) thrift + jaro_winkler (1.5.2) jira-ruby (1.4.1) activesupport multipart-post @@ -436,9 +446,9 @@ GEM rest-client (~> 2.0) launchy (2.4.3) addressable (~> 2.3) - letter_opener (1.4.1) + letter_opener (1.7.0) launchy (~> 2.2) - letter_opener_web (1.3.0) + letter_opener_web (1.3.4) actionmailer (>= 3.2) letter_opener (~> 1.0) railties (>= 3.2) @@ -488,7 +498,7 @@ GEM net-ssh (5.0.1) netrc (0.11.0) nio4r (2.3.1) - nokogiri (1.10.1) + nokogiri (1.10.3) mini_portile2 (~> 2.4.0) nokogumbo (1.5.0) nokogiri @@ -543,6 +553,9 @@ GEM omniauth (~> 1.9) omniauth-oauth2-generic (0.2.2) omniauth-oauth2 (~> 1.0) + omniauth-salesforce (1.0.5) + omniauth (~> 1.0) + omniauth-oauth2 (~> 1.0) omniauth-saml (1.10.0) omniauth (~> 1.3, >= 1.3.2) ruby-saml (~> 1.7) @@ -551,17 +564,33 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack + omniauth-ultraauth (0.0.2) + omniauth_openid_connect (~> 0.3.0) omniauth_crowd (2.2.3) activesupport nokogiri (>= 1.4.4) omniauth (~> 1.0) - opentracing (0.4.3) + omniauth_openid_connect (0.3.0) + addressable (~> 2.5) + omniauth (~> 1.3) + openid_connect (~> 1.1) + openid_connect (1.1.6) + activemodel + attr_required (>= 1.0.0) + json-jwt (>= 1.5.0) + rack-oauth2 (>= 1.6.1) + swd (>= 1.0.0) + tzinfo + validate_email + validate_url + webfinger (>= 1.0.1) + opentracing (0.5.0) optimist (3.0.0) org-ruby (0.9.12) rubypants (~> 0.2) orm_adapter (0.5.0) os (1.0.0) - parallel (1.12.1) + parallel (1.17.0) parser (2.5.3.0) ast (~> 2.4.0) parslet (1.8.2) @@ -591,7 +620,6 @@ GEM pg (1.1.4) po_to_json (1.0.1) json (>= 1.6.0) - powerpack (0.1.1) premailer (1.10.4) addressable css_parser (>= 1.4.10) @@ -636,26 +664,24 @@ GEM rack rack-proxy (0.6.0) rack - rack-test (0.6.3) - rack (>= 1.0) - rails (5.0.7.2) - actioncable (= 5.0.7.2) - actionmailer (= 5.0.7.2) - actionpack (= 5.0.7.2) - actionview (= 5.0.7.2) - activejob (= 5.0.7.2) - activemodel (= 5.0.7.2) - activerecord (= 5.0.7.2) - activesupport (= 5.0.7.2) + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails (5.1.7) + actioncable (= 5.1.7) + actionmailer (= 5.1.7) + actionpack (= 5.1.7) + actionview (= 5.1.7) + activejob (= 5.1.7) + activemodel (= 5.1.7) + activerecord (= 5.1.7) + activesupport (= 5.1.7) bundler (>= 1.3.0) - railties (= 5.0.7.2) + railties (= 5.1.7) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.2) actionpack (~> 5.x, >= 5.0.1) actionview (~> 5.x, >= 5.0.1) activesupport (~> 5.x) - rails-deprecated_sanitizer (1.0.3) - activesupport (>= 4.2.0.alpha) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) @@ -664,9 +690,9 @@ GEM rails-i18n (5.1.1) i18n (>= 0.7, < 2) railties (>= 5.0, < 6) - railties (5.0.7.2) - actionpack (= 5.0.7.2) - activesupport (= 5.0.7.2) + railties (5.1.7) + actionpack (= 5.1.7) + activesupport (= 5.1.7) method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) @@ -706,7 +732,7 @@ GEM redis-store (>= 1.2, < 2) redis-store (1.6.0) redis (>= 2.2, < 5) - regexp_parser (1.3.0) + regexp_parser (1.4.0) regexp_property_values (0.3.4) representable (3.0.4) declarative (< 0.1.0) @@ -754,8 +780,8 @@ GEM rspec-expectations (~> 3.7.0) rspec-mocks (~> 3.7.0) rspec-support (~> 3.7.0) - rspec-retry (0.4.5) - rspec-core + rspec-retry (0.6.1) + rspec-core (> 3.3) rspec-set (0.1.3) rspec-support (3.7.1) rspec_junit_formatter (0.4.1) @@ -765,15 +791,17 @@ GEM pg rails sqlite3 - rubocop (0.54.0) + rubocop (0.68.1) + jaro_winkler (~> 1.5.1) parallel (~> 1.10) - parser (>= 2.5) - powerpack (~> 0.1) + parser (>= 2.5, != 2.5.1.1) rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) - unicode-display_width (~> 1.0, >= 1.0.1) + unicode-display_width (>= 1.4.0, < 1.6) rubocop-gitlab-security (0.1.1) rubocop (>= 0.51) + rubocop-performance (1.1.0) + rubocop (>= 0.67.0) rubocop-rspec (1.22.2) rubocop (>= 0.52.1) ruby-enum (0.7.2) @@ -781,7 +809,7 @@ GEM ruby-fogbugz (0.2.1) crack (~> 0.4) ruby-prof (0.17.0) - ruby-progressbar (1.9.0) + ruby-progressbar (1.10.0) ruby-saml (1.7.2) nokogiri (>= 1.5.10) ruby_parser (3.11.0) @@ -800,12 +828,15 @@ GEM sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sass-rails (5.0.6) - railties (>= 4.0.0, < 6) - sass (~> 3.1) - sprockets (>= 2.8, < 4.0) - sprockets-rails (>= 2.0, < 4.0) - tilt (>= 1.1, < 3) + sassc (2.0.1) + ffi (~> 1.9) + rake + sassc-rails (2.1.0) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt sawyer (0.8.1) addressable (>= 2.3.5, < 2.6) faraday (~> 0.8, < 1.0) @@ -815,9 +846,9 @@ GEM seed-fu (2.3.7) activerecord (>= 3.1) activesupport (>= 3.1) - selenium-webdriver (3.12.0) + selenium-webdriver (3.141.0) childprocess (~> 0.5) - rubyzip (~> 1.2) + rubyzip (~> 1.2, >= 1.2.2) sentry-raven (2.9.0) faraday (>= 0.7.6, < 1.0) settingslogic (2.0.9) @@ -826,7 +857,7 @@ GEM rack shoulda-matchers (3.1.2) activesupport (>= 4.0.0) - sidekiq (5.2.5) + sidekiq (5.2.7) connection_pool (~> 2.2, >= 2.2.2) rack (>= 1.5.0) rack-protection (>= 1.5.0) @@ -867,6 +898,10 @@ GEM state_machines-activerecord (0.5.1) activerecord (>= 4.1, < 6.0) state_machines-activemodel (>= 0.5.0) + swd (1.1.2) + activesupport (>= 3) + attr_required (>= 0.0.5) + httpclient (>= 2.4) sys-filesystem (1.1.6) ffi sysexits (1.2.0) @@ -900,7 +935,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.5) - unicode-display_width (1.3.2) + unicode-display_width (1.5.0) unicorn (5.4.1) kgio (~> 2.6) raindrops (~> 0.7) @@ -916,6 +951,12 @@ GEM equalizer (~> 0.0.9) parser (>= 2.3.1.2, < 2.6) procto (~> 0.0.2) + validate_email (0.1.6) + activemodel (>= 3.0) + mail (>= 2.2.5) + validate_url (1.0.8) + activemodel (>= 3.0.0) + public_suffix validates_hostname (1.0.6) activerecord (>= 3.0) activesupport (>= 3.0) @@ -928,6 +969,9 @@ GEM vmstat (2.3.0) warden (1.2.7) rack (>= 1.0) + webfinger (1.1.0) + activesupport + httpclient (>= 2.4) webmock (3.5.1) addressable (>= 2.3.6) crack (>= 0.3.2) @@ -943,8 +987,8 @@ GEM rinku with_env (1.1.0) xml-simple (1.1.5) - xpath (2.1.0) - nokogiri (~> 1.3) + xpath (3.2.0) + nokogiri (~> 1.8) PLATFORMS ruby @@ -956,6 +1000,7 @@ DEPENDENCIES acts-as-taggable-on (~> 6.0) addressable (~> 2.5.2) akismet (~> 2.0) + apollo_upload_server (~> 2.0.0.beta3) asana (~> 0.8.1) asciidoctor (~> 1.5.8) asciidoctor-plantuml (= 0.0.8) @@ -963,7 +1008,7 @@ DEPENDENCIES awesome_print babosa (~> 1.0.2) base32 (~> 0.3.0) - batch-loader (~> 1.2.2) + batch-loader (~> 1.4.0) bcrypt_pbkdf (~> 1.0) benchmark-ips (~> 2.3.0) better_errors (~> 2.5.0) @@ -974,8 +1019,8 @@ DEPENDENCIES browser (~> 2.5) bullet (~> 5.5.0) bundler-audit (~> 0.5.0) - capybara (~> 2.16.1) - capybara-screenshot (~> 1.0.18) + capybara (~> 2.18.0) + capybara-screenshot (~> 1.0.22) carrierwave (~> 1.3) charlock_holmes (~> 0.7.5) chronic (~> 0.10.2) @@ -1020,25 +1065,26 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 1.22.1) + gitaly-proto (~> 1.27.2) github-markup (~> 1.7.0) gitlab-default_value_for (~> 3.1.1) + gitlab-labkit (~> 0.2.0) gitlab-markup (~> 1.7.0) gitlab-sidekiq-fetcher (~> 0.4.0) - gitlab-styles (~> 2.4) + gitlab-styles (~> 2.6) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) google-api-client (~> 0.23) - google-protobuf (~> 3.6) + google-protobuf (~> 3.7.1) gpgme (~> 2.0.18) grape (~> 1.1.0) grape-entity (~> 0.7.1) - grape-path-helpers (~> 1.0) + grape-path-helpers (~> 1.1) grape_logging (~> 1.7) graphiql-rails (~> 1.4.10) graphql (~> 1.8.0) - grpc (~> 1.15.0) - haml_lint (~> 0.28.0) + grpc (~> 1.19.0) + haml_lint (~> 0.30.0) hamlit (~> 2.8.8) hangouts-chat (~> 0.0.5) hashie-forbidden_attributes @@ -1049,7 +1095,6 @@ DEPENDENCIES httparty (~> 0.16.4) icalendar influxdb (~> 0.2) - jaeger-client (~> 0.10.0) jira-ruby (~> 1.4) js_regex (~> 3.1) json-schema (~> 2.8.0) @@ -1057,7 +1102,7 @@ DEPENDENCIES kaminari (~> 1.0) knapsack (~> 1.17) kubeclient (~> 4.2.2) - letter_opener_web (~> 1.3.0) + letter_opener_web (~> 1.3.4) license_finder (~> 5.4) licensee (~> 8.9) lograge (~> 0.5) @@ -1071,7 +1116,7 @@ DEPENDENCIES nakayoshi_fork (~> 0.0.4) net-ldap net-ssh (~> 5.0) - nokogiri (~> 1.10.1) + nokogiri (~> 1.10.3) oauth2 (~> 1.4) octokit (~> 4.9) omniauth (~> 1.8) @@ -1085,11 +1130,13 @@ DEPENDENCIES omniauth-google-oauth2 (~> 0.6.0) omniauth-kerberos (~> 0.3.0) omniauth-oauth2-generic (~> 0.2.2) + omniauth-salesforce (~> 1.0.5) omniauth-saml (~> 1.10) omniauth-shibboleth (~> 1.3.0) omniauth-twitter (~> 1.4) + omniauth-ultraauth (~> 0.0.2) omniauth_crowd (~> 2.2.0) - opentracing (~> 0.4.3) + omniauth_openid_connect (~> 0.3.0) org-ruby (~> 0.9.12) peek (~> 1.0.1) peek-gc (~> 0.0.2) @@ -1109,9 +1156,8 @@ DEPENDENCIES rack-cors (~> 1.0.0) rack-oauth2 (~> 1.9.3) rack-proxy (~> 0.6.0) - rails (= 5.0.7.2) + rails (= 5.1.7) rails-controller-testing - rails-deprecated_sanitizer (~> 1.0.3) rails-i18n (~> 5.1) rainbow (~> 3.0) raindrops (~> 0.18) @@ -1129,11 +1175,12 @@ DEPENDENCIES rqrcode-rails3 (~> 0.1.7) rspec-parameterized rspec-rails (~> 3.7.0) - rspec-retry (~> 0.4.5) + rspec-retry (~> 0.6.1) rspec-set (~> 0.1.3) rspec_junit_formatter rspec_profiling (~> 0.0.5) - rubocop (~> 0.54.0) + rubocop (~> 0.68.1) + rubocop-performance (~> 1.1.0) rubocop-rspec (~> 1.22.1) ruby-fogbugz (~> 0.2.1) ruby-prof (~> 0.17.0) @@ -1142,16 +1189,15 @@ DEPENDENCIES rubyzip (~> 1.2.2) rugged (~> 0.28) sanitize (~> 4.6) - sass (~> 3.5) - sass-rails (~> 5.0.6) + sassc-rails (~> 2.1.0) scss_lint (~> 0.56.0) seed-fu (~> 2.3.7) - selenium-webdriver (~> 3.12) + selenium-webdriver (~> 3.141) sentry-raven (~> 2.7) settingslogic (~> 2.0.9) sham_rack (~> 1.3.6) shoulda-matchers (~> 3.1.2) - sidekiq (~> 5.2.1) + sidekiq (~> 5.2.7) sidekiq-cron (~> 1.0) simple_po_parser (~> 1.1.2) simplecov (~> 0.14.0) diff --git a/VERSION b/VERSION index 31265f292c..ae5e173a54 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -11.10.8 +11.11.7 diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 8754c25388..e583a8affd 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -1,6 +1,7 @@ import $ from 'jquery'; import _ from 'underscore'; import axios from './lib/utils/axios_utils'; +import { joinPaths } from './lib/utils/url_utility'; const Api = { groupsPath: '/api/:version/groups.json', @@ -339,11 +340,7 @@ const Api = { }, buildUrl(url) { - let urlRoot = ''; - if (gon.relative_url_root != null) { - urlRoot = gon.relative_url_root; - } - return urlRoot + url.replace(':version', gon.api_version); + return joinPaths(gon.relative_url_root || '', url.replace(':version', gon.api_version)); }, }; diff --git a/app/assets/javascripts/batch_comments/mixins/resolved_status.js b/app/assets/javascripts/batch_comments/mixins/resolved_status.js new file mode 100644 index 0000000000..20c31d9f8a --- /dev/null +++ b/app/assets/javascripts/batch_comments/mixins/resolved_status.js @@ -0,0 +1,13 @@ +export default { + computed: { + resolveButtonTitle() { + let title = 'Mark as resolved'; + + if (this.resolvedBy) { + title = `Resolved by ${this.resolvedBy.name}`; + } + + return title; + }, + }, +}; diff --git a/app/assets/javascripts/behaviors/copy_to_clipboard.js b/app/assets/javascripts/behaviors/copy_to_clipboard.js index 9a33a060c7..c3541e6256 100644 --- a/app/assets/javascripts/behaviors/copy_to_clipboard.js +++ b/app/assets/javascripts/behaviors/copy_to_clipboard.js @@ -1,5 +1,6 @@ import $ from 'jquery'; import Clipboard from 'clipboard'; +import { sprintf, __ } from '~/locale'; function showTooltip(target, title) { const $target = $(target); @@ -16,7 +17,7 @@ function showTooltip(target, title) { } function genericSuccess(e) { - showTooltip(e.trigger, 'Copied'); + showTooltip(e.trigger, __('Copied')); // Clear the selection and blur the trigger so it loses its border e.clearSelection(); $(e.trigger).blur(); @@ -33,7 +34,7 @@ function genericError(e) { } else { key = 'Ctrl'; } - showTooltip(e.trigger, `Press ${key}-C to copy`); + showTooltip(e.trigger, sprintf(__(`Press %{key}-C to copy`), { key })); } export default function initCopyToClipboard() { diff --git a/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js b/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js index 55c68139de..b720015092 100644 --- a/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js +++ b/app/assets/javascripts/behaviors/markdown/gfm_auto_complete.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import { parseBoolean } from '~/lib/utils/common_utils'; -import GfmAutoComplete from '~/gfm_auto_complete'; +import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete'; export default function initGFMInput() { $('.js-gfm-input:not(.js-vue-textarea)').each((i, el) => { diff --git a/app/assets/javascripts/behaviors/markdown/nodes/table_of_contents.js b/app/assets/javascripts/behaviors/markdown/nodes/table_of_contents.js index 20c7fa8a9a..9a2e2c0321 100644 --- a/app/assets/javascripts/behaviors/markdown/nodes/table_of_contents.js +++ b/app/assets/javascripts/behaviors/markdown/nodes/table_of_contents.js @@ -1,6 +1,7 @@ /* eslint-disable class-methods-use-this */ import { Node } from 'tiptap'; +import { __ } from '~/locale'; // Transforms generated HTML back to GFM for Banzai::Filter::TableOfContentsFilter export default class TableOfContents extends Node { @@ -22,7 +23,7 @@ export default class TableOfContents extends Node { priority: 51, }, ], - toDOM: () => ['p', { class: 'table-of-contents' }, 'Table of Contents'], + toDOM: () => ['p', { class: 'table-of-contents' }, __('Table of Contents')], }; } diff --git a/app/assets/javascripts/behaviors/preview_markdown.js b/app/assets/javascripts/behaviors/preview_markdown.js index 7adccbb062..35874140bf 100644 --- a/app/assets/javascripts/behaviors/preview_markdown.js +++ b/app/assets/javascripts/behaviors/preview_markdown.js @@ -22,7 +22,7 @@ function MarkdownPreview() {} // Minimum number of users referenced before triggering a warning MarkdownPreview.prototype.referenceThreshold = 10; -MarkdownPreview.prototype.emptyMessage = 'Nothing to preview.'; +MarkdownPreview.prototype.emptyMessage = __('Nothing to preview.'); MarkdownPreview.prototype.ajaxCache = {}; @@ -40,7 +40,7 @@ MarkdownPreview.prototype.showPreview = function($form) { preview.text(this.emptyMessage); this.hideReferencedUsers($form); } else { - preview.addClass('md-preview-loading').text('Loading...'); + preview.addClass('md-preview-loading').text(__('Loading...')); this.fetchMarkdownPreview( mdText, url, diff --git a/app/assets/javascripts/behaviors/quick_submit.js b/app/assets/javascripts/behaviors/quick_submit.js index c1ea67f929..530ab0bd4d 100644 --- a/app/assets/javascripts/behaviors/quick_submit.js +++ b/app/assets/javascripts/behaviors/quick_submit.js @@ -1,6 +1,7 @@ import $ from 'jquery'; import '../commons/bootstrap'; import { isInIssuePage } from '../lib/utils/common_utils'; +import { __ } from '~/locale'; // Quick Submit behavior // @@ -65,7 +66,9 @@ $(document).on( } const $this = $(this); - const title = isMac() ? 'You can also press ⌘-Enter' : 'You can also press Ctrl-Enter'; + const title = isMac() + ? __('You can also press ⌘-Enter') + : __('You can also press Ctrl-Enter'); $this.tooltip({ container: 'body', diff --git a/app/assets/javascripts/blob/balsamiq_viewer.js b/app/assets/javascripts/blob/balsamiq_viewer.js index b88e69a07b..2e537d8c00 100644 --- a/app/assets/javascripts/blob/balsamiq_viewer.js +++ b/app/assets/javascripts/blob/balsamiq_viewer.js @@ -1,8 +1,9 @@ import Flash from '../flash'; import BalsamiqViewer from './balsamiq/balsamiq_viewer'; +import { __ } from '~/locale'; function onError() { - const flash = new Flash('Balsamiq file could not be loaded.'); + const flash = new Flash(__('Balsamiq file could not be loaded.')); return flash; } diff --git a/app/assets/javascripts/blob/blob_file_dropzone.js b/app/assets/javascripts/blob/blob_file_dropzone.js index cd3251ad1c..9010cd0c3c 100644 --- a/app/assets/javascripts/blob/blob_file_dropzone.js +++ b/app/assets/javascripts/blob/blob_file_dropzone.js @@ -5,6 +5,7 @@ import Dropzone from 'dropzone'; import { visitUrl } from '../lib/utils/url_utility'; import { HIDDEN_CLASS } from '../lib/utils/constants'; import csrf from '../lib/utils/csrf'; +import { sprintf, __ } from '~/locale'; Dropzone.autoDiscover = false; @@ -73,7 +74,7 @@ export default class BlobFileDropzone { .html(errorMessage) .text(); $('.dropzone-alerts') - .html(`Error uploading file: "${stripped}"`) + .html(sprintf(__('Error uploading file: %{stripped}'), { stripped })) .show(); this.removeFile(file); }, @@ -84,7 +85,7 @@ export default class BlobFileDropzone { e.stopPropagation(); if (dropzone[0].dropzone.getQueuedFiles().length === 0) { // eslint-disable-next-line no-alert - alert('Please select a file'); + alert(__('Please select a file')); return false; } toggleLoading(submitButton, submitButtonLoadingIcon, true); diff --git a/app/assets/javascripts/blob/sketch/index.js b/app/assets/javascripts/blob/sketch/index.js index 57c1baa988..dbff03dc73 100644 --- a/app/assets/javascripts/blob/sketch/index.js +++ b/app/assets/javascripts/blob/sketch/index.js @@ -1,5 +1,6 @@ import JSZip from 'jszip'; import JSZipUtils from 'jszip-utils'; +import { __ } from '~/locale'; export default class SketchLoader { constructor(container) { @@ -56,10 +57,10 @@ export default class SketchLoader { const errorMsg = document.createElement('p'); errorMsg.className = 'prepend-top-default append-bottom-default text-center'; - errorMsg.textContent = ` + errorMsg.textContent = __(` Cannot show preview. For previews on sketch files, they must have the file format introduced by Sketch version 43 and above. - `; + `); this.container.appendChild(errorMsg); this.removeLoadingIcon(); diff --git a/app/assets/javascripts/blob/template_selectors/dockerfile_selector.js b/app/assets/javascripts/blob/template_selectors/dockerfile_selector.js index 4718b64261..659d57e6a6 100644 --- a/app/assets/javascripts/blob/template_selectors/dockerfile_selector.js +++ b/app/assets/javascripts/blob/template_selectors/dockerfile_selector.js @@ -1,11 +1,12 @@ import FileTemplateSelector from '../file_template_selector'; +import { __ } from '~/locale'; export default class DockerfileSelector extends FileTemplateSelector { constructor({ mediator }) { super(mediator); this.config = { key: 'dockerfile', - name: 'Dockerfile', + name: __('Dockerfile'), pattern: /(Dockerfile)/, type: 'dockerfiles', dropdown: '.js-dockerfile-selector', diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js index d0359fc5fe..d246a1f606 100644 --- a/app/assets/javascripts/blob/viewer/index.js +++ b/app/assets/javascripts/blob/viewer/index.js @@ -2,6 +2,7 @@ import $ from 'jquery'; import Flash from '../../flash'; import { handleLocationHash } from '../../lib/utils/common_utils'; import axios from '../../lib/utils/axios_utils'; +import { __ } from '~/locale'; export default class BlobViewer { constructor() { @@ -26,7 +27,7 @@ export default class BlobViewer { promise .then(module => module.default(viewer)) .catch(error => { - Flash('Error loading file viewer.'); + Flash(__('Error loading file viewer.')); throw error; }); @@ -106,16 +107,19 @@ export default class BlobViewer { if (!this.copySourceBtn) return; if (this.simpleViewer.getAttribute('data-loaded')) { - this.copySourceBtn.setAttribute('title', 'Copy source to clipboard'); + this.copySourceBtn.setAttribute('title', __('Copy source to clipboard')); this.copySourceBtn.classList.remove('disabled'); } else if (this.activeViewer === this.simpleViewer) { this.copySourceBtn.setAttribute( 'title', - 'Wait for the source to load to copy it to the clipboard', + __('Wait for the source to load to copy it to the clipboard'), ); this.copySourceBtn.classList.add('disabled'); } else { - this.copySourceBtn.setAttribute('title', 'Switch to the source to copy it to the clipboard'); + this.copySourceBtn.setAttribute( + 'title', + __('Switch to the source to copy it to the clipboard'), + ); this.copySourceBtn.classList.add('disabled'); } @@ -158,7 +162,7 @@ export default class BlobViewer { this.toggleCopyButtonState(); }) - .catch(() => new Flash('Error loading viewer')); + .catch(() => new Flash(__('Error loading viewer'))); } static loadViewer(viewerParam) { diff --git a/app/assets/javascripts/boards/boards_util.js b/app/assets/javascripts/boards/boards_util.js new file mode 100644 index 0000000000..3178bda93b --- /dev/null +++ b/app/assets/javascripts/boards/boards_util.js @@ -0,0 +1,7 @@ +export function getMilestone() { + return null; +} + +export default { + getMilestone, +}; diff --git a/app/assets/javascripts/boards/components/board_blank_state.vue b/app/assets/javascripts/boards/components/board_blank_state.vue index 667eea17d4..47a46502bf 100644 --- a/app/assets/javascripts/boards/components/board_blank_state.vue +++ b/app/assets/javascripts/boards/components/board_blank_state.vue @@ -60,11 +60,15 @@ export default {