diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-24 18:09:19 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-24 18:09:19 +0300 |
commit | 036de5f31f136a7482f9e2b1d1e98a9c4b45ea80 (patch) | |
tree | 6e32fae7b756a9bd712158856b47e7dd3bf7827d | |
parent | a46b489e175708cc64fc5198f458f927558f11ba (diff) |
Add latest changes from gitlab-org/gitlab@master
33 files changed, 1255 insertions, 447 deletions
diff --git a/.rubocop.yml b/.rubocop.yml index 9413360e89e..89a9cbc3744 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -640,3 +640,7 @@ Cop/UserAdmin: - 'lib/gitlab/auth/current_user_mode.rb' - 'spec/**/*.rb' - 'ee/spec/**/*.rb' + +Performance/OpenStruct: + Exclude: + - 'ee/spec/**/*.rb' diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 4678c7d92af..affe95ffb9f 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -568,6 +568,993 @@ Rails/TimeZone: - 'spec/tooling/rspec_flaky/listener_spec.rb' - 'spec/tooling/rspec_flaky/report_spec.rb' +# WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/325836 +RSpec/EmptyLineAfterFinalLetItBe: + Exclude: + - ee/spec/controllers/admin/geo/projects_controller_spec.rb + - ee/spec/controllers/admin/projects_controller_spec.rb + - ee/spec/controllers/ee/projects/jobs_controller_spec.rb + - ee/spec/controllers/groups/analytics/cycle_analytics/stages_controller_spec.rb + - ee/spec/controllers/groups/analytics/cycle_analytics/summary_controller_spec.rb + - ee/spec/controllers/groups/analytics/cycle_analytics/value_streams_controller_spec.rb + - ee/spec/controllers/groups/analytics/tasks_by_type_controller_spec.rb + - ee/spec/controllers/groups/autocomplete_sources_controller_spec.rb + - ee/spec/controllers/groups/insights_controller_spec.rb + - ee/spec/controllers/groups/todos_controller_spec.rb + - ee/spec/controllers/projects/branches_controller_spec.rb + - ee/spec/controllers/projects/incident_management/oncall_schedules_controller_spec.rb + - ee/spec/controllers/projects/insights_controller_spec.rb + - ee/spec/controllers/projects/licenses_controller_spec.rb + - ee/spec/controllers/projects/merge_requests_controller_spec.rb + - ee/spec/controllers/projects/mirrors_controller_spec.rb + - ee/spec/controllers/projects/threat_monitoring_controller_spec.rb + - ee/spec/controllers/registrations/groups_controller_spec.rb + - ee/spec/controllers/registrations/projects_controller_spec.rb + - ee/spec/controllers/subscriptions_controller_spec.rb + - ee/spec/features/admin/admin_show_new_user_signups_cap_alert_spec.rb + - ee/spec/features/analytics/group_analytics_spec.rb + - ee/spec/features/boards/group_boards/multiple_boards_spec.rb + - ee/spec/features/ci_shared_runner_warnings_spec.rb + - ee/spec/features/dashboards/todos_spec.rb + - ee/spec/features/groups/groups_security_credentials_spec.rb + - ee/spec/features/groups/hooks/user_edits_hooks_spec.rb + - ee/spec/features/groups/iterations/user_edits_iteration_spec.rb + - ee/spec/features/groups/usage_quotas_spec.rb + - ee/spec/features/integrations/jira/jira_issues_list_spec.rb + - ee/spec/features/issues/bulk_assignment_epic_spec.rb + - ee/spec/features/issues/user_uses_quick_actions_spec.rb + - ee/spec/features/markdown/metrics_spec.rb + - ee/spec/features/projects/issues/user_creates_issue_spec.rb + - ee/spec/features/projects/iterations/iterations_list_spec.rb + - ee/spec/features/projects/licenses/maintainer_views_policies_spec.rb + - ee/spec/features/registrations/group_invites_during_signup_flow_spec.rb + - ee/spec/features/subscriptions_spec.rb + - ee/spec/finders/analytics/cycle_analytics/stage_finder_spec.rb + - ee/spec/finders/billed_users_finder_spec.rb + - ee/spec/finders/custom_project_templates_finder_spec.rb + - ee/spec/finders/deployments_finder_spec.rb + - ee/spec/finders/ee/projects_finder_spec.rb + - ee/spec/finders/epics_finder_spec.rb + - ee/spec/finders/geo_node_finder_spec.rb + - ee/spec/finders/incident_management/oncall_schedules_finder_spec.rb + - ee/spec/finders/issues_finder_spec.rb + - ee/spec/finders/iterations_finder_spec.rb + - ee/spec/finders/merge_trains_finder_spec.rb + - ee/spec/finders/projects/integrations/jira/issues_finder_spec.rb + - ee/spec/finders/scim_finder_spec.rb + - ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb + - ee/spec/graphql/ee/mutations/concerns/mutations/resolves_issuable_spec.rb + - ee/spec/graphql/mutations/boards/update_epic_user_preferences_spec.rb + - ee/spec/graphql/mutations/clusters/agent_tokens/create_spec.rb + - ee/spec/graphql/mutations/compliance_management/frameworks/create_spec.rb + - ee/spec/graphql/mutations/compliance_management/frameworks/destroy_spec.rb + - ee/spec/graphql/mutations/compliance_management/frameworks/update_spec.rb + - ee/spec/graphql/mutations/dast_scanner_profiles/delete_spec.rb + - ee/spec/graphql/mutations/epics/add_issue_spec.rb + - ee/spec/graphql/mutations/gitlab_subscriptions/activate_spec.rb + - ee/spec/graphql/mutations/incident_management/oncall_rotation/create_spec.rb + - ee/spec/graphql/mutations/incident_management/oncall_rotation/destroy_spec.rb + - ee/spec/graphql/mutations/incident_management/oncall_schedule/create_spec.rb + - ee/spec/graphql/mutations/incident_management/oncall_schedule/destroy_spec.rb + - ee/spec/graphql/mutations/incident_management/oncall_schedule/update_spec.rb + - ee/spec/graphql/mutations/issues/set_epic_spec.rb + - ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb + - ee/spec/graphql/mutations/vulnerabilities/create_external_issue_link_spec.rb + - ee/spec/graphql/resolvers/ci/code_coverage_activities_resolver_spec.rb + - ee/spec/graphql/resolvers/epics_resolver_spec.rb + - ee/spec/graphql/resolvers/geo/geo_node_resolver_spec.rb + - ee/spec/graphql/resolvers/incident_management/oncall_shifts_resolver_spec.rb + - ee/spec/graphql/types/issue_type_spec.rb + - ee/spec/helpers/ee/graph_helper_spec.rb + - ee/spec/helpers/ee/issues_helper_spec.rb + - ee/spec/helpers/ee/projects/incidents_helper_spec.rb + - ee/spec/helpers/ee/projects/security/api_fuzzing_configuration_helper_spec.rb + - ee/spec/helpers/ee/projects/security/configuration_helper_spec.rb + - ee/spec/helpers/ee/projects/security/sast_configuration_helper_spec.rb + - ee/spec/helpers/ee/trial_helper_spec.rb + - ee/spec/helpers/ee/user_callouts_helper_spec.rb + - ee/spec/helpers/vulnerabilities_helper_spec.rb + - ee/spec/lib/ee/api/entities/user_with_admin_spec.rb + - ee/spec/lib/ee/api/entities/vulnerability_spec.rb + - ee/spec/lib/ee/event_filter_spec.rb + - ee/spec/lib/ee/gitlab/alert_management/payload/generic_spec.rb + - ee/spec/lib/ee/gitlab/alert_management/payload_spec.rb + - ee/spec/lib/ee/gitlab/ci/pipeline/chain/validate/external_spec.rb + - ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb + - ee/spec/lib/ee/gitlab/ci/pipeline/quota/job_activity_spec.rb + - ee/spec/lib/ee/gitlab/ci/pipeline/quota/size_spec.rb + - ee/spec/lib/ee/gitlab/git_access_design_spec.rb + - ee/spec/lib/ee/gitlab/git_access_snippet_spec.rb + - ee/spec/lib/ee/gitlab/hook_data/issue_builder_spec.rb + - ee/spec/lib/ee/gitlab/import_export/project/tree_restorer_spec.rb + - ee/spec/lib/ee/gitlab/snippet_search_results_spec.rb + - ee/spec/lib/elastic/latest/git_class_proxy_spec.rb + - ee/spec/lib/gitlab/alert_management/payload/cilium_spec.rb + - ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_time_summary_spec.rb + - ee/spec/lib/gitlab/checks/diff_check_spec.rb + - ee/spec/lib/gitlab/code_owners/loader_spec.rb + - ee/spec/lib/gitlab/elastic/document_reference_spec.rb + - ee/spec/lib/gitlab/elastic/group_search_results_spec.rb + - ee/spec/lib/gitlab/elastic/project_search_results_spec.rb + - ee/spec/lib/gitlab/geo/geo_tasks_spec.rb + - ee/spec/lib/gitlab/geo/log_cursor/daemon_spec.rb + - ee/spec/lib/gitlab/geo/log_cursor/events/container_repository_updated_event_spec.rb + - ee/spec/lib/gitlab/geo/log_cursor/events/design_repository_updated_event_spec.rb + - ee/spec/lib/gitlab/geo/log_cursor/events/repositories_changed_event_spec.rb + - ee/spec/lib/gitlab/geo/log_cursor/events/repository_created_event_spec.rb + - ee/spec/lib/gitlab/geo/log_cursor/events/repository_updated_event_spec.rb + - ee/spec/lib/gitlab/geo/replication/base_transfer_spec.rb + - ee/spec/lib/gitlab/geo/replication/blob_downloader_spec.rb + - ee/spec/lib/gitlab/geo/replication/file_transfer_spec.rb + - ee/spec/lib/gitlab/git_access_spec.rb + - ee/spec/lib/gitlab/git_access_wiki_spec.rb + - ee/spec/lib/gitlab/graphql/aggregations/vulnerability_statistics/lazy_aggregate_spec.rb + - ee/spec/lib/gitlab/insights/project_insights_config_spec.rb + - ee/spec/lib/gitlab/sitemaps/url_extractor_spec.rb + - ee/spec/mailers/credentials_inventory_mailer_spec.rb + - ee/spec/mailers/ee/emails/profile_spec.rb + - ee/spec/mailers/notify_spec.rb + - ee/spec/migrations/backfill_version_author_and_created_at_spec.rb + - ee/spec/models/analytics/cycle_analytics/group_level_spec.rb + - ee/spec/models/burndown_spec.rb + - ee/spec/models/ci/build_spec.rb + - ee/spec/models/ci/daily_build_group_report_result_spec.rb + - ee/spec/models/ci/minutes/notification_spec.rb + - ee/spec/models/concerns/epic_tree_sorting_spec.rb + - ee/spec/models/dora/daily_metrics_spec.rb + - ee/spec/models/ee/ci/build_dependencies_spec.rb + - ee/spec/models/ee/iteration_spec.rb + - ee/spec/models/ee/namespace/root_storage_size_spec.rb + - ee/spec/models/ee/namespace_spec.rb + - ee/spec/models/ee/personal_access_token_spec.rb + - ee/spec/models/epic_spec.rb + - ee/spec/models/geo/lfs_object_registry_spec.rb + - ee/spec/models/gitlab_subscription_spec.rb + - ee/spec/models/group_member_spec.rb + - ee/spec/models/group_spec.rb + - ee/spec/models/instance_security_dashboard_spec.rb + - ee/spec/models/issue_spec.rb + - ee/spec/models/label_note_spec.rb + - ee/spec/models/merge_request_spec.rb + - ee/spec/models/project_spec.rb + - ee/spec/models/requirements_management/test_report_spec.rb + - ee/spec/models/vulnerabilities/finding_spec.rb + - ee/spec/policies/clusters/agent_token_policy_spec.rb + - ee/spec/policies/compliance_management/framework_policy_spec.rb + - ee/spec/policies/group_policy_spec.rb + - ee/spec/policies/merge_request_policy_spec.rb + - ee/spec/policies/project_policy_spec.rb + - ee/spec/policies/vulnerabilities/issue_link_policy_spec.rb + - ee/spec/presenters/approval_rule_presenter_spec.rb + - ee/spec/presenters/ci/pipeline_presenter_spec.rb + - ee/spec/requests/api/analytics/code_review_analytics_spec.rb + - ee/spec/requests/api/audit_events_spec.rb + - ee/spec/requests/api/commits_spec.rb + - ee/spec/requests/api/dora/metrics_spec.rb + - ee/spec/requests/api/epics_spec.rb + - ee/spec/requests/api/external_approval_rules_spec.rb + - ee/spec/requests/api/geo_spec.rb + - ee/spec/requests/api/graphql/boards/epic_board_list_epics_query_spec.rb + - ee/spec/requests/api/graphql/current_user/todos_query_spec.rb + - ee/spec/requests/api/graphql/group/epic/epic_issues_spec.rb + - ee/spec/requests/api/graphql/group/epics_spec.rb + - ee/spec/requests/api/graphql/mutations/analytics/devops_adoption/segments/create_spec.rb + - ee/spec/requests/api/graphql/mutations/analytics/devops_adoption/segments/delete_spec.rb + - ee/spec/requests/api/graphql/mutations/boards/create_spec.rb + - ee/spec/requests/api/graphql/mutations/boards/epic_boards/create_spec.rb + - ee/spec/requests/api/graphql/mutations/boards/epic_boards/update_spec.rb + - ee/spec/requests/api/graphql/mutations/boards/issues/issue_move_list_spec.rb + - ee/spec/requests/api/graphql/mutations/boards/lists/update_limit_metrics_spec.rb + - ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/destroy_spec.rb + - ee/spec/requests/api/graphql/mutations/compliance_management/frameworks/update_spec.rb + - ee/spec/requests/api/graphql/mutations/dast_scanner_profiles/update_spec.rb + - ee/spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb + - ee/spec/requests/api/graphql/mutations/epics/add_issue_spec.rb + - ee/spec/requests/api/graphql/mutations/epics/set_subscription_spec.rb + - ee/spec/requests/api/graphql/mutations/epics/update_spec.rb + - ee/spec/requests/api/graphql/mutations/gitlab_subscriptions/activate_spec.rb + - ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/create_spec.rb + - ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/create_spec.rb + - ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/destroy_spec.rb + - ee/spec/requests/api/graphql/mutations/incident_management/oncall_schedule/update_spec.rb + - ee/spec/requests/api/graphql/mutations/issues/promote_to_epic_spec.rb + - ee/spec/requests/api/graphql/mutations/issues/update_spec.rb + - ee/spec/requests/api/graphql/mutations/iterations/create_spec.rb + - ee/spec/requests/api/graphql/mutations/notes/create/note_spec.rb + - ee/spec/requests/api/graphql/mutations/quality_management/test_cases/create_spec.rb + - ee/spec/requests/api/graphql/namespace/compliance_frameworks_spec.rb + - ee/spec/requests/api/graphql/project/alert_management/payload_fields_spec.rb + - ee/spec/requests/api/graphql/project/requirements_management/requirements_spec.rb + - ee/spec/requests/api/graphql/projects/compliance_frameworks_spec.rb + - ee/spec/requests/api/groups_spec.rb + - ee/spec/requests/api/internal/base_spec.rb + - ee/spec/requests/api/issues_spec.rb + - ee/spec/requests/api/ldap_spec.rb + - ee/spec/requests/api/merge_request_approval_rules_spec.rb + - ee/spec/requests/api/merge_request_approvals_spec.rb + - ee/spec/requests/api/merge_requests_spec.rb + - ee/spec/requests/api/merge_trains_spec.rb + - ee/spec/requests/api/project_approval_rules_spec.rb + - ee/spec/requests/api/project_approval_settings_spec.rb + - ee/spec/requests/api/projects_spec.rb + - ee/spec/requests/api/todos_spec.rb + - ee/spec/requests/api/vulnerabilities_spec.rb + - ee/spec/requests/api/vulnerability_issue_links_spec.rb + - ee/spec/requests/api/wikis_spec.rb + - ee/spec/requests/callout_spec.rb + - ee/spec/requests/git_http_geo_spec.rb + - ee/spec/requests/projects/issues_controller_spec.rb + - ee/spec/requests/projects/on_demand_scans_controller_spec.rb + - ee/spec/requests/projects/security/scanned_resources_controller_spec.rb + - ee/spec/requests/repositories/git_http_controller_spec.rb + - ee/spec/serializers/clusters/environment_serializer_spec.rb + - ee/spec/serializers/dependency_entity_spec.rb + - ee/spec/serializers/dependency_list_serializer_spec.rb + - ee/spec/serializers/ee/issue_board_entity_spec.rb + - ee/spec/serializers/ee/issue_entity_spec.rb + - ee/spec/serializers/ee/issue_sidebar_extras_entity_spec.rb + - ee/spec/serializers/member_entity_spec.rb + - ee/spec/serializers/merge_request_poll_widget_entity_spec.rb + - ee/spec/serializers/merge_request_widget_entity_spec.rb + - ee/spec/serializers/status_page/incident_comment_entity_spec.rb + - ee/spec/serializers/vulnerabilities/feedback_entity_spec.rb + - ee/spec/services/alert_management/extract_alert_payload_fields_service_spec.rb + - ee/spec/services/alert_management/process_prometheus_alert_service_spec.rb + - ee/spec/services/analytics/cycle_analytics/stages/delete_service_spec.rb + - ee/spec/services/analytics/cycle_analytics/stages/list_service_spec.rb + - ee/spec/services/analytics/cycle_analytics/stages/update_service_spec.rb + - ee/spec/services/analytics/cycle_analytics/value_streams/create_service_spec.rb + - ee/spec/services/analytics/deployments/frequency/aggregate_service_spec.rb + - ee/spec/services/analytics/devops_adoption/segments/bulk_delete_service_spec.rb + - ee/spec/services/analytics/devops_adoption/segments/create_service_spec.rb + - ee/spec/services/analytics/devops_adoption/segments/delete_service_spec.rb + - ee/spec/services/analytics/devops_adoption/segments/find_or_create_service_spec.rb + - ee/spec/services/approval_rules/create_service_spec.rb + - ee/spec/services/audit_event_service_spec.rb + - ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb + - ee/spec/services/auto_merge/merge_train_service_spec.rb + - ee/spec/services/award_emojis/add_service_spec.rb + - ee/spec/services/award_emojis/destroy_service_spec.rb + - ee/spec/services/billable_members/destroy_service_spec.rb + - ee/spec/services/boards/epic_boards/destroy_service_spec.rb + - ee/spec/services/ci/audit_variable_change_service_spec.rb + - ee/spec/services/ci/compare_license_scanning_reports_service_spec.rb + - ee/spec/services/ci/compare_metrics_reports_service_spec.rb + - ee/spec/services/ci/compare_security_reports_service_spec.rb + - ee/spec/services/ci/create_pipeline_service/needs_spec.rb + - ee/spec/services/ci/create_pipeline_service_spec.rb + - ee/spec/services/ci/external_pull_requests/process_github_event_service_spec.rb + - ee/spec/services/ci/pipeline_bridge_status_service_spec.rb + - ee/spec/services/ci/register_job_service_spec.rb + - ee/spec/services/clusters/agent_tokens/create_service_spec.rb + - ee/spec/services/compliance_management/frameworks/create_service_spec.rb + - ee/spec/services/compliance_management/frameworks/update_service_spec.rb + - ee/spec/services/dast_scanner_profiles/destroy_service_spec.rb + - ee/spec/services/dast_scanner_profiles/update_service_spec.rb + - ee/spec/services/dast_site_profiles/destroy_service_spec.rb + - ee/spec/services/dora/aggregate_metrics_service_spec.rb + - ee/spec/services/ee/audit_events/protected_branch_audit_event_service_spec.rb + - ee/spec/services/ee/ci/change_variable_service_spec.rb + - ee/spec/services/ee/ci/change_variables_service_spec.rb + - ee/spec/services/ee/design_management/delete_designs_service_spec.rb + - ee/spec/services/ee/git/branch_push_service_spec.rb + - ee/spec/services/ee/issuable/bulk_update_service_spec.rb + - ee/spec/services/ee/issues/create_service_spec.rb + - ee/spec/services/ee/issues/update_service_spec.rb + - ee/spec/services/ee/labels/create_service_spec.rb + - ee/spec/services/ee/merge_requests/base_service_spec.rb + - ee/spec/services/ee/notes/create_service_spec.rb + - ee/spec/services/ee/notification_service_spec.rb + - ee/spec/services/ee/resource_events/merge_into_notes_service_spec.rb + - ee/spec/services/ee/todos/destroy/entity_leave_service_spec.rb + - ee/spec/services/epics/create_service_spec.rb + - ee/spec/services/external_approval_rules/create_service_spec.rb + - ee/spec/services/external_approval_rules/destroy_service_spec.rb + - ee/spec/services/external_approval_rules/update_service_spec.rb + - ee/spec/services/geo/blob_download_service_spec.rb + - ee/spec/services/geo/design_repository_sync_service_spec.rb + - ee/spec/services/geo/event_service_spec.rb + - ee/spec/services/geo/file_registry_removal_service_spec.rb + - ee/spec/services/geo/project_housekeeping_service_spec.rb + - ee/spec/services/gitlab_subscriptions/activate_service_spec.rb + - ee/spec/services/gitlab_subscriptions/apply_trial_service_spec.rb + - ee/spec/services/groups/autocomplete_service_spec.rb + - ee/spec/services/ide/schemas_config_service_spec.rb + - ee/spec/services/incident_management/incidents/upload_metric_service_spec.rb + - ee/spec/services/incident_management/oncall_rotations/edit_service_spec.rb + - ee/spec/services/issues/build_service_spec.rb + - ee/spec/services/issues/export_csv_service_spec.rb + - ee/spec/services/merge_request_approval_settings/update_service_spec.rb + - ee/spec/services/merge_trains/check_status_service_spec.rb + - ee/spec/services/merge_trains/create_pipeline_service_spec.rb + - ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb + - ee/spec/services/merge_trains/refresh_service_spec.rb + - ee/spec/services/personal_access_tokens/create_service_audit_log_spec.rb + - ee/spec/services/personal_access_tokens/groups/update_lifetime_service_spec.rb + - ee/spec/services/projects/after_rename_service_spec.rb + - ee/spec/services/projects/alerting/notify_service_spec.rb + - ee/spec/services/projects/destroy_service_spec.rb + - ee/spec/services/projects/gitlab_projects_import_service_spec.rb + - ee/spec/services/projects/import_export/export_service_spec.rb + - ee/spec/services/projects/transfer_service_spec.rb + - ee/spec/services/push_rules/create_or_update_service_spec.rb + - ee/spec/services/quality_management/test_cases/create_service_spec.rb + - ee/spec/services/quick_actions/interpret_service_spec.rb + - ee/spec/services/requirements_management/create_requirement_service_spec.rb + - ee/spec/services/requirements_management/export_csv_service_spec.rb + - ee/spec/services/requirements_management/update_requirement_service_spec.rb + - ee/spec/services/resource_access_tokens/create_service_spec.rb + - ee/spec/services/resource_access_tokens/revoke_service_spec.rb + - ee/spec/services/search/global_service_spec.rb + - ee/spec/services/search/group_service_spec.rb + - ee/spec/services/search/project_service_spec.rb + - ee/spec/services/security/auto_fix_label_service_spec.rb + - ee/spec/services/security/store_grouped_scans_service_spec.rb + - ee/spec/services/security/store_report_service_spec.rb + - ee/spec/services/status_page/publish_attachments_service_spec.rb + - ee/spec/services/status_page/publish_details_service_spec.rb + - ee/spec/services/status_page/publish_list_service_spec.rb + - ee/spec/services/status_page/publish_service_spec.rb + - ee/spec/services/status_page/trigger_publish_service_spec.rb + - ee/spec/services/status_page/unpublish_details_service_spec.rb + - ee/spec/services/timebox_report_service_spec.rb + - ee/spec/services/todo_service_spec.rb + - ee/spec/services/vulnerabilities/confirm_service_spec.rb + - ee/spec/services/vulnerabilities/create_service_spec.rb + - ee/spec/services/vulnerabilities/dismiss_service_spec.rb + - ee/spec/services/vulnerabilities/resolve_service_spec.rb + - ee/spec/services/vulnerabilities/revert_to_detected_service_spec.rb + - ee/spec/services/vulnerabilities/update_service_spec.rb + - ee/spec/services/vulnerability_exports/create_service_spec.rb + - ee/spec/services/vulnerability_external_issue_links/destroy_service_spec.rb + - ee/spec/services/vulnerability_issue_links/delete_service_spec.rb + - ee/spec/support/shared_examples/graphql/geo/geo_registries_resolver_shared_examples.rb + - ee/spec/support/shared_examples/graphql/mutations/set_multiple_assignees_shared_examples.rb + - ee/spec/support/shared_examples/quick_actions/issue/status_page_quick_actions_shared_examples.rb + - ee/spec/support/shared_examples/services/search_notes_shared_examples.rb + - ee/spec/tasks/gitlab/license_rake_spec.rb + - ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb + - ee/spec/views/groups/_compliance_frameworks.html.haml_spec.rb + - ee/spec/views/groups/edit.html.haml_spec.rb + - ee/spec/views/projects/pipelines/_tabs_content.html.haml_spec.rb + - ee/spec/views/shared/billings/_eoa_bronze_plan_banner.html.haml_spec.rb + - ee/spec/views/shared/billings/_trial_status.html.haml_spec.rb + - ee/spec/workers/adjourned_projects_deletion_cron_worker_spec.rb + - ee/spec/workers/deployments/auto_rollback_worker_spec.rb + - ee/spec/workers/dora/daily_metrics/refresh_worker_spec.rb + - ee/spec/workers/ee/issuable_export_csv_worker_spec.rb + - ee/spec/workers/elastic_namespace_indexer_worker_spec.rb + - ee/spec/workers/geo/batch/project_registry_scheduler_worker_spec.rb + - ee/spec/workers/geo/prune_event_log_worker_spec.rb + - ee/spec/workers/geo/repository_verification/primary/single_worker_spec.rb + - ee/spec/workers/incident_management/oncall_rotations/persist_shifts_job_spec.rb + - ee/spec/workers/post_receive_spec.rb + - ee/spec/workers/requirements_management/import_requirements_csv_worker_spec.rb + - ee/spec/workers/security/auto_fix_worker_spec.rb + - ee/spec/workers/set_user_status_based_on_user_cap_setting_worker_spec.rb + - spec/controllers/confirmations_controller_spec.rb + - spec/controllers/dashboard/projects_controller_spec.rb + - spec/controllers/groups/dependency_proxy_auth_controller_spec.rb + - spec/controllers/groups/dependency_proxy_for_containers_controller_spec.rb + - spec/controllers/groups/registry/repositories_controller_spec.rb + - spec/controllers/groups/variables_controller_spec.rb + - spec/controllers/invites_controller_spec.rb + - spec/controllers/profiles/emails_controller_spec.rb + - spec/controllers/projects/alerting/notifications_controller_spec.rb + - spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb + - spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb + - spec/controllers/projects/environments_controller_spec.rb + - spec/controllers/projects/feature_flags_controller_spec.rb + - spec/controllers/projects/incidents_controller_spec.rb + - spec/controllers/projects/issues_controller_spec.rb + - spec/controllers/projects/jobs_controller_spec.rb + - spec/controllers/projects/merge_requests_controller_spec.rb + - spec/controllers/projects/performance_monitoring/dashboards_controller_spec.rb + - spec/controllers/projects/pipelines_controller_spec.rb + - spec/controllers/projects/pipelines_settings_controller_spec.rb + - spec/controllers/projects/raw_controller_spec.rb + - spec/controllers/projects/releases/evidences_controller_spec.rb + - spec/controllers/projects/releases_controller_spec.rb + - spec/controllers/projects/settings/ci_cd_controller_spec.rb + - spec/controllers/projects/settings/operations_controller_spec.rb + - spec/controllers/projects/static_site_editor_controller_spec.rb + - spec/controllers/projects/todos_controller_spec.rb + - spec/controllers/projects_controller_spec.rb + - spec/controllers/users/terms_controller_spec.rb + - spec/features/boards/multiple_boards_spec.rb + - spec/features/boards/sidebar_assignee_spec.rb + - spec/features/boards/sidebar_due_date_spec.rb + - spec/features/boards/sidebar_labels_spec.rb + - spec/features/boards/sidebar_milestones_spec.rb + - spec/features/boards/sidebar_spec.rb + - spec/features/boards/sidebar_subscription_spec.rb + - spec/features/boards/sidebar_time_tracking_spec.rb + - spec/features/cycle_analytics_spec.rb + - spec/features/dashboard/datetime_on_tooltips_spec.rb + - spec/features/dashboard/merge_requests_spec.rb + - spec/features/error_tracking/user_filters_errors_by_status_spec.rb + - spec/features/error_tracking/user_searches_sentry_errors_spec.rb + - spec/features/error_tracking/user_sees_error_index_spec.rb + - spec/features/file_uploads/group_import_spec.rb + - spec/features/file_uploads/project_import_spec.rb + - spec/features/file_uploads/user_avatar_spec.rb + - spec/features/groups/members/master_adds_member_with_expiration_date_spec.rb + - spec/features/groups_spec.rb + - spec/features/issues/user_sees_breadcrumb_links_spec.rb + - spec/features/markdown/metrics_spec.rb + - spec/features/merge_request/user_creates_merge_request_spec.rb + - spec/features/merge_request/user_posts_notes_spec.rb + - spec/features/operations_sidebar_link_spec.rb + - spec/features/participants_autocomplete_spec.rb + - spec/features/projects/badges/pipeline_badge_spec.rb + - spec/features/projects/branches/user_deletes_branch_spec.rb + - spec/features/projects/commit/cherry_pick_spec.rb + - spec/features/projects/commit/user_comments_on_commit_spec.rb + - spec/features/projects/commit/user_reverts_commit_spec.rb + - spec/features/projects/commit/user_views_user_status_on_commit_spec.rb + - spec/features/projects/confluence/user_views_confluence_page_spec.rb + - spec/features/projects/files/gitlab_ci_syntax_yml_dropdown_spec.rb + - spec/features/projects/issues/design_management/user_views_design_images_spec.rb + - spec/features/projects/labels/user_sees_links_to_issuables_spec.rb + - spec/features/projects/labels/user_views_labels_spec.rb + - spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb + - spec/features/projects/merge_request_button_spec.rb + - spec/features/projects/pages/user_adds_domain_spec.rb + - spec/features/projects/pipelines/pipeline_spec.rb + - spec/features/projects/product_analytics/events_spec.rb + - spec/features/projects/settings/project_settings_spec.rb + - spec/features/projects/settings/repository_settings_spec.rb + - spec/features/projects/snippets/user_views_snippets_spec.rb + - spec/features/projects/user_sees_user_popover_spec.rb + - spec/features/snippets/embedded_snippet_spec.rb + - spec/finders/alert_management/alerts_finder_spec.rb + - spec/finders/ci/commit_statuses_finder_spec.rb + - spec/finders/container_repositories_finder_spec.rb + - spec/finders/deployments_finder_spec.rb + - spec/finders/design_management/designs_finder_spec.rb + - spec/finders/design_management/versions_finder_spec.rb + - spec/finders/events_finder_spec.rb + - spec/finders/group_descendants_finder_spec.rb + - spec/finders/groups_finder_spec.rb + - spec/finders/metrics/dashboards/annotations_finder_spec.rb + - spec/finders/metrics/users_starred_dashboards_finder_spec.rb + - spec/finders/packages/conan/package_file_finder_spec.rb + - spec/finders/packages/go/module_finder_spec.rb + - spec/finders/packages/group_packages_finder_spec.rb + - spec/finders/packages/nuget/package_finder_spec.rb + - spec/finders/packages/package_file_finder_spec.rb + - spec/finders/packages/package_finder_spec.rb + - spec/finders/template_finder_spec.rb + - spec/finders/todos_finder_spec.rb + - spec/finders/user_recent_events_finder_spec.rb + - spec/frontend/fixtures/pipelines.rb + - spec/graphql/features/authorization_spec.rb + - spec/graphql/gitlab_schema_spec.rb + - spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb + - spec/graphql/mutations/alert_management/create_alert_issue_spec.rb + - spec/graphql/mutations/alert_management/http_integration/create_spec.rb + - spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb + - spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb + - spec/graphql/mutations/alert_management/http_integration/update_spec.rb + - spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb + - spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb + - spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb + - spec/graphql/mutations/alert_management/update_alert_status_spec.rb + - spec/graphql/mutations/boards/lists/update_spec.rb + - spec/graphql/mutations/custom_emoji/create_spec.rb + - spec/graphql/mutations/discussions/toggle_resolve_spec.rb + - spec/graphql/mutations/environments/canary_ingress/update_spec.rb + - spec/graphql/mutations/issues/set_severity_spec.rb + - spec/graphql/mutations/labels/create_spec.rb + - spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb + - spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb + - spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb + - spec/graphql/resolvers/branch_commit_resolver_spec.rb + - spec/graphql/resolvers/design_management/designs_resolver_spec.rb + - spec/graphql/resolvers/design_management/version/designs_at_version_resolver_spec.rb + - spec/graphql/resolvers/group_milestones_resolver_spec.rb + - spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb + - spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb + - spec/graphql/resolvers/project_pipeline_resolver_spec.rb + - spec/graphql/resolvers/project_pipelines_resolver_spec.rb + - spec/graphql/resolvers/timelog_resolver_spec.rb + - spec/graphql/types/admin/analytics/usage_trends/measurement_type_spec.rb + - spec/graphql/types/global_id_type_spec.rb + - spec/graphql/types/snippet_type_spec.rb + - spec/helpers/blob_helper_spec.rb + - spec/helpers/broadcast_messages_helper_spec.rb + - spec/helpers/ci/runners_helper_spec.rb + - spec/helpers/invite_members_helper_spec.rb + - spec/helpers/jira_connect_helper_spec.rb + - spec/helpers/labels_helper_spec.rb + - spec/helpers/markup_helper_spec.rb + - spec/helpers/notes_helper_spec.rb + - spec/helpers/projects/alert_management_helper_spec.rb + - spec/helpers/projects/issues/service_desk_helper_spec.rb + - spec/helpers/projects/project_members_helper_spec.rb + - spec/helpers/projects/terraform_helper_spec.rb + - spec/helpers/projects_helper_spec.rb + - spec/helpers/search_helper_spec.rb + - spec/lib/api/entities/design_management/design_spec.rb + - spec/lib/api/entities/merge_request_changes_spec.rb + - spec/lib/api/entities/release_spec.rb + - spec/lib/api/helpers/caching_spec.rb + - spec/lib/api/helpers/packages_manager_clients_helpers_spec.rb + - spec/lib/banzai/filter/external_issue_reference_filter_spec.rb + - spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb + - spec/lib/banzai/filter/upload_link_filter_spec.rb + - spec/lib/banzai/pipeline/gfm_pipeline_spec.rb + - spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb + - spec/lib/extracts_path_spec.rb + - spec/lib/extracts_ref_spec.rb + - spec/lib/gitlab/alert_management/alert_status_counts_spec.rb + - spec/lib/gitlab/alert_management/payload/base_spec.rb + - spec/lib/gitlab/alert_management/payload/generic_spec.rb + - spec/lib/gitlab/alert_management/payload/managed_prometheus_spec.rb + - spec/lib/gitlab/alert_management/payload/prometheus_spec.rb + - spec/lib/gitlab/alert_management/payload_spec.rb + - spec/lib/gitlab/analytics/cycle_analytics/base_query_builder_spec.rb + - spec/lib/gitlab/analytics/cycle_analytics/median_spec.rb + - spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb + - spec/lib/gitlab/auth/otp/strategies/devise_spec.rb + - spec/lib/gitlab/auth/otp/strategies/forti_authenticator_spec.rb + - spec/lib/gitlab/auth/otp/strategies/forti_token_cloud_spec.rb + - spec/lib/gitlab/auth_spec.rb + - spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb + - spec/lib/gitlab/checks/project_created_spec.rb + - spec/lib/gitlab/checks/project_moved_spec.rb + - spec/lib/gitlab/ci/build/policy/changes_spec.rb + - spec/lib/gitlab/ci/config/external/file/local_spec.rb + - spec/lib/gitlab/ci/config/external/file/project_spec.rb + - spec/lib/gitlab/ci/config/external/file/template_spec.rb + - spec/lib/gitlab/ci/config/external/mapper_spec.rb + - spec/lib/gitlab/ci/config/external/processor_spec.rb + - spec/lib/gitlab/ci/pipeline/chain/build_spec.rb + - spec/lib/gitlab/ci/pipeline/chain/cancel_pending_pipelines_spec.rb + - spec/lib/gitlab/ci/pipeline/chain/template_usage_spec.rb + - spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb + - spec/lib/gitlab/ci/pipeline/chain/validate/repository_spec.rb + - spec/lib/gitlab/ci/pipeline/seed/build_spec.rb + - spec/lib/gitlab/ci/pipeline/seed/deployment_spec.rb + - spec/lib/gitlab/ci/pipeline/seed/environment_spec.rb + - spec/lib/gitlab/ci/pipeline/seed/processable/resource_group_spec.rb + - spec/lib/gitlab/ci/reports/test_failure_history_spec.rb + - spec/lib/gitlab/ci/syntax_templates_spec.rb + - spec/lib/gitlab/ci/trace/chunked_io_spec.rb + - spec/lib/gitlab/ci/trace_spec.rb + - spec/lib/gitlab/closing_issue_extractor_spec.rb + - spec/lib/gitlab/composer/cache_spec.rb + - spec/lib/gitlab/data_builder/wiki_page_spec.rb + - spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb + - spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb + - spec/lib/gitlab/deploy_key_access_spec.rb + - spec/lib/gitlab/email/handler/service_desk_handler_spec.rb + - spec/lib/gitlab/git/lfs_changes_spec.rb + - spec/lib/gitlab/git/merge_base_spec.rb + - spec/lib/gitlab/git/push_spec.rb + - spec/lib/gitlab/git_access_design_spec.rb + - spec/lib/gitlab/git_access_project_spec.rb + - spec/lib/gitlab/git_access_wiki_spec.rb + - spec/lib/gitlab/gitaly_client/operation_service_spec.rb + - spec/lib/gitlab/github_import/importer/pull_request_merged_by_importer_spec.rb + - spec/lib/gitlab/github_import/importer/pull_request_review_importer_spec.rb + - spec/lib/gitlab/github_import/milestone_finder_spec.rb + - spec/lib/gitlab/gl_repository/repo_type_spec.rb + - spec/lib/gitlab/graphql/batch_key_spec.rb + - spec/lib/gitlab/graphql/docs/renderer_spec.rb + - spec/lib/gitlab/graphql/loaders/batch_lfs_oid_loader_spec.rb + - spec/lib/gitlab/graphql/markdown_field_spec.rb + - spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb + - spec/lib/gitlab/graphql/pagination/keyset/last_items_spec.rb + - spec/lib/gitlab/group_search_results_spec.rb + - spec/lib/gitlab/hook_data/issue_builder_spec.rb + - spec/lib/gitlab/hook_data/merge_request_builder_spec.rb + - spec/lib/gitlab/hook_data/release_builder_spec.rb + - spec/lib/gitlab/import_export/design_repo_saver_spec.rb + - spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb + - spec/lib/gitlab/import_export/project/export_task_spec.rb + - spec/lib/gitlab/import_export/project/tree_saver_spec.rb + - spec/lib/gitlab/import_export/repo_saver_spec.rb + - spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb + - spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb + - spec/lib/gitlab/import_export/wiki_repo_saver_spec.rb + - spec/lib/gitlab/jira_import/base_importer_spec.rb + - spec/lib/gitlab/jira_import/handle_labels_service_spec.rb + - spec/lib/gitlab/jira_import_spec.rb + - spec/lib/gitlab/json_cache_spec.rb + - spec/lib/gitlab/language_detection_spec.rb + - spec/lib/gitlab/phabricator_import/cache/map_spec.rb + - spec/lib/gitlab/phabricator_import/issues/task_importer_spec.rb + - spec/lib/gitlab/project_search_results_spec.rb + - spec/lib/gitlab/prometheus/query_variables_spec.rb + - spec/lib/gitlab/reactive_cache_set_cache_spec.rb + - spec/lib/gitlab/reference_extractor_spec.rb + - spec/lib/gitlab/repository_cache_spec.rb + - spec/lib/gitlab/repository_hash_cache_spec.rb + - spec/lib/gitlab/repository_set_cache_spec.rb + - spec/lib/gitlab/repository_size_checker_spec.rb + - spec/lib/gitlab/repository_size_error_message_spec.rb + - spec/lib/gitlab/search_results_spec.rb + - spec/lib/gitlab/shell_spec.rb + - spec/lib/gitlab/slash_commands/presenters/issue_comment_spec.rb + - spec/lib/gitlab/slash_commands/presenters/issue_move_spec.rb + - spec/lib/gitlab/snippet_search_results_spec.rb + - spec/lib/gitlab/sourcegraph_spec.rb + - spec/lib/gitlab/template/finders/repo_template_finders_spec.rb + - spec/lib/gitlab/tree_summary_spec.rb + - spec/lib/gitlab/url_builder_spec.rb + - spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb + - spec/lib/gitlab/utils/usage_data_spec.rb + - spec/lib/gitlab/workhorse_spec.rb + - spec/mailers/emails/projects_spec.rb + - spec/mailers/emails/releases_spec.rb + - spec/mailers/emails/service_desk_spec.rb + - spec/models/abuse_report_spec.rb + - spec/models/alert_management/alert_spec.rb + - spec/models/audit_event_spec.rb + - spec/models/blob_viewer/gitlab_ci_yml_spec.rb + - spec/models/blob_viewer/metrics_dashboard_yml_spec.rb + - spec/models/chat_name_spec.rb + - spec/models/chat_team_spec.rb + - spec/models/ci/artifact_blob_spec.rb + - spec/models/ci/build_spec.rb + - spec/models/ci/build_trace_chunk_spec.rb + - spec/models/ci/daily_build_group_report_result_spec.rb + - spec/models/ci/pipeline_spec.rb + - spec/models/ci/runner_spec.rb + - spec/models/ci/stage_spec.rb + - spec/models/clusters/kubernetes_namespace_spec.rb + - spec/models/commit_spec.rb + - spec/models/concerns/batch_destroy_dependent_associations_spec.rb + - spec/models/concerns/featurable_spec.rb + - spec/models/deploy_token_spec.rb + - spec/models/deployment_spec.rb + - spec/models/diff_viewer/server_side_spec.rb + - spec/models/environment_spec.rb + - spec/models/event_collection_spec.rb + - spec/models/label_note_spec.rb + - spec/models/lfs_file_lock_spec.rb + - spec/models/member_spec.rb + - spec/models/merge_request_diff_spec.rb + - spec/models/namespace/root_storage_statistics_spec.rb + - spec/models/note_spec.rb + - spec/models/notification_setting_spec.rb + - spec/models/operations/feature_flag_spec.rb + - spec/models/packages/dependency_spec.rb + - spec/models/packages/go/module_version_spec.rb + - spec/models/packages/package_spec.rb + - spec/models/packages/tag_spec.rb + - spec/models/plan_limits_spec.rb + - spec/models/project_services/chat_message/alert_message_spec.rb + - spec/models/project_services/jira_service_spec.rb + - spec/models/project_services/prometheus_service_spec.rb + - spec/models/project_services/slack_service_spec.rb + - spec/models/project_spec.rb + - spec/models/prometheus_alert_spec.rb + - spec/models/protected_branch/push_access_level_spec.rb + - spec/models/release_spec.rb + - spec/models/releases/evidence_spec.rb + - spec/models/releases/source_spec.rb + - spec/models/repository_spec.rb + - spec/models/service_spec.rb + - spec/models/snippet_repository_spec.rb + - spec/models/snippet_spec.rb + - spec/models/terraform/state_spec.rb + - spec/models/u2f_registration_spec.rb + - spec/models/user_spec.rb + - spec/models/wiki_page/meta_spec.rb + - spec/models/wiki_page_spec.rb + - spec/policies/application_setting/term_policy_spec.rb + - spec/policies/ci/build_policy_spec.rb + - spec/policies/design_management/design_policy_spec.rb + - spec/policies/group_deploy_keys_group_policy_spec.rb + - spec/policies/group_policy_spec.rb + - spec/policies/project_snippet_policy_spec.rb + - spec/policies/service_policy_spec.rb + - spec/presenters/alert_management/alert_presenter_spec.rb + - spec/presenters/ci/pipeline_presenter_spec.rb + - spec/presenters/label_presenter_spec.rb + - spec/presenters/packages/composer/packages_presenter_spec.rb + - spec/presenters/packages/conan/package_presenter_spec.rb + - spec/presenters/packages/detail/package_presenter_spec.rb + - spec/presenters/packages/npm/package_presenter_spec.rb + - spec/presenters/packages/nuget/search_results_presenter_spec.rb + - spec/presenters/project_presenter_spec.rb + - spec/presenters/prometheus_alert_presenter_spec.rb + - spec/presenters/release_presenter_spec.rb + - spec/presenters/user_presenter_spec.rb + - spec/requests/api/api_spec.rb + - spec/requests/api/award_emoji_spec.rb + - spec/requests/api/branches_spec.rb + - spec/requests/api/ci/pipelines_spec.rb + - spec/requests/api/composer_packages_spec.rb + - spec/requests/api/deploy_tokens_spec.rb + - spec/requests/api/deployments_spec.rb + - spec/requests/api/error_tracking_spec.rb + - spec/requests/api/feature_flags_spec.rb + - spec/requests/api/freeze_periods_spec.rb + - spec/requests/api/generic_packages_spec.rb + - spec/requests/api/graphql/boards/board_lists_query_spec.rb + - spec/requests/api/graphql/ci/pipelines_spec.rb + - spec/requests/api/graphql/current_user_todos_spec.rb + - spec/requests/api/graphql/group/timelogs_spec.rb + - spec/requests/api/graphql/issue_status_counts_spec.rb + - spec/requests/api/graphql/metrics/dashboard_query_spec.rb + - spec/requests/api/graphql/mutations/admin/sidekiq_queues/delete_jobs_spec.rb + - spec/requests/api/graphql/mutations/alert_management/alerts/set_assignees_spec.rb + - spec/requests/api/graphql/mutations/alert_management/alerts/todo/create_spec.rb + - spec/requests/api/graphql/mutations/alert_management/alerts/update_alert_status_spec.rb + - spec/requests/api/graphql/mutations/alert_management/http_integration/create_spec.rb + - spec/requests/api/graphql/mutations/alert_management/prometheus_integration/create_spec.rb + - spec/requests/api/graphql/mutations/award_emojis/add_spec.rb + - spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb + - spec/requests/api/graphql/mutations/boards/create_spec.rb + - spec/requests/api/graphql/mutations/boards/destroy_spec.rb + - spec/requests/api/graphql/mutations/boards/lists/destroy_spec.rb + - spec/requests/api/graphql/mutations/boards/lists/update_spec.rb + - spec/requests/api/graphql/mutations/branches/create_spec.rb + - spec/requests/api/graphql/mutations/ci/ci_cd_settings_update_spec.rb + - spec/requests/api/graphql/mutations/commits/create_spec.rb + - spec/requests/api/graphql/mutations/container_expiration_policy/update_spec.rb + - spec/requests/api/graphql/mutations/discussions/toggle_resolve_spec.rb + - spec/requests/api/graphql/mutations/environments/canary_ingress/update_spec.rb + - spec/requests/api/graphql/mutations/issues/set_locked_spec.rb + - spec/requests/api/graphql/mutations/issues/set_severity_spec.rb + - spec/requests/api/graphql/mutations/issues/update_spec.rb + - spec/requests/api/graphql/mutations/jira_import/import_users_spec.rb + - spec/requests/api/graphql/mutations/jira_import/start_spec.rb + - spec/requests/api/graphql/mutations/labels/create_spec.rb + - spec/requests/api/graphql/mutations/merge_requests/accept_spec.rb + - spec/requests/api/graphql/mutations/merge_requests/create_spec.rb + - spec/requests/api/graphql/mutations/metrics/dashboard/annotations/create_spec.rb + - spec/requests/api/graphql/mutations/namespace/package_settings/update_spec.rb + - spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb + - spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb + - spec/requests/api/graphql/mutations/notes/create/note_spec.rb + - spec/requests/api/graphql/mutations/notes/reposition_image_diff_note_spec.rb + - spec/requests/api/graphql/mutations/notes/update/image_diff_note_spec.rb + - spec/requests/api/graphql/mutations/snippets/mark_as_spam_spec.rb + - spec/requests/api/graphql/mutations/snippets/update_spec.rb + - spec/requests/api/graphql/mutations/user_callouts/create_spec.rb + - spec/requests/api/graphql/namespace/package_settings_spec.rb + - spec/requests/api/graphql/project/alert_management/alert/issue_spec.rb + - spec/requests/api/graphql/project/alert_management/alert_status_counts_spec.rb + - spec/requests/api/graphql/project/error_tracking/sentry_detailed_error_request_spec.rb + - spec/requests/api/graphql/project/error_tracking/sentry_errors_request_spec.rb + - spec/requests/api/graphql/project/issue/designs/designs_spec.rb + - spec/requests/api/graphql/project/project_pipeline_statistics_spec.rb + - spec/requests/api/graphql/project_query_spec.rb + - spec/requests/api/graphql/query_spec.rb + - spec/requests/api/graphql/user/starred_projects_query_spec.rb + - spec/requests/api/graphql/user_query_spec.rb + - spec/requests/api/graphql_spec.rb + - spec/requests/api/group_import_spec.rb + - spec/requests/api/group_milestones_spec.rb + - spec/requests/api/group_packages_spec.rb + - spec/requests/api/groups_spec.rb + - spec/requests/api/helpers_spec.rb + - spec/requests/api/import_bitbucket_server_spec.rb + - spec/requests/api/internal/base_spec.rb + - spec/requests/api/lint_spec.rb + - spec/requests/api/markdown_spec.rb + - spec/requests/api/merge_requests_spec.rb + - spec/requests/api/metrics/dashboard/annotations_spec.rb + - spec/requests/api/metrics/user_starred_dashboards_spec.rb + - spec/requests/api/nuget_project_packages_spec.rb + - spec/requests/api/project_clusters_spec.rb + - spec/requests/api/project_container_repositories_spec.rb + - spec/requests/api/project_milestones_spec.rb + - spec/requests/api/project_packages_spec.rb + - spec/requests/api/pypi_packages_spec.rb + - spec/requests/api/rubygem_packages_spec.rb + - spec/requests/api/unleash_spec.rb + - spec/requests/api/users_spec.rb + - spec/requests/groups/email_campaigns_controller_spec.rb + - spec/requests/import/gitlab_groups_controller_spec.rb + - spec/requests/jwt_controller_spec.rb + - spec/requests/lfs_http_spec.rb + - spec/requests/product_analytics/collector_app_spec.rb + - spec/requests/rack_attack_global_spec.rb + - spec/serializers/admin/user_entity_spec.rb + - spec/serializers/ci/lint/result_serializer_spec.rb + - spec/serializers/ci/pipeline_entity_spec.rb + - spec/serializers/container_repository_entity_spec.rb + - spec/serializers/container_tag_entity_spec.rb + - spec/serializers/deployment_serializer_spec.rb + - spec/serializers/diff_file_entity_spec.rb + - spec/serializers/evidences/evidence_entity_spec.rb + - spec/serializers/fork_namespace_entity_spec.rb + - spec/serializers/group_link/group_group_link_entity_spec.rb + - spec/serializers/group_link/project_group_link_entity_spec.rb + - spec/serializers/issue_board_entity_spec.rb + - spec/serializers/member_entity_spec.rb + - spec/serializers/member_user_entity_spec.rb + - spec/serializers/merge_request_diff_entity_spec.rb + - spec/serializers/merge_request_poll_cached_widget_entity_spec.rb + - spec/serializers/merge_request_user_entity_spec.rb + - spec/serializers/namespace_basic_entity_spec.rb + - spec/serializers/pipeline_details_entity_spec.rb + - spec/serializers/project_import_entity_spec.rb + - spec/serializers/project_serializer_spec.rb + - spec/serializers/review_app_setup_entity_spec.rb + - spec/services/admin/propagate_service_template_spec.rb + - spec/services/alert_management/create_alert_issue_service_spec.rb + - spec/services/audit_event_service_spec.rb + - spec/services/auth/dependency_proxy_authentication_service_spec.rb + - spec/services/auto_merge_service_spec.rb + - spec/services/award_emojis/add_service_spec.rb + - spec/services/award_emojis/destroy_service_spec.rb + - spec/services/award_emojis/toggle_service_spec.rb + - spec/services/boards/destroy_service_spec.rb + - spec/services/boards/issues/move_service_spec.rb + - spec/services/bulk_create_integration_service_spec.rb + - spec/services/ci/change_variable_service_spec.rb + - spec/services/ci/change_variables_service_spec.rb + - spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb + - spec/services/ci/create_pipeline_service/custom_config_content_spec.rb + - spec/services/ci/create_pipeline_service/dry_run_spec.rb + - spec/services/ci/create_pipeline_service/environment_spec.rb + - spec/services/ci/create_pipeline_service/parameter_content_spec.rb + - spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb + - spec/services/ci/create_pipeline_service_spec.rb + - spec/services/ci/create_web_ide_terminal_service_spec.rb + - spec/services/ci/expire_pipeline_cache_service_spec.rb + - spec/services/ci/external_pull_requests/create_pipeline_service_spec.rb + - spec/services/ci/find_exposed_artifacts_service_spec.rb + - spec/services/ci/job_artifacts/create_service_spec.rb + - spec/services/ci/parse_dotenv_artifact_service_spec.rb + - spec/services/ci/pipeline_bridge_status_service_spec.rb + - spec/services/ci/pipeline_trigger_service_spec.rb + - spec/services/ci/prometheus_metrics/observe_histograms_service_spec.rb + - spec/services/ci/register_job_service_spec.rb + - spec/services/ci/resource_groups/assign_resource_from_resource_group_service_spec.rb + - spec/services/ci/retry_build_service_spec.rb + - spec/services/ci/stop_environments_service_spec.rb + - spec/services/clusters/applications/prometheus_health_check_service_spec.rb + - spec/services/container_expiration_policy_service_spec.rb + - spec/services/dependency_proxy/find_or_create_manifest_service_spec.rb + - spec/services/design_management/copy_design_collection/copy_service_spec.rb + - spec/services/design_management/delete_designs_service_spec.rb + - spec/services/design_management/save_designs_service_spec.rb + - spec/services/discussions/resolve_service_spec.rb + - spec/services/discussions/unresolve_service_spec.rb + - spec/services/environments/auto_stop_service_spec.rb + - spec/services/environments/canary_ingress/update_service_spec.rb + - spec/services/environments/reset_auto_stop_service_spec.rb + - spec/services/feature_flags/create_service_spec.rb + - spec/services/feature_flags/destroy_service_spec.rb + - spec/services/feature_flags/disable_service_spec.rb + - spec/services/feature_flags/enable_service_spec.rb + - spec/services/feature_flags/update_service_spec.rb + - spec/services/git/branch_push_service_spec.rb + - spec/services/groups/auto_devops_service_spec.rb + - spec/services/groups/group_links/update_service_spec.rb + - spec/services/groups/transfer_service_spec.rb + - spec/services/groups/update_shared_runners_service_spec.rb + - spec/services/ide/base_config_service_spec.rb + - spec/services/ide/schemas_config_service_spec.rb + - spec/services/ide/terminal_config_service_spec.rb + - spec/services/import/bitbucket_server_service_spec.rb + - spec/services/incident_management/incidents/create_service_spec.rb + - spec/services/incident_management/pager_duty/create_incident_issue_service_spec.rb + - spec/services/incident_management/pager_duty/process_webhook_service_spec.rb + - spec/services/integrations/test/project_service_spec.rb + - spec/services/issuable/bulk_update_service_spec.rb + - spec/services/issues/build_service_spec.rb + - spec/services/issues/clone_service_spec.rb + - spec/services/issues/create_service_spec.rb + - spec/services/issues/export_csv_service_spec.rb + - spec/services/issues/move_service_spec.rb + - spec/services/issues/related_branches_service_spec.rb + - spec/services/jira_connect/sync_service_spec.rb + - spec/services/jira_import/start_import_service_spec.rb + - spec/services/jira_import/users_importer_spec.rb + - spec/services/markdown_content_rewriter_service_spec.rb + - spec/services/members/create_service_spec.rb + - spec/services/members/invite_service_spec.rb + - spec/services/merge_requests/base_service_spec.rb + - spec/services/merge_requests/create_pipeline_service_spec.rb + - spec/services/merge_requests/export_csv_service_spec.rb + - spec/services/merge_requests/merge_orchestration_service_spec.rb + - spec/services/merge_requests/merge_service_spec.rb + - spec/services/merge_requests/merge_to_ref_service_spec.rb + - spec/services/metrics/dashboard/annotations/create_service_spec.rb + - spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb + - spec/services/metrics/users_starred_dashboards/create_service_spec.rb + - spec/services/notes/copy_service_spec.rb + - spec/services/notes/create_service_spec.rb + - spec/services/notes/destroy_service_spec.rb + - spec/services/notes/quick_actions_service_spec.rb + - spec/services/notes/update_service_spec.rb + - spec/services/notification_service_spec.rb + - spec/services/packages/composer/create_package_service_spec.rb + - spec/services/packages/conan/search_service_spec.rb + - spec/services/packages/create_package_file_service_spec.rb + - spec/services/packages/debian/find_or_create_package_service_spec.rb + - spec/services/packages/generic/create_package_file_service_spec.rb + - spec/services/packages/maven/find_or_create_package_service_spec.rb + - spec/services/packages/nuget/search_service_spec.rb + - spec/services/packages/rubygems/dependency_resolver_service_spec.rb + - spec/services/pod_logs/base_service_spec.rb + - spec/services/pod_logs/elasticsearch_service_spec.rb + - spec/services/pod_logs/kubernetes_service_spec.rb + - spec/services/projects/alerting/notify_service_spec.rb + - spec/services/projects/create_service_spec.rb + - spec/services/projects/destroy_rollback_service_spec.rb + - spec/services/projects/destroy_service_spec.rb + - spec/services/projects/gitlab_projects_import_service_spec.rb + - spec/services/projects/group_links/create_service_spec.rb + - spec/services/projects/group_links/destroy_service_spec.rb + - spec/services/projects/group_links/update_service_spec.rb + - spec/services/projects/prometheus/alerts/notify_service_spec.rb + - spec/services/projects/transfer_service_spec.rb + - spec/services/projects/update_pages_service_spec.rb + - spec/services/prometheus/create_default_alerts_service_spec.rb + - spec/services/quick_actions/interpret_service_spec.rb + - spec/services/releases/create_evidence_service_spec.rb + - spec/services/repositories/destroy_rollback_service_spec.rb + - spec/services/repositories/destroy_service_spec.rb + - spec/services/repositories/shell_destroy_service_spec.rb + - spec/services/resource_access_tokens/create_service_spec.rb + - spec/services/resource_access_tokens/revoke_service_spec.rb + - spec/services/resource_events/change_labels_service_spec.rb + - spec/services/resource_events/merge_into_notes_service_spec.rb + - spec/services/security/ci_configuration/sast_create_service_spec.rb + - spec/services/snippets/bulk_destroy_service_spec.rb + - spec/services/snippets/create_service_spec.rb + - spec/services/snippets/update_service_spec.rb + - spec/services/spam/ham_service_spec.rb + - spec/services/spam/spam_action_service_spec.rb + - spec/services/spam/spam_verdict_service_spec.rb + - spec/services/system_note_service_spec.rb + - spec/services/system_notes/issuables_service_spec.rb + - spec/services/test_hooks/project_service_spec.rb + - spec/services/test_hooks/system_service_spec.rb + - spec/services/users/approve_service_spec.rb + - spec/services/users/reject_service_spec.rb + - spec/services/users/validate_otp_service_spec.rb + - spec/services/wiki_pages/event_create_service_spec.rb + - spec/support/shared_examples/graphql/design_fields_shared_examples.rb + - spec/support/shared_examples/graphql/mutations/set_assignees_shared_examples.rb + - spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb + - spec/support/shared_examples/quick_actions/issuable/issuable_quick_actions_shared_examples.rb + - spec/support/shared_examples/services/container_registry_auth_service_shared_examples.rb + - spec/support/shared_examples/services/packages_shared_examples.rb + - spec/tasks/gitlab/db_rake_spec.rb + - spec/tasks/gitlab/packages/composer_rake_spec.rb + - spec/tasks/gitlab/snippets_rake_spec.rb + - spec/uploaders/content_type_whitelist_spec.rb + - spec/uploaders/dependency_proxy/file_uploader_spec.rb + - spec/views/admin/application_settings/_eks.html.haml_spec.rb + - spec/views/admin/application_settings/_package_registry.html.haml_spec.rb + - spec/views/layouts/nav/sidebar/_project_security_link.html.haml_spec.rb + - spec/views/projects/pipelines/new.html.haml_spec.rb + - spec/views/projects/pipelines/show.html.haml_spec.rb + - spec/views/search/_results.html.haml_spec.rb + - spec/views/shared/_label_row.html.haml_spec.rb + - spec/views/shared/milestones/_top.html.haml_spec.rb + - spec/workers/ci/create_cross_project_pipeline_worker_spec.rb + - spec/workers/cluster_update_app_worker_spec.rb + - spec/workers/environments/canary_ingress/update_worker_spec.rb + - spec/workers/expire_job_cache_worker_spec.rb + - spec/workers/gitlab/jira_import/import_issue_worker_spec.rb + - spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb + - spec/workers/gitlab/jira_import/stuck_jira_import_jobs_worker_spec.rb + - spec/workers/import_issues_csv_worker_spec.rb + - spec/workers/incident_management/add_severity_system_note_worker_spec.rb + - spec/workers/incident_management/process_alert_worker_spec.rb + - spec/workers/incident_management/process_prometheus_alert_worker_spec.rb + - spec/workers/jira_connect/sync_project_worker_spec.rb + - spec/workers/namespaces/onboarding_issue_created_worker_spec.rb + - spec/workers/packages/composer/cache_update_worker_spec.rb + - spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb + - spec/workers/projects/git_garbage_collect_worker_spec.rb + - spec/workers/prometheus/create_default_alerts_worker_spec.rb + - spec/workers/propagate_integration_group_worker_spec.rb + - spec/workers/propagate_integration_project_worker_spec.rb + - spec/workers/run_pipeline_schedule_worker_spec.rb + - spec/workers/update_external_pull_requests_worker_spec.rb + RSpec/TimecopFreeze: Exclude: - 'ee/spec/controllers/admin/application_settings_controller_spec.rb' @@ -2573,3 +3560,20 @@ Cop/UserAdmin: - 'lib/gitlab/performance_bar.rb' - 'lib/gitlab/visibility_level.rb' - 'qa/qa/runtime/api/client.rb' + +# WIP https://gitlab.com/gitlab-org/gitlab/-/issues/325744 +Performance/OpenStruct: + Exclude: + - 'Guardfile' + - 'app/finders/snippets_finder.rb' + - 'app/helpers/application_settings_helper.rb' + - 'app/models/cycle_analytics/project_level_stage_adapter.rb' + - 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb' + - 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb' + - 'lib/api/wikis.rb' + - 'lib/gitlab/ci/ansi2html.rb' + - 'lib/gitlab/ci/reports/test_suite_comparer.rb' + - 'lib/gitlab/git/diff_collection.rb' + - 'lib/gitlab/import_export/after_export_strategies/base_after_export_strategy.rb' + - 'lib/gitlab/testing/request_inspector_middleware.rb' + - 'lib/mattermost/session.rb' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index d6982146426..35778f056b4 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -323,10 +323,6 @@ Performance/Detect: Performance/MethodObjectAsBlock: Enabled: false -# Offense count: 42 -Performance/OpenStruct: - Enabled: false - # Offense count: 18 # Cop supports --auto-correct. # Configuration parameters: AutoCorrect. @@ -380,11 +376,6 @@ RSpec/EmptyExampleGroup: - 'ee/spec/services/personal_access_tokens/revoke_invalid_tokens_spec.rb' - 'spec/services/projects/prometheus/alerts/notify_service_spec.rb' -# Offense count: 1162 -# Cop supports --auto-correct. -RSpec/EmptyLineAfterFinalLetItBe: - Enabled: false - # Offense count: 1428 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -440,11 +440,7 @@ end gem 'octokit', '~> 4.15' # https://gitlab.com/gitlab-org/gitlab/issues/207207 -gem 'gitlab-mail_room', '~> 0.0.10', require: false -# Ruby v3.0 promoted net-http and net-imap from stdlib. Adding net-http as a -# dependency avoids "already initialized constant errors" if net-imap is installed. -gem 'net-http', '~> 0.1' -gem 'uri', '= 0.10.0' # Lock this for bundler v2.1.4 +gem 'gitlab-mail_room', '~> 0.0.9', require: 'mail_room' gem 'email_reply_trimmer', '~> 0.1' gem 'html2text' diff --git a/Gemfile.lock b/Gemfile.lock index 5a2787130ef..5d63cb1cb2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -268,7 +268,6 @@ GEM diff-lcs (1.4.4) diff_match_patch (0.1.0) diffy (3.3.0) - digest (3.0.0) discordrb-webhooks (3.4.2) rest-client (>= 2.0.0) docile (1.3.2) @@ -465,8 +464,7 @@ GEM pg_query (~> 1.3) redis (> 3.0.0, < 5.0.0) gitlab-license (1.3.1) - gitlab-mail_room (0.0.10) - net-imap (>= 0.2.1) + gitlab-mail_room (0.0.9) gitlab-markup (1.7.1) gitlab-net-dns (0.9.1) gitlab-pry-byebug (3.9.0) @@ -765,18 +763,10 @@ GEM mustermann (>= 1.0.0) nap (1.1.0) nenv (0.3.0) - net-http (0.1.1) - net-protocol - uri net-http-persistent (4.0.1) connection_pool (~> 2.2) - net-imap (0.2.1) - digest - net-protocol - strscan net-ldap (0.16.3) net-ntp (2.1.3) - net-protocol (0.1.0) net-scp (3.0.0) net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.0.0) @@ -1218,7 +1208,6 @@ GEM state_machines-activerecord (0.8.0) activerecord (>= 5.1) state_machines-activemodel (>= 0.8.0) - strscan (3.0.0) swd (1.1.2) activesupport (>= 3) attr_required (>= 0.0.5) @@ -1289,7 +1278,6 @@ GEM equalizer (~> 0.0.9) parser (>= 2.6.5) procto (~> 0.0.2) - uri (0.10.0) uri_template (0.7.0) valid_email (0.1.3) activemodel @@ -1439,7 +1427,7 @@ DEPENDENCIES gitlab-fog-google (~> 1.13) gitlab-labkit (~> 0.16.2) gitlab-license (~> 1.3) - gitlab-mail_room (~> 0.0.10) + gitlab-mail_room (~> 0.0.9) gitlab-markup (~> 1.7.1) gitlab-net-dns (~> 0.9.1) gitlab-pry-byebug @@ -1501,7 +1489,6 @@ DEPENDENCIES mini_magick (~> 4.10.1) minitest (~> 5.11.0) multi_json (~> 1.14.1) - net-http (~> 0.1) net-ldap (~> 0.16.3) net-ntp net-ssh (~> 6.0) @@ -1610,7 +1597,6 @@ DEPENDENCIES unicorn (~> 5.5) unicorn-worker-killer (~> 0.4.4) unleash (~> 0.1.5) - uri (= 0.10.0) valid_email (~> 0.1) validates_hostname (~> 1.0.11) version_sorter (~> 2.2.4) diff --git a/app/assets/javascripts/vue_shared/components/gl_toggle_vuex.vue b/app/assets/javascripts/vue_shared/components/gl_toggle_vuex.vue deleted file mode 100644 index b649dac029a..00000000000 --- a/app/assets/javascripts/vue_shared/components/gl_toggle_vuex.vue +++ /dev/null @@ -1,49 +0,0 @@ -<script> -import { GlToggle } from '@gitlab/ui'; -import { capitalizeFirstCharacter } from '~/lib/utils/text_utility'; - -export default { - name: 'GlToggleVuex', - components: { - GlToggle, - }, - props: { - stateProperty: { - type: String, - required: true, - }, - storeModule: { - type: String, - required: false, - default: null, - }, - setAction: { - type: String, - required: false, - default() { - return `set${capitalizeFirstCharacter(this.stateProperty)}`; - }, - }, - }, - computed: { - value: { - get() { - const { state } = this.$store; - const { stateProperty, storeModule } = this; - return storeModule ? state[storeModule][stateProperty] : state[stateProperty]; - }, - set(value) { - const { stateProperty, storeModule, setAction } = this; - const action = storeModule ? `${storeModule}/${setAction}` : setAction; - this.$store.dispatch(action, { key: stateProperty, value }); - }, - }, - }, -}; -</script> - -<template> - <gl-toggle v-model="value"> - <slot v-bind="{ value }"></slot> - </gl-toggle> -</template> diff --git a/app/models/deployment.rb b/app/models/deployment.rb index f000e474605..5b3671923cc 100644 --- a/app/models/deployment.rb +++ b/app/models/deployment.rb @@ -243,19 +243,16 @@ class Deployment < ApplicationRecord def previous_deployment @previous_deployment ||= - project.deployments.joins(:environment) - .where(environments: { name: self.environment.name }, ref: self.ref) - .where.not(id: self.id) + self.class.for_environment(environment_id) + .where(ref: ref) + .where.not(id: id) .order(id: :desc) .take end def previous_environment_deployment - project - .deployments + self.class.for_environment(environment_id) .success - .joins(:environment) - .where(environments: { name: environment.name }) .where.not(id: self.id) .order(id: :desc) .take diff --git a/changelogs/unreleased/id-n-1-for-merge-request-commits.yml b/changelogs/unreleased/id-n-1-for-merge-request-commits.yml new file mode 100644 index 00000000000..b958a8b3c7e --- /dev/null +++ b/changelogs/unreleased/id-n-1-for-merge-request-commits.yml @@ -0,0 +1,5 @@ +--- +title: Remove N+1 for API commits/:sha/merge_requests +merge_request: 57290 +author: +type: performance diff --git a/changelogs/unreleased/optimise_previous_environment_deployment.yml b/changelogs/unreleased/optimise_previous_environment_deployment.yml new file mode 100644 index 00000000000..ee4baafb5b6 --- /dev/null +++ b/changelogs/unreleased/optimise_previous_environment_deployment.yml @@ -0,0 +1,5 @@ +--- +title: Optimise query for Deployment#previous_environment_deployment in LinkMergeRequestWorker +merge_request: 57039 +author: +type: performance diff --git a/changelogs/unreleased/sh-update-mailroom.yml b/changelogs/unreleased/sh-update-mailroom.yml deleted file mode 100644 index b53221ba787..00000000000 --- a/changelogs/unreleased/sh-update-mailroom.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Update mailroom to v0.0.10 -merge_request: 56913 -author: -type: fixed diff --git a/config/dependency_decisions.yml b/config/dependency_decisions.yml index 326c7acb28a..774254d2ff1 100644 --- a/config/dependency_decisions.yml +++ b/config/dependency_decisions.yml @@ -331,9 +331,3 @@ :why: https://github.com/xijo/reverse_markdown/blob/master/LICENSE :versions: [] :when: 2021-02-03 08:47:28.792907000 Z -- - :approve - - net-protocol - - :who: Stan Hu - :why: "This license is the same as the Ruby license (BSD): https://github.com/ruby/net-protocol/blob/master/LICENSE.txt" - :versions: [] - :when: 2021-03-18 00:00:46.124036000 Z diff --git a/doc/administration/instance_limits.md b/doc/administration/instance_limits.md index 9077f1e3b91..1c714dea02b 100644 --- a/doc/administration/instance_limits.md +++ b/doc/administration/instance_limits.md @@ -149,7 +149,7 @@ limited to 1KiB, and descriptions (the rest of the message) will be limited to The maximum number of issues loaded on the milestone overview page is 3000. When the number exceeds the limit the page displays an alert and links to a paginated -[issue list](../user/project/issues/index.md#issues-list) of all issues in the milestone. +[issue list](../user/project/issues/managing_issues.md) of all issues in the milestone. - **Limit:** 3000 issues diff --git a/doc/development/experiment_guide/gitlab_experiment.md b/doc/development/experiment_guide/gitlab_experiment.md index 81d6fc01c5f..a01ad54b697 100644 --- a/doc/development/experiment_guide/gitlab_experiment.md +++ b/doc/development/experiment_guide/gitlab_experiment.md @@ -504,18 +504,20 @@ so you can use it when resolving some concepts around experimentation in the cli ### Use experiments in Vue With the `experiment` component, you can define slots that match the name of the -variants pushed to `window.gon.experiment`. For example, an experiment with the -default variants `control` and `candidate` could be implemented like this: +variants pushed to `window.gon.experiment`. For example, if we alter the `pill_color` +experiment to just use the default variants of `control` and `candidate` like so: ```ruby def show - experiment(:button_color) do |e| + experiment(:pill_color) do |e| e.use { } # control e.try { } # candidate end.run end ``` +We can make use of the named slots `control` and `candidate` in the Vue component: + ```vue <script> import Experiment from '~/experimentation/components/experiment.vue'; @@ -526,20 +528,20 @@ export default { </script> <template> - <experiment name="button_name"> + <experiment name="pill_color"> <template #control> - <button>Click me</button> + <button class="bg-default">Click default button</button> </template> <template #candidate> - <button>You will not believe what happens when you click this button</button> + <button class="bg-red">Click red button</button> </template> </experiment> </template> ``` -When you use a multivariate experiment, you can use the variant names. For example, -the Vue component for the `pill_color` experiment would look like this: +When you're coding for an experiment with multiple variants, you can use the variant names. +For example, the Vue component for the previously-defined `pill_color` experiment with `red` and `blue` variants would look like this: ```vue <template> @@ -560,7 +562,7 @@ the Vue component for the `pill_color` experiment would look like this: ``` NOTE: -When there is no experiment defined in the frontend via `experiment(:experiment_name)`, then `control` will be rendered if it exists. +When there is no experiment data in the `window.gon.experiment` object for the given experiment name, the `control` slot will be used, if it exists. ## Notes on feature flags diff --git a/doc/user/group/bulk_editing/index.md b/doc/user/group/bulk_editing/index.md index 651bb7c055e..aa356bee8e3 100644 --- a/doc/user/group/bulk_editing/index.md +++ b/doc/user/group/bulk_editing/index.md @@ -31,7 +31,7 @@ When bulk editing issues in a group, you can edit the following attributes: - [Epic](../epics/index.md) - [Milestone](../../project/milestones/index.md) - [Labels](../../project/labels.md) -- [Health status](../../project/issues/index.md#health-status) +- [Health status](../../project/issues/managing_issues.md#health-status) - [Iteration](../iterations/index.md) To update multiple project issues at the same time: diff --git a/doc/user/group/epics/index.md b/doc/user/group/epics/index.md index 1cb024ceb01..12377b3926d 100644 --- a/doc/user/group/epics/index.md +++ b/doc/user/group/epics/index.md @@ -81,7 +81,7 @@ to: > - The health status of a closed issue [is hidden](https://gitlab.com/gitlab-org/gitlab/-/issues/220867) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.3 or later. > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/213567) in GitLab 13.7. -Report or respond to the health of issues and epics by setting a red, amber, or green [health status](../../project/issues/index.md#health-status), which then appears on your Epic tree. +Report or respond to the health of issues and epics by setting a red, amber, or green [health status](../../project/issues/managing_issues.md#health-status), which then appears on your Epic tree. ## Multi-level child epics **(ULTIMATE)** diff --git a/doc/user/group/index.md b/doc/user/group/index.md index 4a8853bfbd1..52f6ee757ad 100644 --- a/doc/user/group/index.md +++ b/doc/user/group/index.md @@ -16,7 +16,7 @@ Then you can: - Grant members access to multiple projects at once. - Add to-do items for all of the group members at once. -- View the [issues](../project/issues/index.md#issues-list) and +- View the [issues](../project/issues/index.md) and [merge requests](../project/merge_requests/reviewing_and_managing_merge_requests.md#view-merge-requests-for-all-projects-in-a-group) for all projects in the group, together in a single list view. - [Bulk edit](../group/bulk_editing/index.md) issues, epics, and merge requests. @@ -454,24 +454,21 @@ API requests to add a new user to a project are not possible. > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/1985) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 12.0. > - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/215410) to [GitLab Premium](https://about.gitlab.com/pricing/) in 13.1. -NOTE: -IP access restrictions are not functioning as expected on GitLab.com. If enabled, -users cannot perform Git operations through SSH, or access projects in the UI. -For more information, [see this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/271673). - To ensure only people from your organization can access particular -resources, you can restrict access to groups by IP address. This setting applies to all subgroups, -projects, issues, and so on. - -IP access restrictions can be configured at the group level only. +resources, you can restrict access to groups by IP address. This group-level setting +applies to: -This restriction applies to: - -- The GitLab UI. +- The GitLab UI, including subgroups, projects, and issues. - [In GitLab 12.3 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/12874), the API. -- [In GitLab 12.4 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/32113), Git actions via SSH. -Administrators and group owners are able to access the group regardless of the IP restriction. +You should consider these security implications before configuring IP address restrictions: + +- **SSH requests**: While you can restrict HTTP traffic on GitLab.com with IP address restrictions, + they cause SSH requests, including Git operations over SSH, to fail. For more information, + read [issue 271673](https://gitlab.com/gitlab-org/gitlab/-/issues/271673). +- **Administrators and group owners**: Users with these permission levels can always + access the group settings, regardless of IP restriction, but the can't access projects + belonging to the group when accessing from a disallowed IP address. To restrict group access by IP address: @@ -480,7 +477,7 @@ To restrict group access by IP address: 1. In the **Allow access to the following IP addresses** field, enter IP address ranges in CIDR notation. 1. Select **Save changes**. -![Domain restriction by IP address](img/restrict-by-ip.gif) + ![Domain restriction by IP address](img/restrict-by-ip.gif) ## Restrict group access by domain **(PREMIUM)** diff --git a/doc/user/index.md b/doc/user/index.md index 7541e3e85f9..b1daea5d579 100644 --- a/doc/user/index.md +++ b/doc/user/index.md @@ -42,7 +42,7 @@ GitLab is a Git-based platform that integrates a great number of essential tools - Hosting code in repositories with version control. - Tracking proposals for new implementations, bug reports, and feedback with a - fully featured [Issue Tracker](project/issues/index.md#issues-list). + fully featured [Issue tracker](project/issues/index.md). - Organizing and prioritizing with [Issue Boards](project/issue_board.md). - Reviewing code in [Merge Requests](project/merge_requests/index.md) with live-preview changes per branch with [Review Apps](../ci/review_apps/index.md). diff --git a/doc/user/project/bulk_editing.md b/doc/user/project/bulk_editing.md index d7e8133f9ad..76ae4cf596b 100644 --- a/doc/user/project/bulk_editing.md +++ b/doc/user/project/bulk_editing.md @@ -33,7 +33,7 @@ When bulk editing issues in a project, you can edit the following attributes: - [Epic](../group/epics/index.md) - [Milestone](milestones/index.md) - [Labels](labels.md) -- [Health status](issues/index.md#health-status) +- [Health status](issues/managing_issues.md#health-status) - Notification subscription - [Iteration](../group/iterations/index.md) diff --git a/doc/user/project/issue_board.md b/doc/user/project/issue_board.md index 09e91ee71c4..898857b61c0 100644 --- a/doc/user/project/issue_board.md +++ b/doc/user/project/issue_board.md @@ -14,7 +14,7 @@ It can be used as a [Kanban](https://en.wikipedia.org/wiki/Kanban_(development)) It pairs issue tracking and project management, keeping everything together, so that you don't need to jump between different platforms to organize your workflow. -Issue boards build on the existing [issue tracking functionality](issues/index.md#issues-list) and +Issue boards build on the existing [issue tracking functionality](issues/index.md) and [labels](labels.md). Your issues appear as cards in vertical lists, organized by their assigned labels, [milestones](#milestone-lists), or [assignees](#assignee-lists). @@ -88,7 +88,7 @@ You can tailor GitLab issue boards to your own preferred workflow. Here are some common use cases for issue boards. For examples of using issue boards along with [epics](../group/epics/index.md), -[issue health status](issues/index.md#health-status), and +[issue health status](issues/managing_issues.md#health-status), and [scoped labels](labels.md#scoped-labels) for various Agile frameworks, check: - The [How to use GitLab for Agile portfolio planning and project management](https://about.gitlab.com/blog/2020/11/11/gitlab-for-agile-portfolio-planning-project-management/) blog post (November 2020) diff --git a/doc/user/project/issues/due_dates.md b/doc/user/project/issues/due_dates.md index 909a20f0e2f..a82823947dc 100644 --- a/doc/user/project/issues/due_dates.md +++ b/doc/user/project/issues/due_dates.md @@ -37,7 +37,7 @@ The last way to set a due date is by using [quick actions](../quick_actions.md), ## Making use of due dates -You can see issues with their due dates in the [issues list](index.md#issues-list). +You can see issues with their due dates in the issues list. Overdue issues have their icon and date colored red. To sort issues by their due dates, select **Due date** from the dropdown menu on the right. Issues are then sorted from the earliest due date to the latest. diff --git a/doc/user/project/issues/img/issue_health_status_dropdown_v12_10.png b/doc/user/project/issues/img/issue_health_status_dropdown_v12_10.png Binary files differdeleted file mode 100644 index f8517de4e12..00000000000 --- a/doc/user/project/issues/img/issue_health_status_dropdown_v12_10.png +++ /dev/null diff --git a/doc/user/project/issues/img/issues_main_view.png b/doc/user/project/issues/img/issues_main_view.png Binary files differdeleted file mode 100644 index a929916c682..00000000000 --- a/doc/user/project/issues/img/issues_main_view.png +++ /dev/null diff --git a/doc/user/project/issues/img/project_issues_list_view.png b/doc/user/project/issues/img/project_issues_list_view.png Binary files differdeleted file mode 100644 index c80bd58f5c9..00000000000 --- a/doc/user/project/issues/img/project_issues_list_view.png +++ /dev/null diff --git a/doc/user/project/issues/index.md b/doc/user/project/issues/index.md index 7c8ba4edd6b..437f4e2b5e8 100644 --- a/doc/user/project/issues/index.md +++ b/doc/user/project/issues/index.md @@ -6,209 +6,46 @@ info: To determine the technical writer assigned to the Stage/Group associated w # Issues **(FREE)** -Issues are the fundamental mechanism in GitLab to collaborate on ideas, solve -problems, and plan work. - -Using issues, you can share and discuss proposals (both before and during their -implementation) between you and your team, and outside collaborators. +Use issues to collaborate on ideas, solve problems, and plan work. +Share and discuss proposals with your team and with outside collaborators. You can use issues for many purposes, customized to your needs and workflow. -Common use cases include: -- Discussing the implementation of a new idea. -- Tracking tasks and work status. -- Accepting feature proposals, questions, support requests, or bug reports. -- Elaborating on new code implementations. +- Discuss the implementation of an idea. +- Track tasks and work status. +- Accept feature proposals, questions, support requests, or bug reports. +- Elaborate on code implementations. -For more information about using issues, see the -[Always start a discussion with an issue](https://about.gitlab.com/blog/2016/03/03/start-with-an-issue/) -GitLab blog post. +For more information about using issues, see the GitLab blog post: +[Always start a discussion with an issue](https://about.gitlab.com/blog/2016/03/03/start-with-an-issue/). Issues are always associated with a specific project. If you have multiple -projects in a group, you can view all of the issues collectively at the group -level. +projects in a group, you can view all of the projects' issues at once. <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> -To learn how our Strategic Marketing department uses GitLab issues with [labels](../labels.md) and +To learn how the GitLab Strategic Marketing department uses GitLab issues with [labels](../labels.md) and [issue boards](../issue_board.md), see the video on [Managing Commitments with Issues](https://www.youtube.com/watch?v=cuIHNintg1o&t=3). -## Parts of an issue - -Issues have a flexible content and metadata structure. Here are some of the -elements you can provide in an issue: - -- Title -- Description and tasks -- Comments and other activity -- Author -- Assignees -- State (open or closed) -- Health status (on track, needs attention, or at risk) -- Confidentiality -- Tasks (completed vs. outstanding) -- Milestone -- Due date -- Weight -- Time tracking -- Labels -- Votes -- Reaction emoji -- Linked issues -- Assigned epic -- Unique issue number and URL - -## View and manage issues - -Key actions for issues include: - -- [Creating issues](managing_issues.md#create-a-new-issue) -- [Moving issues](managing_issues.md#moving-issues) -- [Closing issues](managing_issues.md#closing-issues) -- [Deleting issues](managing_issues.md#deleting-issues) -- [Promoting issues](managing_issues.md#promote-an-issue-to-an-epic) - -Although you can view and manage details of an issue on the [issue page](#issue-page), -you can also work with several issues at a time by using these features: - -- [Issues List](#issues-list): View a list of issues in a project or group. -- [Issue Boards](../issue_board.md): Organize issues with a project management - workflow for a feature or product release. -- Issue references -- [Epics](../../group/epics/index.md): Manage your portfolio of projects by - tracking groups of issues with a shared theme. - -### Issue page - -![Issue view](img/issues_main_view.png) - -On an issue's page, you can view [all aspects of the issue](issue_data_and_actions.md), -and modify them if you have the necessary [permissions](../../permissions.md). - -#### Real-time sidebar **(FREE SELF)** - -> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/17589) in GitLab 13.3. - -Assignees in the sidebar are updated in real time. This feature is **disabled by default**. -To enable it, you need to enable [ActionCable in-app mode](https://docs.gitlab.com/omnibus/settings/actioncable.html). - -### Issues List - -![Project Issues List view](img/project_issues_list_view.png) - -In the Issues List, you can: - -- View all issues in a project when opening the Issues List from a project context. -- View all issues in a groups's projects when opening the Issues List from a group context. - -You can filter the Issues List with a [search query](../../search/index.md#filtering-issue-and-merge-request-lists), -including specific metadata, such as labels, assignees, status, and more. From this -view, you can also make certain changes [in bulk](../bulk_editing.md) to the displayed issues. - -For more information, see the [Issue Data and Actions](issue_data_and_actions.md) page -for a rundown of all the fields and information in an issue. - -You can sort a list of issues in several ways, for example by issue creation date, milestone due date. -For more information, see the [Sorting and ordering issue lists](sorting_issue_lists.md) page. - -#### Cached issue count - -> - [Introduced]([link-to-issue](https://gitlab.com/gitlab-org/gitlab/-/issues/243753)) in GitLab 13.9. -> - It's [deployed behind a feature flag](../../feature_flags.md), disabled by default. -> - It's disabled on GitLab.com. -> - It's not recommended for production use. -> - To use this feature in GitLab self-managed instances, ask a GitLab administrator to [enable it](#enable-or-disable-cached-issue-count) **(FREE SELF)** - -WARNING: -This feature might not be available to you. Check the **version history** note above for details. - -In a group, the sidebar displays the total count of open issues and this value is cached if higher -than 1000. The cached value is rounded to thousands (or millions) and updated every 24 hours. - -### Design Management - -With [Design Management](design_management.md), you can upload design -assets to issues and view them all together for sharing and -collaboration with your team. - -### Related issues - -You can mark two issues as related, so that when viewing one, the other is always -listed in its [Related Issues](related_issues.md) section. This can help display important -context, such as past work, dependencies, or duplicates. - -Users of [GitLab Premium](https://about.gitlab.com/pricing/) or higher can -also mark issues as blocking or blocked by another issue. - -### Crosslinking issues - -You can [cross-link issues](crosslinking_issues.md) by referencing an issue from another -issue or merge request by including its URL or ID. The referenced issue displays a -message in the Activity stream about the reference, with a link to the other issue or MR. - -### Similar issues - -> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/22866) in GitLab 11.6. - -To prevent duplication of issues for the same topic, GitLab searches for similar issues -when new issues are being created. - -As you type in the title field of the **New Issue** page, GitLab searches titles and descriptions -across all issues to in the current project. Only issues you have access to are returned. -Up to five similar issues, sorted by most recently updated, are displayed below the title box. -[GraphQL](../../../api/graphql/index.md) must be enabled to use this feature. - -![Similar issues](img/similar_issues.png) - -### Health status **(ULTIMATE)** - -> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/36427) in GitLab Ultimate 12.10. -> - Health status of closed issues [can't be edited](https://gitlab.com/gitlab-org/gitlab/-/issues/220867) in GitLab Ultimate 13.4 and later. -> - Issue health status visible in issue lists [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45141) in GitLab Ultimate 13.6. -> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/213567) in GitLab 13.7. - -To help you track issue statuses, you can assign a status to each issue. -This marks issues as progressing as planned or needs attention to keep on schedule: - -- **On track** (green) -- **Needs attention** (amber) -- **At risk** (red) - -!["On track" health status on an issue](img/issue_health_status_dropdown_v12_10.png) - -After an issue is closed, its health status can't be edited and the "Edit" button becomes disabled -until the issue is reopened. - -You can then see issue statuses in the [issue list](#issues-list) and the -[Epic tree](../../group/epics/index.md#issue-health-status-in-epic-tree). - -## Other Issue actions +## Related topics +- [Create issues](managing_issues.md#create-a-new-issue) - [Create an issue from a template](../../project/description_templates.md#use-the-templates) +- [Move issues](managing_issues.md#moving-issues) +- [Close issues](managing_issues.md#closing-issues) +- [Delete issues](managing_issues.md#deleting-issues) +- [Promote issues](managing_issues.md#promote-an-issue-to-an-epic) - [Set a due date](due_dates.md) -- [Bulk edit issues](../bulk_editing.md) - From the Issues List, select multiple issues - in order to change their status, assignee, milestone, or labels in bulk. - [Import issues](csv_import.md) - [Export issues](csv_export.md) +- [Upload designs to issues](design_management.md) +- [Relate issues](related_issues.md) +- [Cross-link issues](crosslinking_issues.md) +- [Bulk edit issues](../bulk_editing.md) +- [Sort issue lists](sorting_issue_lists.md) +- [Search for issues](../../search/index.md#filtering-issue-and-merge-request-lists) +- [Epics](../../group/epics/index.md) +- [Issue Boards](../issue_board.md) - [Issues API](../../../api/issues.md) -- Configure an [external issue tracker](../../../integration/external-issue-tracker.md) - such as Jira, Redmine, Bugzilla, or EWM. - -## Enable or disable cached issue count **(FREE SELF)** - -Cached issue count in the left sidebar is under development and not ready for production use. It is -deployed behind a feature flag that is **enabled by default**. -[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md) -can disable it. - -To disable it: - -```ruby -Feature.disable(:cached_sidebar_open_issues_count) -``` - -To enable it: - -```ruby -Feature.enable(:cached_sidebar_open_issues_count) -``` +- [Configure an external issue tracker](../../../integration/external-issue-tracker.md) +- [Parts of an issue](issue_data_and_actions.md) diff --git a/doc/user/project/issues/managing_issues.md b/doc/user/project/issues/managing_issues.md index 4c79eb3ccbe..26f393bfb4b 100644 --- a/doc/user/project/issues/managing_issues.md +++ b/doc/user/project/issues/managing_issues.md @@ -144,7 +144,7 @@ Follow these examples to form your new issue URL with prefilled fields. - For a new issue in the GitLab Community Edition project with a pre-filled title, a pre-filled description, and the confidential flag set, the URL would be `https://gitlab.com/gitlab-org/gitlab-foss/-/issues/new?issue[title]=Validate%20new%20concept&issue[description]=Research%20idea&issue[confidential]=true` -## Moving Issues +## Moving issues Moving an issue copies it to the target project, and closes it in the originating project. The original issue is not deleted. A system note, which indicates @@ -154,7 +154,7 @@ The "Move issue" button is at the bottom of the right-sidebar when viewing the i ![move issue - button](img/sidebar_move_issue.png) -### Moving Issues in Bulk +### Moving issues in bulk **(FREE SELF)** If you have advanced technical skills you can also bulk move all the issues from one project to another in the rails console. The below script moves all issues @@ -315,3 +315,79 @@ To add an issue to an [iteration](../../group/iterations/index.md): You can also use the `/iteration` [quick action](../quick_actions.md#issues-merge-requests-and-epics) in a comment or description field. + +## Real-time sidebar **(FREE SELF)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/17589) in GitLab 13.3. + +Assignees in the sidebar are updated in real time. This feature is **disabled by default**. +To enable it, you need to enable [ActionCable in-app mode](https://docs.gitlab.com/omnibus/settings/actioncable.html). + +## Cached issue count **(FREE SELF)** + +> - [Introduced]([link-to-issue](https://gitlab.com/gitlab-org/gitlab/-/issues/243753)) in GitLab 13.9. +> - It's [deployed behind a feature flag](../../feature_flags.md), disabled by default. +> - It's disabled on GitLab.com. +> - It's not recommended for production use. +> - To use this feature in GitLab self-managed instances, ask a GitLab administrator to [enable it](#enable-or-disable-cached-issue-count) **(FREE SELF)** + +WARNING: +This feature might not be available to you. Check the **version history** note above for details. + +In a group, the sidebar displays the total count of open issues and this value is cached if higher +than 1000. The cached value is rounded to thousands (or millions) and updated every 24 hours. + +## Similar issues + +> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/22866) in GitLab 11.6. + +To prevent duplication of issues for the same topic, GitLab searches for similar issues +when new issues are being created. + +As you type in the title field of the **New Issue** page, GitLab searches titles and descriptions +across all issues to in the current project. Only issues you have access to are returned. +Up to five similar issues, sorted by most recently updated, are displayed below the title box. +[GraphQL](../../../api/graphql/index.md) must be enabled to use this feature. + +![Similar issues](img/similar_issues.png) + +## Health status **(ULTIMATE)** + +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/36427) in GitLab Ultimate 12.10. +> - Health status of closed issues [can't be edited](https://gitlab.com/gitlab-org/gitlab/-/issues/220867) in GitLab Ultimate 13.4 and later. +> - Issue health status visible in issue lists [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45141) in GitLab Ultimate 13.6. +> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/213567) in GitLab 13.7. + +To help you track issue statuses, you can assign a status to each issue. +This marks issues as progressing as planned or needs attention to keep on schedule: + +- **On track** (green) +- **Needs attention** (amber) +- On track (green) +- Needs attention (amber) +- At risk (red) + +After an issue is closed, its health status can't be edited and the **Edit** button becomes disabled +until the issue is reopened. + +You can then see issue statuses in the issues list and the +[epic tree](../../group/epics/index.md#issue-health-status-in-epic-tree). + +## Enable or disable cached issue count **(FREE SELF)** + +Cached issue count in the left sidebar is under development and not ready for production use. It is +deployed behind a feature flag that is **enabled by default**. +[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md) +can disable it. + +To disable it: + +```ruby +Feature.disable(:cached_sidebar_open_issues_count) +``` + +To enable it: + +```ruby +Feature.enable(:cached_sidebar_open_issues_count) +``` diff --git a/doc/user/project/merge_requests/merge_request_dependencies.md b/doc/user/project/merge_requests/merge_request_dependencies.md index 2d7ba853258..fc5cc4d958b 100644 --- a/doc/user/project/merge_requests/merge_request_dependencies.md +++ b/doc/user/project/merge_requests/merge_request_dependencies.md @@ -17,9 +17,9 @@ then it cannot be merged until its dependency is itself merged. NOTE: Merge requests dependencies are a **PREMIUM** feature, but this restriction is -only enforced for the dependent merge request. A merge request in a **FREE** or -**STARTER** project can be a dependency of a **PREMIUM** merge request, but not -vice-versa. +only enforced for the dependent merge request. A merge request in a **FREE** +project can be a dependency of a **PREMIUM** merge request, but not +the other way around. ## Use cases diff --git a/doc/user/project/service_desk.md b/doc/user/project/service_desk.md index 383b4df9612..76337b62da2 100644 --- a/doc/user/project/service_desk.md +++ b/doc/user/project/service_desk.md @@ -160,7 +160,7 @@ To edit the custom email display name: 1. Enter a new name in **Email display name**. 1. Select **Save Changes**. -### Using custom email address +### Using custom email address **(FREE SELF)** > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/2201) in GitLab Premium 13.0. > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/284656) in GitLab 13.8. diff --git a/lib/api/commits.rb b/lib/api/commits.rb index a24848082a9..f7d9eeb4cd7 100644 --- a/lib/api/commits.rb +++ b/lib/api/commits.rb @@ -372,7 +372,7 @@ module API current_user, project_id: user_project.id, commit_sha: commit.sha - ).execute + ).execute.with_api_entity_associations present paginate(commit_merge_requests), with: Entities::MergeRequestBasic end diff --git a/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml b/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml index 5edb26a0b56..01907ef9e2e 100644 --- a/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml +++ b/lib/gitlab/ci/templates/Jobs/Browser-Performance-Testing.gitlab-ci.yml @@ -20,15 +20,48 @@ performance: fi - export CI_ENVIRONMENT_URL=$(cat environment_url.txt) - mkdir gitlab-exporter + # Busybox wget does not support proxied HTTPS, get the real thing. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/287611. + - (env | grep -i _proxy= 2>&1 >/dev/null) && apk --no-cache add wget - wget -O gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/1.1.0/index.js - mkdir sitespeed-results - | + function propagate_env_vars() { + CURRENT_ENV=$(printenv) + + for VAR_NAME; do + echo $CURRENT_ENV | grep "${VAR_NAME}=" > /dev/null && echo "--env $VAR_NAME " + done + } + - | if [ -f .gitlab-urls.txt ] then sed -i -e 's@^@'"$CI_ENVIRONMENT_URL"'@' .gitlab-urls.txt - docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io $SITESPEED_IMAGE:$SITESPEED_VERSION --plugins.add ./gitlab-exporter --cpu --outputFolder sitespeed-results .gitlab-urls.txt $SITESPEED_OPTIONS + docker run \ + $(propagate_env_vars \ + auto_proxy \ + https_proxy \ + http_proxy \ + no_proxy \ + AUTO_PROXY \ + HTTPS_PROXY \ + HTTP_PROXY \ + NO_PROXY \ + ) \ + --shm-size=1g --rm -v "$(pwd)":/sitespeed.io $SITESPEED_IMAGE:$SITESPEED_VERSION --plugins.add ./gitlab-exporter --cpu --outputFolder sitespeed-results .gitlab-urls.txt $SITESPEED_OPTIONS else - docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io $SITESPEED_IMAGE:$SITESPEED_VERSION --plugins.add ./gitlab-exporter --cpu --outputFolder sitespeed-results "$CI_ENVIRONMENT_URL" $SITESPEED_OPTIONS + docker run \ + $(propagate_env_vars \ + auto_proxy \ + https_proxy \ + http_proxy \ + no_proxy \ + AUTO_PROXY \ + HTTPS_PROXY \ + HTTP_PROXY \ + NO_PROXY \ + ) \ + --shm-size=1g --rm -v "$(pwd)":/sitespeed.io $SITESPEED_IMAGE:$SITESPEED_VERSION --plugins.add ./gitlab-exporter --cpu --outputFolder sitespeed-results "$CI_ENVIRONMENT_URL" $SITESPEED_OPTIONS fi - mv sitespeed-results/data/performance.json browser-performance.json artifacts: diff --git a/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml b/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml index e591e3cc1e2..404d4a4c6db 100644 --- a/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml +++ b/lib/gitlab/ci/templates/Verify/Browser-Performance.gitlab-ci.yml @@ -18,9 +18,32 @@ performance: - docker:stable-dind script: - mkdir gitlab-exporter + # Busybox wget does not support proxied HTTPS, get the real thing. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/287611. + - (env | grep -i _proxy= 2>&1 >/dev/null) && apk --no-cache add wget - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/1.1.0/index.js - mkdir sitespeed-results - - docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io $SITESPEED_IMAGE:$SITESPEED_VERSION --plugins.add ./gitlab-exporter --cpu --outputFolder sitespeed-results $URL $SITESPEED_OPTIONS + - | + 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 \ + auto_proxy \ + https_proxy \ + http_proxy \ + no_proxy \ + AUTO_PROXY \ + HTTPS_PROXY \ + HTTP_PROXY \ + NO_PROXY \ + ) \ + --shm-size=1g --rm -v "$(pwd)":/sitespeed.io $SITESPEED_IMAGE:$SITESPEED_VERSION --plugins.add ./gitlab-exporter --cpu --outputFolder sitespeed-results $URL $SITESPEED_OPTIONS - mv sitespeed-results/data/performance.json browser-performance.json artifacts: paths: diff --git a/spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js b/spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js deleted file mode 100644 index ac670b622b1..00000000000 --- a/spec/frontend/vue_shared/components/gl_toggle_vuex_spec.js +++ /dev/null @@ -1,114 +0,0 @@ -import { GlToggle } from '@gitlab/ui'; -import { mount, createLocalVue } from '@vue/test-utils'; -import Vuex from 'vuex'; -import GlToggleVuex from '~/vue_shared/components/gl_toggle_vuex.vue'; - -const localVue = createLocalVue(); -localVue.use(Vuex); - -describe('GlToggleVuex component', () => { - let wrapper; - let store; - - const findButton = () => wrapper.find('button'); - - const createWrapper = (props = {}) => { - wrapper = mount(GlToggleVuex, { - localVue, - store, - propsData: { - stateProperty: 'toggleState', - ...props, - }, - }); - }; - - beforeEach(() => { - store = new Vuex.Store({ - state: { - toggleState: false, - }, - actions: { - setToggleState: ({ commit }, { key, value }) => commit('setToggleState', { key, value }), - }, - mutations: { - setToggleState: (state, { key, value }) => { - state[key] = value; - }, - }, - }); - createWrapper(); - }); - - afterEach(() => { - wrapper.destroy(); - }); - - it('renders gl-toggle', () => { - expect(wrapper.find(GlToggle).exists()).toBe(true); - }); - - it('properly computes default value for setAction', () => { - expect(wrapper.props('setAction')).toBe('setToggleState'); - }); - - describe('without a store module', () => { - it('calls action with new value when value changes', () => { - jest.spyOn(store, 'dispatch'); - - findButton().trigger('click'); - expect(store.dispatch).toHaveBeenCalledWith('setToggleState', { - key: 'toggleState', - value: true, - }); - }); - - it('updates store property when value changes', () => { - findButton().trigger('click'); - expect(store.state.toggleState).toBe(true); - }); - }); - - describe('with a store module', () => { - beforeEach(() => { - store = new Vuex.Store({ - modules: { - someModule: { - namespaced: true, - state: { - toggleState: false, - }, - actions: { - setToggleState: ({ commit }, { key, value }) => - commit('setToggleState', { key, value }), - }, - mutations: { - setToggleState: (state, { key, value }) => { - state[key] = value; - }, - }, - }, - }, - }); - - createWrapper({ - storeModule: 'someModule', - }); - }); - - it('calls action with new value when value changes', () => { - jest.spyOn(store, 'dispatch'); - - findButton().trigger('click'); - expect(store.dispatch).toHaveBeenCalledWith('someModule/setToggleState', { - key: 'toggleState', - value: true, - }); - }); - - it('updates store property when value changes', () => { - findButton().trigger('click'); - expect(store.state.someModule.toggleState).toBe(true); - }); - }); -}); diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb index 68d12f51d4b..c0afc1d50f6 100644 --- a/spec/models/deployment_spec.rb +++ b/spec/models/deployment_spec.rb @@ -574,7 +574,7 @@ RSpec.describe Deployment do describe '#previous_deployment' do it 'returns the previous deployment' do - deploy1 = create(:deployment) + deploy1 = create(:deployment, :success) deploy2 = create( :deployment, project: deploy1.project, @@ -583,6 +583,18 @@ RSpec.describe Deployment do expect(deploy2.previous_deployment).to eq(deploy1) end + + it 'returns nothing if the refs do not match' do + deploy1 = create(:deployment, :success) + deploy2 = create( + :deployment, + :review_app, + project: deploy1.project, + environment: deploy1.environment + ) + + expect(deploy2.previous_deployment).to be_nil + end end describe '#link_merge_requests' do diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb index de2cfb8fea0..57faac4292f 100644 --- a/spec/requests/api/commits_spec.rb +++ b/spec/requests/api/commits_spec.rb @@ -1898,8 +1898,12 @@ RSpec.describe API::Commits do let(:merged_mr) { create(:merge_request, source_project: project, source_branch: 'master', target_branch: 'feature') } let(:commit) { merged_mr.merge_request_diff.commits.last } - it 'returns the correct merge request' do + def perform_request(user) get api("/projects/#{project.id}/repository/commits/#{commit.id}/merge_requests", user) + end + + it 'returns the correct merge request' do + perform_request(user) expect(response).to have_gitlab_http_status(:ok) expect(response).to include_limited_pagination_headers @@ -1910,7 +1914,7 @@ RSpec.describe API::Commits do it 'returns 403 for an unauthorized user' do project.add_guest(user) - get api("/projects/#{project.id}/repository/commits/#{commit.id}/merge_requests", user) + perform_request(user) expect(response).to have_gitlab_http_status(:forbidden) end @@ -1926,11 +1930,21 @@ RSpec.describe API::Commits do let(:non_member) { create(:user) } it 'responds 403 when only members are allowed to read merge requests' do - get api("/projects/#{project.id}/repository/commits/#{commit.id}/merge_requests", non_member) + perform_request(non_member) expect(response).to have_gitlab_http_status(:forbidden) end end + + it 'returns multiple merge requests without N + 1' do + perform_request(user) + + control_count = ActiveRecord::QueryRecorder.new { perform_request(user) }.count + + create(:merge_request, :closed, source_project: project, source_branch: 'master', target_branch: 'feature') + + expect { perform_request(user) }.not_to exceed_query_limit(control_count) + end end describe 'GET /projects/:id/repository/commits/:sha/signature' do |