diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 81b69b0e210..f0b549766ed 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -426,8 +426,8 @@ lib/gitlab/checks/** /doc/administration/configure.md @axil /doc/administration/consul.md @axil /doc/administration/credentials_inventory.md @jglassman1 -/doc/administration/custom_project_templates.md @aqualls @msedlakjakubowski -/doc/administration/diff_limits.md @aqualls @msedlakjakubowski +/doc/administration/custom_project_templates.md @msedlakjakubowski +/doc/administration/diff_limits.md @msedlakjakubowski /doc/administration/docs_self_host.md @axil /doc/administration/encrypted_configuration.md @axil /doc/administration/environment_variables.md @axil @@ -438,24 +438,21 @@ lib/gitlab/checks/** /doc/administration/geo/ @axil /doc/administration/geo_sites.md @axil /doc/administration/get_started.md @kpaizee -/doc/administration/git_protocol.md @aqualls @msedlakjakubowski +/doc/administration/git_protocol.md @msedlakjakubowski /doc/administration/gitaly/ @eread /doc/administration/housekeeping.md @eread /doc/administration/inactive_project_deletion.md @eread /doc/administration/incoming_email.md @msedlakjakubowski /doc/administration/index.md @axil /doc/administration/instance_limits.md @axil -/doc/administration/integration/diagrams_net.md @aqualls @msedlakjakubowski -/doc/administration/integration/kroki.md @msedlakjakubowski -/doc/administration/integration/mailgun.md @msedlakjakubowski -/doc/administration/integration/plantuml.md @aqualls @msedlakjakubowski +/doc/administration/integration/ @msedlakjakubowski /doc/administration/integration/terminal.md @phillipwells /doc/administration/invalidate_markdown_cache.md @msedlakjakubowski /doc/administration/issue_closing_pattern.md @aqualls /doc/administration/job_artifacts.md @marcel.amirault /doc/administration/job_logs.md @fneill /doc/administration/labels.md @msedlakjakubowski -/doc/administration/lfs/ @aqualls @msedlakjakubowski +/doc/administration/lfs/ @msedlakjakubowski /doc/administration/libravatar.md @axil /doc/administration/license.md @fneill /doc/administration/license_file.md @fneill @@ -463,8 +460,8 @@ lib/gitlab/checks/** /doc/administration/logs/ @axil /doc/administration/logs/index.md @msedlakjakubowski /doc/administration/maintenance_mode/ @axil -/doc/administration/merge_request_diffs.md @aqualls @msedlakjakubowski -/doc/administration/merge_requests_approvals.md @aqualls @msedlakjakubowski +/doc/administration/merge_request_diffs.md @msedlakjakubowski +/doc/administration/merge_requests_approvals.md @msedlakjakubowski /doc/administration/moderate_users.md @jglassman1 /doc/administration/monitoring/github_imports.md @eread @ashrafkhamis /doc/administration/monitoring/health_check.md @msedlakjakubowski @@ -483,8 +480,8 @@ lib/gitlab/checks/** /doc/administration/nfs.md @axil /doc/administration/object_storage.md @axil /doc/administration/operations/ @axil -/doc/administration/operations/fast_ssh_key_lookup.md @aqualls @msedlakjakubowski -/doc/administration/operations/gitlab_sshd.md @aqualls @msedlakjakubowski +/doc/administration/operations/fast_ssh_key_lookup.md @msedlakjakubowski +/doc/administration/operations/gitlab_sshd.md @msedlakjakubowski /doc/administration/operations/moving_repositories.md @eread /doc/administration/package_information/ @axil /doc/administration/packages/ @marcel.amirault @@ -508,39 +505,39 @@ lib/gitlab/checks/** /doc/administration/restart_gitlab.md @axil /doc/administration/review_abuse_reports.md @phillipwells /doc/administration/server_hooks.md @eread -/doc/administration/settings/account_and_limit_settings.md @aqualls @msedlakjakubowski +/doc/administration/settings/account_and_limit_settings.md @msedlakjakubowski /doc/administration/settings/continuous_integration.md @marcel.amirault -/doc/administration/settings/deprecated_api_rate_limits.md @aqualls @msedlakjakubowski +/doc/administration/settings/deprecated_api_rate_limits.md @msedlakjakubowski /doc/administration/settings/email.md @msedlakjakubowski /doc/administration/settings/external_authorization.md @jglassman1 -/doc/administration/settings/files_api_rate_limits.md @aqualls @msedlakjakubowski -/doc/administration/settings/git_lfs_rate_limits.md @aqualls @msedlakjakubowski +/doc/administration/settings/files_api_rate_limits.md @msedlakjakubowski +/doc/administration/settings/git_lfs_rate_limits.md @msedlakjakubowski /doc/administration/settings/gitaly_timeouts.md @eread /doc/administration/settings/import_export_rate_limits.md @eread @ashrafkhamis /doc/administration/settings/incident_management_rate_limits.md @msedlakjakubowski -/doc/administration/settings/index.md @aqualls @msedlakjakubowski -/doc/administration/settings/instance_template_repository.md @aqualls @msedlakjakubowski +/doc/administration/settings/index.md @msedlakjakubowski +/doc/administration/settings/instance_template_repository.md @msedlakjakubowski /doc/administration/settings/package_registry_rate_limits.md @phillipwells /doc/administration/settings/project_integration_management.md @eread @ashrafkhamis -/doc/administration/settings/push_event_activities_limit.md @aqualls @msedlakjakubowski +/doc/administration/settings/push_event_activities_limit.md @msedlakjakubowski /doc/administration/settings/rate_limit_on_issues_creation.md @msedlakjakubowski /doc/administration/settings/rate_limit_on_notes_creation.md @msedlakjakubowski /doc/administration/settings/rate_limit_on_pipelines_creation.md @marcel.amirault /doc/administration/settings/rate_limit_on_projects_api.md @lciutacu /doc/administration/settings/rate_limit_on_users_api.md @jglassman1 -/doc/administration/settings/rate_limits_on_git_ssh_operations.md @aqualls @msedlakjakubowski +/doc/administration/settings/rate_limits_on_git_ssh_operations.md @msedlakjakubowski /doc/administration/settings/scim_setup.md @jglassman1 /doc/administration/settings/security_and_compliance.md @rdickenson /doc/administration/settings/slack_app.md @eread @ashrafkhamis /doc/administration/settings/terraform_limits.md @phillipwells /doc/administration/settings/third_party_offers.md @lciutacu /doc/administration/settings/usage_statistics.md @lciutacu -/doc/administration/settings/visibility_and_access_controls.md @aqualls @msedlakjakubowski +/doc/administration/settings/visibility_and_access_controls.md @msedlakjakubowski /doc/administration/sidekiq/ @axil /doc/administration/sidekiq/sidekiq_memory_killer.md @jglassman1 /doc/administration/silent_mode/ @axil /doc/administration/smime_signing_email.md @axil -/doc/administration/snippets/ @aqualls @msedlakjakubowski +/doc/administration/snippets/ @msedlakjakubowski /doc/administration/static_objects_external_storage.md @ashrafkhamis /doc/administration/system_hooks.md @eread @ashrafkhamis /doc/administration/terraform_state.md @phillipwells @@ -559,10 +556,10 @@ lib/gitlab/checks/** /doc/api/avatar.md @jglassman1 /doc/api/award_emoji.md @msedlakjakubowski /doc/api/boards.md @msedlakjakubowski -/doc/api/branches.md @aqualls @msedlakjakubowski +/doc/api/branches.md @msedlakjakubowski /doc/api/bulk_imports.md @eread @ashrafkhamis /doc/api/cluster_agents.md @phillipwells -/doc/api/commits.md @aqualls @msedlakjakubowski +/doc/api/commits.md @msedlakjakubowski /doc/api/container_registry.md @marcel.amirault /doc/api/custom_attributes.md @msedlakjakubowski /doc/api/database_migrations.md @aqualls @@ -571,7 +568,7 @@ lib/gitlab/checks/** /doc/api/deploy_keys.md @phillipwells /doc/api/deploy_tokens.md @phillipwells /doc/api/deployments.md @phillipwells -/doc/api/discussions.md @aqualls @msedlakjakubowski +/doc/api/discussions.md @msedlakjakubowski /doc/api/dora/ @lciutacu /doc/api/draft_notes.md @aqualls /doc/api/environments.md @phillipwells @@ -586,7 +583,7 @@ lib/gitlab/checks/** /doc/api/geo_nodes.md @axil /doc/api/geo_sites.md @axil /doc/api/graphql/audit_report.md @eread -/doc/api/graphql/branch_rules.md @aqualls @msedlakjakubowski +/doc/api/graphql/branch_rules.md @msedlakjakubowski /doc/api/graphql/custom_emoji.md @msedlakjakubowski /doc/api/graphql/getting_started.md @eread @ashrafkhamis /doc/api/graphql/index.md @eread @ashrafkhamis @@ -605,7 +602,7 @@ lib/gitlab/checks/** /doc/api/group_labels.md @msedlakjakubowski /doc/api/group_level_variables.md @marcel.amirault /doc/api/group_milestones.md @msedlakjakubowski -/doc/api/group_protected_branches.md @aqualls @msedlakjakubowski +/doc/api/group_protected_branches.md @msedlakjakubowski /doc/api/group_protected_environments.md @phillipwells /doc/api/group_relations_export.md @eread @ashrafkhamis /doc/api/group_releases.md @phillipwells @@ -622,7 +619,7 @@ lib/gitlab/checks/** /doc/api/iterations.md @msedlakjakubowski /doc/api/job_artifacts.md @marcel.amirault /doc/api/jobs.md @marcel.amirault -/doc/api/keys.md @aqualls @msedlakjakubowski +/doc/api/keys.md @msedlakjakubowski /doc/api/labels.md @msedlakjakubowski /doc/api/license.md @fneill /doc/api/linked_epics.md @msedlakjakubowski @@ -630,7 +627,7 @@ lib/gitlab/checks/** /doc/api/markdown.md @msedlakjakubowski /doc/api/member_roles.md @jglassman1 /doc/api/members.md @jglassman1 -/doc/api/merge_request_approvals.md @aqualls @msedlakjakubowski +/doc/api/merge_request_approvals.md @msedlakjakubowski /doc/api/merge_request_context_commits.md @aqualls /doc/api/merge_requests.md @aqualls /doc/api/merge_trains.md @marcel.amirault @@ -652,27 +649,27 @@ lib/gitlab/checks/** /doc/api/plan_limits.md @jglassman1 /doc/api/product_analytics.md @lciutacu /doc/api/project_access_tokens.md @jglassman1 -/doc/api/project_aliases.md @aqualls @msedlakjakubowski -/doc/api/project_badges.md @aqualls @msedlakjakubowski +/doc/api/project_aliases.md @msedlakjakubowski +/doc/api/project_badges.md @msedlakjakubowski /doc/api/project_clusters.md @phillipwells /doc/api/project_import_export.md @eread @ashrafkhamis /doc/api/project_job_token_scopes.md @marcel.amirault /doc/api/project_level_variables.md @marcel.amirault /doc/api/project_relations_export.md @eread @ashrafkhamis /doc/api/project_repository_storage_moves.md @eread -/doc/api/project_snippets.md @aqualls @msedlakjakubowski -/doc/api/project_statistics.md @aqualls @msedlakjakubowski -/doc/api/project_templates.md @aqualls @msedlakjakubowski +/doc/api/project_snippets.md @msedlakjakubowski +/doc/api/project_statistics.md @msedlakjakubowski +/doc/api/project_templates.md @msedlakjakubowski /doc/api/project_vulnerabilities.md @rdickenson /doc/api/projects.md @lciutacu -/doc/api/protected_branches.md @aqualls @msedlakjakubowski +/doc/api/protected_branches.md @msedlakjakubowski /doc/api/protected_environments.md @phillipwells -/doc/api/protected_tags.md @aqualls @msedlakjakubowski +/doc/api/protected_tags.md @msedlakjakubowski /doc/api/releases/ @phillipwells -/doc/api/remote_mirrors.md @aqualls @msedlakjakubowski -/doc/api/repositories.md @aqualls @msedlakjakubowski -/doc/api/repository_files.md @aqualls @msedlakjakubowski -/doc/api/repository_submodules.md @aqualls @msedlakjakubowski +/doc/api/remote_mirrors.md @msedlakjakubowski +/doc/api/repositories.md @msedlakjakubowski +/doc/api/repository_files.md @msedlakjakubowski +/doc/api/repository_submodules.md @msedlakjakubowski /doc/api/resource_groups.md @phillipwells /doc/api/resource_iteration_events.md @msedlakjakubowski /doc/api/resource_label_events.md @eread @@ -688,15 +685,15 @@ lib/gitlab/checks/** /doc/api/secure_files.md @marcel.amirault /doc/api/settings.md @jglassman1 /doc/api/sidekiq_metrics.md @axil -/doc/api/snippet_repository_storage_moves.md @aqualls @msedlakjakubowski -/doc/api/snippets.md @aqualls @msedlakjakubowski +/doc/api/snippet_repository_storage_moves.md @msedlakjakubowski +/doc/api/snippets.md @msedlakjakubowski /doc/api/statistics.md @jglassman1 /doc/api/status_checks.md @eread -/doc/api/suggestions.md @aqualls @msedlakjakubowski +/doc/api/suggestions.md @msedlakjakubowski /doc/api/system_hooks.md @eread @ashrafkhamis -/doc/api/tags.md @aqualls @msedlakjakubowski -/doc/api/templates/dockerfiles.md @aqualls @msedlakjakubowski -/doc/api/templates/gitignores.md @aqualls @msedlakjakubowski +/doc/api/tags.md @msedlakjakubowski +/doc/api/templates/dockerfiles.md @msedlakjakubowski +/doc/api/templates/gitignores.md @msedlakjakubowski /doc/api/templates/gitlab_ci_ymls.md @marcel.amirault /doc/api/templates/licenses.md @rdickenson /doc/api/todos.md @msedlakjakubowski @@ -709,6 +706,7 @@ lib/gitlab/checks/** /doc/api/vulnerability_exports.md @rdickenson /doc/api/vulnerability_findings.md @rdickenson /doc/architecture/blueprints/cells/ @lciutacu +/doc/architecture/blueprints/ci_builds_runner_fleet_metrics/ @fneill /doc/architecture/blueprints/database/scalability/patterns/ @aqualls /doc/architecture/blueprints/database_scaling/ @aqualls /doc/ci/ @marcel.amirault @@ -731,7 +729,7 @@ lib/gitlab/checks/** /doc/development/auto_devops.md @phillipwells /doc/development/avoiding_required_stops.md @axil /doc/development/backend/ @sselhorn -/doc/development/backend/create_source_code_be/ @aqualls @msedlakjakubowski +/doc/development/backend/create_source_code_be/ @msedlakjakubowski /doc/development/build_test_package.md @axil /doc/development/bulk_import.md @eread @ashrafkhamis /doc/development/cached_queries.md @jglassman1 @@ -739,13 +737,13 @@ lib/gitlab/checks/** /doc/development/chatops_on_gitlabcom.md @phillipwells /doc/development/cicd/ @marcel.amirault /doc/development/code_intelligence/ @aqualls -/doc/development/code_owners/ @aqualls @msedlakjakubowski +/doc/development/code_owners/ @msedlakjakubowski /doc/development/contributing/ @sselhorn /doc/development/database/ @aqualls /doc/development/database/filtering_by_label.md @msedlakjakubowski /doc/development/database/multiple_databases.md @lciutacu /doc/development/database_review.md @aqualls -/doc/development/developing_with_solargraph.md @aqualls @msedlakjakubowski +/doc/development/developing_with_solargraph.md @msedlakjakubowski /doc/development/development_processes.md @sselhorn /doc/development/distributed_tracing.md @msedlakjakubowski /doc/development/distribution/ @axil @@ -754,17 +752,17 @@ lib/gitlab/checks/** /doc/development/fe_guide/ @sselhorn /doc/development/fe_guide/customizable_dashboards.md @lciutacu /doc/development/fe_guide/merge_request_widget_extensions.md @aqualls -/doc/development/fe_guide/source_editor.md @aqualls @msedlakjakubowski +/doc/development/fe_guide/source_editor.md @msedlakjakubowski /doc/development/feature_categorization/ @sselhorn /doc/development/feature_development.md @sselhorn /doc/development/feature_flags/ @sselhorn -/doc/development/fips_compliance.md @aqualls @msedlakjakubowski +/doc/development/fips_compliance.md @msedlakjakubowski /doc/development/geo.md @axil /doc/development/geo/ @axil /doc/development/git_object_deduplication.md @eread /doc/development/gitaly.md @eread /doc/development/gitlab_flavored_markdown/ @ashrafkhamis -/doc/development/gitlab_shell/ @aqualls @msedlakjakubowski +/doc/development/gitlab_shell/ @msedlakjakubowski /doc/development/graphql_guide/ @eread @ashrafkhamis /doc/development/graphql_guide/batchloader.md @aqualls /doc/development/i18n/ @eread @ashrafkhamis @@ -776,17 +774,17 @@ lib/gitlab/checks/** /doc/development/integrations/secure.md @rdickenson /doc/development/integrations/secure_partner_integration.md @rdickenson /doc/development/internal_analytics/ @lciutacu -/doc/development/internal_api/ @aqualls @msedlakjakubowski +/doc/development/internal_api/ @msedlakjakubowski /doc/development/internal_users.md @sselhorn /doc/development/issuable-like-models.md @msedlakjakubowski /doc/development/issue_types.md @msedlakjakubowski /doc/development/kubernetes.md @phillipwells /doc/development/labels/ @sselhorn -/doc/development/lfs.md @aqualls @msedlakjakubowski +/doc/development/lfs.md @msedlakjakubowski /doc/development/logging.md @msedlakjakubowski /doc/development/maintenance_mode.md @axil /doc/development/merge_request_concepts/ @aqualls -/doc/development/merge_request_concepts/rate_limits.md @aqualls @msedlakjakubowski +/doc/development/merge_request_concepts/rate_limits.md @msedlakjakubowski /doc/development/migration_style_guide.md @aqualls /doc/development/navigation_sidebar.md @sselhorn /doc/development/omnibus.md @axil @@ -797,9 +795,9 @@ lib/gitlab/checks/** /doc/development/permissions.md @jglassman1 /doc/development/permissions/ @jglassman1 /doc/development/policies.md @jglassman1 -/doc/development/project_templates.md @aqualls @msedlakjakubowski +/doc/development/project_templates.md @msedlakjakubowski /doc/development/prometheus_metrics.md @msedlakjakubowski -/doc/development/rails_endpoints/ @aqualls @msedlakjakubowski +/doc/development/rails_endpoints/ @msedlakjakubowski /doc/development/real_time.md @jglassman1 /doc/development/rubocop_development_guide.md @sselhorn /doc/development/search/ @ashrafkhamis @@ -812,10 +810,10 @@ lib/gitlab/checks/** /doc/development/value_stream_analytics/ @lciutacu /doc/development/work_items.md @msedlakjakubowski /doc/development/work_items_widgets.md @msedlakjakubowski -/doc/development/workhorse/ @aqualls @msedlakjakubowski +/doc/development/workhorse/ @msedlakjakubowski /doc/downgrade_ee_to_ce/ @axil /doc/drawers/ @ashrafkhamis -/doc/gitlab-basics/ @aqualls @msedlakjakubowski +/doc/gitlab-basics/ @msedlakjakubowski /doc/install/ @axil /doc/install/postgresql_extensions.md @aqualls /doc/integration/ @jglassman1 @@ -833,7 +831,7 @@ lib/gitlab/checks/** /doc/integration/mattermost/ @axil /doc/integration/partner_marketplace.md @fneill /doc/integration/recaptcha.md @phillipwells -/doc/integration/sourcegraph.md @aqualls @msedlakjakubowski +/doc/integration/sourcegraph.md @msedlakjakubowski /doc/integration/trello_power_up.md @eread @ashrafkhamis /doc/integration/vault.md @phillipwells /doc/operations/feature_flags.md @phillipwells @@ -842,7 +840,7 @@ lib/gitlab/checks/** /doc/policy/ @axil /doc/raketasks/ @axil /doc/raketasks/spdx.md @rdickenson -/doc/raketasks/x509_signatures.md @aqualls @msedlakjakubowski +/doc/raketasks/x509_signatures.md @msedlakjakubowski /doc/security/ @jglassman1 /doc/security/email_verification.md @phillipwells /doc/security/identity_verification.md @phillipwells @@ -850,8 +848,7 @@ lib/gitlab/checks/** /doc/topics/authentication/ @jglassman1 /doc/topics/autodevops/ @phillipwells /doc/topics/data_seeder.md @sselhorn -/doc/topics/git/ @aqualls @msedlakjakubowski -/doc/topics/gitlab_flow.md @aqualls @msedlakjakubowski +/doc/topics/git/ @msedlakjakubowski /doc/topics/offline/ @axil /doc/topics/plan_and_track.md @msedlakjakubowski /doc/tutorials/ @kpaizee @@ -862,6 +859,7 @@ lib/gitlab/checks/** /doc/tutorials/convert_personal_namespace_to_group/ @lciutacu /doc/tutorials/dependency_scanning.md @rdickenson /doc/tutorials/fuzz_testing/ @rdickenson +/doc/tutorials/install_gitlab_single_node/ @axil /doc/tutorials/move_personal_project_to_group/ @lciutacu /doc/tutorials/protected_workflow/ @aqualls /doc/tutorials/scan_result_policy/ @rdickenson @@ -870,12 +868,11 @@ lib/gitlab/checks/** /doc/user/analytics/ @lciutacu /doc/user/analytics/ci_cd_analytics.md @phillipwells /doc/user/application_security/ @rdickenson -/doc/user/asciidoc.md @aqualls @msedlakjakubowski +/doc/user/asciidoc.md @aqualls /doc/user/award_emojis.md @msedlakjakubowski /doc/user/clusters/ @phillipwells /doc/user/compliance/ @rdickenson /doc/user/compliance/compliance_center/ @eread -/doc/user/compliance/compliance_report/ @eread /doc/user/compliance/index.md @eread /doc/user/crm/ @msedlakjakubowski /doc/user/discussions/ @aqualls @@ -884,7 +881,7 @@ lib/gitlab/checks/** /doc/user/group/ @lciutacu /doc/user/group/clusters/ @phillipwells /doc/user/group/compliance_frameworks.md @eread -/doc/user/group/custom_project_templates.md @aqualls @msedlakjakubowski +/doc/user/group/custom_project_templates.md @aqualls /doc/user/group/epics/ @msedlakjakubowski /doc/user/group/import/ @eread @ashrafkhamis /doc/user/group/issues_analytics/ @msedlakjakubowski @@ -918,19 +915,19 @@ lib/gitlab/checks/** /doc/user/profile/notifications.md @msedlakjakubowski /doc/user/profile/personal_access_tokens.md @jglassman1 /doc/user/profile/user_passwords.md @jglassman1 -/doc/user/project/autocomplete_characters.md @aqualls @msedlakjakubowski +/doc/user/project/autocomplete_characters.md @aqualls /doc/user/project/badges.md @lciutacu -/doc/user/project/changelogs.md @aqualls @msedlakjakubowski +/doc/user/project/changelogs.md @aqualls /doc/user/project/clusters/ @phillipwells /doc/user/project/code_intelligence.md @aqualls -/doc/user/project/codeowners/ @aqualls @msedlakjakubowski +/doc/user/project/codeowners/ @aqualls /doc/user/project/deploy_boards.md @phillipwells /doc/user/project/deploy_keys/ @phillipwells /doc/user/project/deploy_tokens/ @phillipwells /doc/user/project/description_templates.md @msedlakjakubowski -/doc/user/project/file_lock.md @aqualls @msedlakjakubowski -/doc/user/project/git_attributes.md @aqualls @msedlakjakubowski -/doc/user/project/highlighting.md @aqualls @msedlakjakubowski +/doc/user/project/file_lock.md @aqualls +/doc/user/project/git_attributes.md @aqualls +/doc/user/project/highlighting.md @aqualls /doc/user/project/import/ @eread @ashrafkhamis /doc/user/project/import/jira.md @msedlakjakubowski /doc/user/project/index.md @lciutacu @@ -942,33 +939,29 @@ lib/gitlab/checks/** /doc/user/project/labels.md @msedlakjakubowski /doc/user/project/members/ @lciutacu /doc/user/project/merge_requests/ @aqualls -/doc/user/project/merge_requests/approvals/ @aqualls @msedlakjakubowski -/doc/user/project/merge_requests/cherry_pick_changes.md @aqualls @msedlakjakubowski /doc/user/project/merge_requests/csv_export.md @eread -/doc/user/project/merge_requests/methods/ @aqualls @msedlakjakubowski -/doc/user/project/merge_requests/squash_and_merge.md @aqualls @msedlakjakubowski /doc/user/project/merge_requests/status_checks.md @eread /doc/user/project/milestones/ @msedlakjakubowski /doc/user/project/organize_work_with_projects.md @lciutacu -/doc/user/project/protected_branches.md @aqualls @msedlakjakubowski -/doc/user/project/protected_tags.md @aqualls @msedlakjakubowski -/doc/user/project/push_options.md @aqualls @msedlakjakubowski +/doc/user/project/protected_branches.md @aqualls +/doc/user/project/protected_tags.md @aqualls +/doc/user/project/push_options.md @aqualls /doc/user/project/quick_actions.md @msedlakjakubowski /doc/user/project/releases/ @phillipwells /doc/user/project/releases/release_evidence.md @eread /doc/user/project/remote_development/ @ashrafkhamis -/doc/user/project/repository/ @aqualls @msedlakjakubowski +/doc/user/project/repository/ @aqualls /doc/user/project/repository/file_finder.md @ashrafkhamis /doc/user/project/repository/managing_large_repositories.md @axil /doc/user/project/repository/vscode.md @ashrafkhamis /doc/user/project/repository/web_editor.md @ashrafkhamis /doc/user/project/requirements/ @msedlakjakubowski -/doc/user/project/service_desk.md @msedlakjakubowski +/doc/user/project/service_desk/ @msedlakjakubowski /doc/user/project/settings/import_export.md @eread @ashrafkhamis /doc/user/project/settings/import_export_troubleshooting.md @eread @ashrafkhamis /doc/user/project/settings/index.md @lciutacu /doc/user/project/settings/project_access_tokens.md @jglassman1 -/doc/user/project/system_notes.md @aqualls @msedlakjakubowski +/doc/user/project/system_notes.md @aqualls /doc/user/project/time_tracking.md @msedlakjakubowski /doc/user/project/web_ide/ @ashrafkhamis /doc/user/project/working_with_projects.md @lciutacu @@ -978,7 +971,7 @@ lib/gitlab/checks/** /doc/user/search/ @ashrafkhamis /doc/user/search/command_palette.md @sselhorn /doc/user/shortcuts.md @ashrafkhamis -/doc/user/snippets.md @aqualls @msedlakjakubowski +/doc/user/snippets.md @aqualls /doc/user/ssh.md @jglassman1 /doc/user/tasks.md @msedlakjakubowski /doc/user/todos.md @msedlakjakubowski diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index e20f211bd33..dc519aa803b 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -307,7 +307,7 @@ services: - !reference [.zoekt-services, services] - name: elasticsearch:7.17.6 - command: ["elasticsearch", "-E", "discovery.type=single-node", "-E", "xpack.security.enabled=false"] + command: ["elasticsearch", "-E", "discovery.type=single-node", "-E", "xpack.security.enabled=false", "-E", "cluster.routing.allocation.disk.threshold_enabled=false"] .use-pg12-es7-ee: extends: @@ -350,6 +350,7 @@ variables: ES_SETTING_DISCOVERY_TYPE: "single-node" ES_SETTING_XPACK_SECURITY_ENABLED: "false" + ES_SETTING_CLUSTER_ROUTING_ALLOCATION_DISK_THRESHOLD__ENABLED: "false" .use-pg13-es8-ee: extends: @@ -383,7 +384,7 @@ - !reference [.zoekt-services, services] - name: opensearchproject/opensearch:1.3.5 alias: elasticsearch - command: ["bin/opensearch", "-E", "discovery.type=single-node", "-E", "plugins.security.disabled=true"] + command: ["bin/opensearch", "-E", "discovery.type=single-node", "-E", "plugins.security.disabled=true", "-E", "cluster.routing.allocation.disk.threshold_enabled=false"] .use-pg13-opensearch1-ee: extends: @@ -414,7 +415,7 @@ - !reference [.zoekt-services, services] - name: opensearchproject/opensearch:2.2.1 alias: elasticsearch - command: ["bin/opensearch", "-E", "discovery.type=single-node", "-E", "plugins.security.disabled=true"] + command: ["bin/opensearch", "-E", "discovery.type=single-node", "-E", "plugins.security.disabled=true", "-E", "cluster.routing.allocation.disk.threshold_enabled=false"] .use-pg13-opensearch2-ee: extends: diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index a6d6351cee5..40b2f3f41d4 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -2756,8 +2756,6 @@ - "scripts/rspec_helpers.sh" - <<: *if-merge-request changes: - - "gems/gitlab-rspec/**/*" - - "gems/rspec_flaky/**/*" - "scripts/flaky_examples/prune-old-flaky-examples" ################### diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index 7c71d1e9f4c..dcd976bd2be 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -v16.3.0-rc4 +v16.3.0-rc5 diff --git a/app/assets/stylesheets/framework/mixins.scss b/app/assets/stylesheets/framework/mixins.scss index 529f6acaf04..aee06a04351 100644 --- a/app/assets/stylesheets/framework/mixins.scss +++ b/app/assets/stylesheets/framework/mixins.scss @@ -474,3 +474,10 @@ margin-left: $gl-padding; } } + +@mixin btn-svg { + height: $gl-padding; + width: $gl-padding; + top: 0; + vertical-align: text-top; +} diff --git a/app/assets/stylesheets/page_bundles/profile.scss b/app/assets/stylesheets/page_bundles/profile.scss index dfc86a73635..dbe82f583d1 100644 --- a/app/assets/stylesheets/page_bundles/profile.scss +++ b/app/assets/stylesheets/page_bundles/profile.scss @@ -1,5 +1,5 @@ @import 'mixins_and_variables_and_functions'; -@import 'framework/buttons'; +@import 'framework/mixins'; .edit-user { .emoji-menu-toggle-button { diff --git a/app/models/note.rb b/app/models/note.rb index 92d4daeab3e..913d008003c 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -149,7 +149,7 @@ class Note < ApplicationRecord scope :with_api_entity_associations, -> { preload(:note_diff_file, :author) } scope :inc_relations_for_view, ->(noteable = nil) do relations = [{ project: :group }, { author: :status }, :updated_by, :resolved_by, - :award_emoji, { system_note_metadata: :description_version }, :suggestions] + :award_emoji, :note_metadata, { system_note_metadata: :description_version }, :suggestions] if noteable.nil? || DiffNote.noteable_types.include?(noteable.class.name) relations += [:note_diff_file, :diff_note_positions] diff --git a/app/services/metrics/dashboard/gitlab_alert_embed_service.rb b/app/services/metrics/dashboard/gitlab_alert_embed_service.rb deleted file mode 100644 index 6bf46fbc80e..00000000000 --- a/app/services/metrics/dashboard/gitlab_alert_embed_service.rb +++ /dev/null @@ -1,76 +0,0 @@ -# frozen_string_literal: true - -# Responsible for returning an embed containing the specified -# metrics chart for an alert. Creates panels based on the -# matching metric stored in the database. -# -# Use Gitlab::Metrics::Dashboard::Finder to retrieve dashboards. -module Metrics - module Dashboard - class GitlabAlertEmbedService < ::Metrics::Dashboard::BaseEmbedService - include Gitlab::Metrics::Dashboard::Defaults - include Gitlab::Utils::StrongMemoize - - SEQUENCE = [ - STAGES::PanelIdsInserter - ].freeze - - class << self - # Determines whether the provided params are sufficient - # to uniquely identify a panel composed of user-defined - # custom metrics from the DB. - def valid_params?(params) - [ - embedded?(params[:embedded]), - params[:prometheus_alert_id].is_a?(Integer) - ].all? - end - end - - def raw_dashboard - panels_not_found!(alert_id: alert_id) unless alert && prometheus_metric - - { 'panel_groups' => [{ 'panels' => [panel] }] } - end - - private - - def allowed? - Ability.allowed?(current_user, :read_prometheus_alerts, project) - end - - def alert_id - params[:prometheus_alert_id] - end - - def alert - strong_memoize(:alert) do - Projects::Prometheus::AlertsFinder.new(id: alert_id).execute.first - end - end - - def process_params - params.merge(environment: alert.environment) - end - - def prometheus_metric - strong_memoize(:prometheus_metric) do - PrometheusMetricsFinder.new(id: alert.prometheus_metric_id).execute.first - end - end - - def panel - { - title: prometheus_metric.title, - y_label: prometheus_metric.y_label, - metrics: [prometheus_metric.to_metric_hash], - type: DEFAULT_PANEL_TYPE - } - end - - def sequence - SEQUENCE - end - end - end -end diff --git a/app/workers/integrations/group_mention_worker.rb b/app/workers/integrations/group_mention_worker.rb index 6cde1657ccd..cbf70dc5c6a 100644 --- a/app/workers/integrations/group_mention_worker.rb +++ b/app/workers/integrations/group_mention_worker.rb @@ -22,19 +22,19 @@ module Integrations mentionable = case mentionable_type when 'Issue' - Issue.find(mentionable_id) + Issue.find_by_id(mentionable_id) when 'MergeRequest' - MergeRequest.find(mentionable_id) + MergeRequest.find_by_id(mentionable_id) + else + Sidekiq.logger.error( + message: 'Integrations::GroupMentionWorker: mentionable not supported', + mentionable_type: mentionable_type, + mentionable_id: mentionable_id + ) + nil end - if mentionable.nil? - Sidekiq.logger.error( - message: 'Integrations::GroupMentionWorker: mentionable not supported', - mentionable_type: mentionable_type, - mentionable_id: mentionable_id - ) - return - end + return if mentionable.nil? Integrations::GroupMentionService.new(mentionable, hook_data: hook_data, is_confidential: is_confidential).execute end diff --git a/doc/administration/audit_event_streaming/audit_event_types.md b/doc/administration/audit_event_streaming/audit_event_types.md index 1a2bf0df2d9..caef9ad08e0 100644 --- a/doc/administration/audit_event_streaming/audit_event_types.md +++ b/doc/administration/audit_event_streaming/audit_event_types.md @@ -27,6 +27,9 @@ Audit event types are used to [filter streamed audit events](index.md#update-eve | [`audit_events_streaming_headers_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is created | **{check-circle}** Yes | **{check-circle}** Yes | `audit_events` | [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | | [`audit_events_streaming_headers_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is deleted | **{check-circle}** Yes | **{check-circle}** Yes | `audit_events` | [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | | [`audit_events_streaming_headers_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92068) | Triggered when a streaming header for audit events is updated | **{check-circle}** Yes | **{check-circle}** Yes | `compliance_management` | [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) | +| [`audit_events_streaming_instance_headers_create`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125870) | Triggered when a streaming header for instance level external audit event destination is created | **{check-circle}** Yes | **{check-circle}** Yes | `audit_events` | [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | +| [`audit_events_streaming_instance_headers_destroy`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127228) | Triggered when a streaming header for instance level external audit event destination is deleted | **{check-circle}** Yes | **{check-circle}** Yes | `audit_events` | [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | +| [`audit_events_streaming_instance_headers_update`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127228) | Triggered when a streaming header for instance level external audit event destination is updated | **{check-circle}** Yes | **{check-circle}** Yes | `audit_events` | [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/417433) | | [`authenticated_with_group_saml`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28575) | Triggered after successfully signing in with SAML authentication | **{check-circle}** Yes | **{check-circle}** Yes | `user_management` | [12.10](https://gitlab.com/gitlab-org/gitlab/-/issues/35710) | | [`ban_user`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116103) | Event triggered on user ban action | **{check-circle}** Yes | **{check-circle}** Yes | `user_management` | [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/377620) | | [`change_membership_state`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87924) | Event triggered on a users membership is updated | **{check-circle}** Yes | **{check-circle}** Yes | `user_management` | [15.1](https://gitlab.com/gitlab-org/gitlab/-/issues/362200) | @@ -91,6 +94,7 @@ Audit event types are used to [filter streamed audit events](index.md#update-eve | [`group_access_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failing to create a group access token | **{check-circle}** Yes | **{check-circle}** Yes | `subgroup` | [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | | [`group_access_token_deleted`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on deleting a group access token | **{check-circle}** Yes | **{check-circle}** Yes | `subgroup` | [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | | [`group_access_token_deletion_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92225) | Event triggered on failure to delete a group access token | **{check-circle}** Yes | **{check-circle}** Yes | `subgroup` | [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | +| [`group_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121005) | Event triggered when a group is created. | **{check-circle}** Yes | **{check-circle}** Yes | `groups_and_projects` | [16.3](https://gitlab.com/gitlab-org/gitlab/-/issues/411595) | | [`group_deletion_marked`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116986) | Event triggered when a group is marked for deletion. | **{check-circle}** Yes | **{check-circle}** Yes | `compliance_management` | [15.11](https://gitlab.com/gitlab-org/gitlab/-/issues/374106) | | [`group_deploy_token_created`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when a groups deploy token is created | **{check-circle}** Yes | **{check-circle}** Yes | `continuous_delivery` | [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | | [`group_deploy_token_creation_failed`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93091) | Audit event triggered when a groups deploy token fails to create | **{check-circle}** Yes | **{check-circle}** Yes | `continuous_delivery` | [15.3](https://gitlab.com/gitlab-org/gitlab/-/issues/363087) | diff --git a/doc/administration/audit_event_streaming/graphql_api.md b/doc/administration/audit_event_streaming/graphql_api.md index 2bfb8353710..f69ccdacdaf 100644 --- a/doc/administration/audit_event_streaming/graphql_api.md +++ b/doc/administration/audit_event_streaming/graphql_api.md @@ -309,6 +309,8 @@ Event type filters are removed if: Manage Google Cloud Logging destinations for top-level groups. +Before setting up Google Cloud Logging streaming audit events, you must satisfy [the prerequisites](index.md#prerequisites). + #### Add a new Google Cloud Logging destination Add a new Google Cloud Logging configuration destination to a top-level group. diff --git a/doc/administration/audit_event_streaming/index.md b/doc/administration/audit_event_streaming/index.md index 9cc70f4b701..df1d146062b 100644 --- a/doc/administration/audit_event_streaming/index.md +++ b/doc/administration/audit_event_streaming/index.md @@ -186,11 +186,13 @@ To override the `content-type` header default value for a top-level group stream Manage Google Cloud Logging destinations for top-level groups. +#### Prerequisites + Before setting up Google Cloud Logging streaming audit events, you must: 1. Create a service account for Google Cloud with the appropriate credentials and permissions. This account is used to configure audit log streaming authentication. For more information, see [Creating and managing service accounts in the Google Cloud documentation](https://cloud.google.com/iam/docs/service-accounts-create#creating). -1. Enable the **Logging Admin** role for the service account to enable logging on Google Cloud. For more information, see [Access control with IAM](https://cloud.google.com/logging/docs/access-control#permissions_and_roles). +1. Enable the **Logs Writer** role for the service account to enable logging on Google Cloud. For more information, see [Access control with IAM](https://cloud.google.com/logging/docs/access-control#logging.logWriter). 1. Create a JSON key for the service account. For more information, see [Creating a service account key](https://cloud.google.com/iam/docs/keys-create-delete#creating). #### Add a new Google Cloud Logging destination diff --git a/doc/ci/docker/using_docker_build.md b/doc/ci/docker/using_docker_build.md index 97b4b6a428b..57e05cadca4 100644 --- a/doc/ci/docker/using_docker_build.md +++ b/doc/ci/docker/using_docker_build.md @@ -91,7 +91,7 @@ You should use Docker-in-Docker with TLS enabled, which is supported by [GitLab.com shared runners](../runners/index.md). You should always pin a specific version of the image, like `docker:20.10.16`. -If you use a tag like `docker:stable`, you have no control over which version is used. +If you use a tag like `docker:latest`, you have no control over which version is used. This can cause incompatibility problems when new versions are released. #### Use the Docker executor with Docker-in-Docker diff --git a/doc/ci/services/index.md b/doc/ci/services/index.md index f4c90934e06..ce9b322ff9b 100644 --- a/doc/ci/services/index.md +++ b/doc/ci/services/index.md @@ -48,7 +48,7 @@ socket or `localhost`. Read more in [accessing the services](#accessing-the-serv ## How the health check of services works Services are designed to provide additional features which are **network accessible**. -They may be a database like MySQL, or Redis, and even `docker:stable-dind` which +They may be a database like MySQL, or Redis, and even `docker:dind` which allows you to use Docker-in-Docker. It can be practically anything that's required for the CI/CD job to proceed, and is accessed by network. diff --git a/doc/ci/testing/code_quality.md b/doc/ci/testing/code_quality.md index 9a45c840d54..97a21ab57b7 100644 --- a/doc/ci/testing/code_quality.md +++ b/doc/ci/testing/code_quality.md @@ -136,7 +136,7 @@ To use private runners: ```shell $ gitlab-runner register --executor "docker" \ - --docker-image="docker:stable" \ + --docker-image="docker:latest" \ --url "https://gitlab.com/" \ --description "cq-sans-dind" \ --tag-list "cq-sans-dind" \ @@ -171,7 +171,7 @@ To use private runners: builds_dir = "/tmp/builds" [runners.docker] tls_verify = false - image = "docker:stable" + image = "docker:latest" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false diff --git a/doc/development/documentation/styleguide/index.md b/doc/development/documentation/styleguide/index.md index 2d5963f82cc..f5d2ce73086 100644 --- a/doc/development/documentation/styleguide/index.md +++ b/doc/development/documentation/styleguide/index.md @@ -446,17 +446,23 @@ When the docs are generated, the output is: To stop the command, press Control+C. +### Buttons in the UI + +For elements with a visible label, use the label in bold with matching case. + +For example: `Select **Cancel**.` + ### Text entered in the UI If you want the user to type something in the UI, use backticks. For example: ```plaintext -In the **Commit message** box, type `This is my merge request`. +In the **Commit message** text box, type `This is my merge request`. ``` Backticks are more precise than quotes. For example, in this string: -- In the **Commit message** box, type "This is my merge request." +- In the **Commit message** text box, type "This is my merge request." It's not clear whether the user should include the period in the string. @@ -1552,20 +1558,6 @@ Do not copy and paste content from other sources unless it is a limited quotation with the source cited. Typically it is better to rephrase relevant information in your own words or link out to the other source. -## Terms - -To maintain consistency through GitLab documentation, use these styles and terms. - -### Describe UI elements - -Follow these styles when you're describing user interface elements in an -application: - -- For elements with a visible label, use that label in bold with matching case. - For example, `Select **Cancel**`. -- For elements with a tooltip or hover label, use that label in bold with - matching case. For example, `Select **Add status emoji**`. - ## Products and features Refer to the information in this section when describing products and features @@ -1871,8 +1863,3 @@ It renders as: ``` ::EndTabs - -## Feature flags - -Learn how to [document features deployed behind flags](../feature_flags.md). For -guidance on developing GitLab with feature flags, see [Feature flags in development of GitLab](../../feature_flags/index.md). diff --git a/doc/user/application_security/container_scanning/index.md b/doc/user/application_security/container_scanning/index.md index 791a73bfdc2..3cdd501101b 100644 --- a/doc/user/application_security/container_scanning/index.md +++ b/doc/user/application_security/container_scanning/index.md @@ -602,7 +602,7 @@ variables: SOURCE_IMAGE: registry.gitlab.com/security-products/container-scanning:6 TARGET_IMAGE: $CI_REGISTRY/namespace/container-scanning -image: docker:stable +image: docker:latest update-scanner-image: services: diff --git a/lib/gitlab/database/schema_validation/schema_inconsistency.rb b/lib/gitlab/database/schema_validation/schema_inconsistency.rb deleted file mode 100644 index 9f39db5b4c0..00000000000 --- a/lib/gitlab/database/schema_validation/schema_inconsistency.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -module Gitlab - module Database - module SchemaValidation - class SchemaInconsistency < ApplicationRecord - self.table_name = :schema_inconsistencies - - belongs_to :issue - - validates :object_name, :valitador_name, :table_name, :diff, presence: true - - scope :with_open_issues, -> { joins(:issue).where('issue.state_id': Issue.available_states[:opened]) } - end - end - end -end diff --git a/lib/gitlab/metrics/dashboard/service_selector.rb b/lib/gitlab/metrics/dashboard/service_selector.rb index 6f366193159..9fb10d6a0bd 100644 --- a/lib/gitlab/metrics/dashboard/service_selector.rb +++ b/lib/gitlab/metrics/dashboard/service_selector.rb @@ -13,7 +13,6 @@ module Gitlab include Gitlab::Utils::StrongMemoize SERVICES = [ - ::Metrics::Dashboard::GitlabAlertEmbedService, ::Metrics::Dashboard::CustomMetricEmbedService, ::Metrics::Dashboard::DefaultEmbedService, ::Metrics::Dashboard::SystemDashboardService diff --git a/lib/tasks/gitlab/tw/codeowners.rake b/lib/tasks/gitlab/tw/codeowners.rake index afe2c564247..68393cb31d2 100644 --- a/lib/tasks/gitlab/tw/codeowners.rake +++ b/lib/tasks/gitlab/tw/codeowners.rake @@ -71,7 +71,7 @@ namespace :tw do CodeOwnerRule.new('Runner', '@fneill'), CodeOwnerRule.new('Runner SaaS', '@fneill'), CodeOwnerRule.new('Security Policies', '@rdickenson'), - CodeOwnerRule.new('Source Code', '@aqualls @msedlakjakubowski'), + CodeOwnerRule.new('Source Code', ->(path) { path.start_with?('/doc/user') ? '@aqualls' : '@msedlakjakubowski' }), CodeOwnerRule.new('Static Analysis', '@rdickenson'), CodeOwnerRule.new('Style Guide', '@sselhorn'), CodeOwnerRule.new('Tenant Scale', '@lciutacu'), @@ -100,8 +100,14 @@ namespace :tw do end end - def self.writer_for_group(category) - CODE_OWNER_RULES.find { |rule| rule.category == category }&.writer + def self.writer_for_group(category, path) + writer = CODE_OWNER_RULES.find { |rule| rule.category == category }&.writer + + if writer.is_a?(String) || writer.nil? + writer + else + writer.call(path) + end end errors = [] @@ -118,7 +124,7 @@ namespace :tw do next end - writer = writer_for_group(document.group) + writer = writer_for_group(document.group, relative_file) next unless writer mappings << DocumentOwnerMapping.new(relative_file, writer) if document.has_a_valid_group? diff --git a/spec/factories/gitlab/database/background_migration/schema_inconsistencies.rb b/spec/factories/gitlab/database/background_migration/schema_inconsistencies.rb deleted file mode 100644 index 1d2c460144d..00000000000 --- a/spec/factories/gitlab/database/background_migration/schema_inconsistencies.rb +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -FactoryBot.define do - factory :schema_inconsistency, class: '::Gitlab::Database::SchemaValidation::SchemaInconsistency' do - issue factory: :issue - - object_name { 'name' } - table_name { 'table' } - valitador_name { 'validator' } - diff { 'diff' } - end -end diff --git a/spec/lib/gitlab/database/schema_validation/schema_inconsistency_spec.rb b/spec/lib/gitlab/database/schema_validation/schema_inconsistency_spec.rb deleted file mode 100644 index fbaf8474f22..00000000000 --- a/spec/lib/gitlab/database/schema_validation/schema_inconsistency_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Gitlab::Database::SchemaValidation::SchemaInconsistency, type: :model, feature_category: :database do - it { is_expected.to be_a ApplicationRecord } - - describe 'associations' do - it { is_expected.to belong_to(:issue) } - end - - describe "Validations" do - it { is_expected.to validate_presence_of(:object_name) } - it { is_expected.to validate_presence_of(:valitador_name) } - it { is_expected.to validate_presence_of(:table_name) } - it { is_expected.to validate_presence_of(:diff) } - end - - describe 'scopes' do - describe '.with_open_issues' do - subject(:inconsistencies) { described_class.with_open_issues } - - let(:closed_issue) { create(:issue, :closed) } - let(:open_issue) { create(:issue, :opened) } - - let!(:schema_inconsistency_with_issue_closed) do - create(:schema_inconsistency, object_name: 'index_name', table_name: 'achievements', - valitador_name: 'different_definition_indexes', issue: closed_issue) - end - - let!(:schema_inconsistency_with_issue_opened) do - create(:schema_inconsistency, object_name: 'index_name', table_name: 'achievements', - valitador_name: 'different_definition_indexes', issue: open_issue) - end - - it 'returns only schema inconsistencies with GitLab issues open' do - expect(inconsistencies).to eq([schema_inconsistency_with_issue_opened]) - end - end - end -end diff --git a/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb b/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb index 31d029a9c1d..dcaaa5873c8 100644 --- a/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb +++ b/spec/lib/gitlab/metrics/dashboard/service_selector_spec.rb @@ -44,12 +44,6 @@ RSpec.describe Gitlab::Metrics::Dashboard::ServiceSelector do it { is_expected.to be Metrics::Dashboard::CustomMetricEmbedService } end - - context 'when metrics embed is for an alert' do - let(:arguments) { { embedded: true, prometheus_alert_id: 5 } } - - it { is_expected.to be Metrics::Dashboard::GitlabAlertEmbedService } - end end end end diff --git a/spec/requests/projects/merge_requests_discussions_spec.rb b/spec/requests/projects/merge_requests_discussions_spec.rb index 644f26af006..24b6fb2f640 100644 --- a/spec/requests/projects/merge_requests_discussions_spec.rb +++ b/spec/requests/projects/merge_requests_discussions_spec.rb @@ -27,19 +27,15 @@ RSpec.describe 'merge requests discussions', feature_category: :source_code_mana end # rubocop:enable RSpec/InstanceVariable - shared_examples 'N+1 queries' do - it 'avoids N+1 DB queries', :request_store do - send_request # warm up + it 'avoids N+1 DB queries', :request_store do + send_request # warm up - create(:diff_note_on_merge_request, noteable: merge_request, project: merge_request.project) - control = ActiveRecord::QueryRecorder.new { send_request } + create(:diff_note_on_merge_request, noteable: merge_request, project: merge_request.project) + control = ActiveRecord::QueryRecorder.new { send_request } - create(:diff_note_on_merge_request, noteable: merge_request, project: merge_request.project) + create(:diff_note_on_merge_request, noteable: merge_request, project: merge_request.project) - expect do - send_request - end.not_to exceed_query_limit(control).with_threshold(notes_metadata_threshold) - end + expect { send_request }.not_to exceed_query_limit(control) end it 'returns 200' do @@ -48,13 +44,6 @@ RSpec.describe 'merge requests discussions', feature_category: :source_code_mana expect(response).to have_gitlab_http_status(:ok) end - # https://docs.gitlab.com/ee/development/query_recorder.html#use-request-specs-instead-of-controller-specs - context 'with notes_metadata_threshold' do - let(:notes_metadata_threshold) { 1 } - - it_behaves_like 'N+1 queries' - end - it 'limits Gitaly queries', :request_store do Gitlab::GitalyClient.allow_n_plus_1_calls do create_list(:diff_note_on_merge_request, 7, noteable: merge_request, project: merge_request.project) diff --git a/spec/requests/projects/notes_controller_spec.rb b/spec/requests/projects/notes_controller_spec.rb new file mode 100644 index 00000000000..9cd8ba364ea --- /dev/null +++ b/spec/requests/projects/notes_controller_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Projects::NotesController, feature_category: :team_planning do + let_it_be(:project) { create(:project, :public) } + let_it_be(:issue) { create(:issue, project: project) } + + describe '#index' do + def get_notes + get project_noteable_notes_path(project, target_type: 'issue', target_id: issue.id, format: :json), + headers: { 'X-Last-Fetched-At': 0 } + end + + it 'does not execute N+1 queries' do + get_notes + + create(:note_on_issue, project: project, noteable: issue) + + control = ActiveRecord::QueryRecorder.new { get_notes } + + create(:note_on_issue, project: project, noteable: issue) + + expect { get_notes }.not_to exceed_query_limit(control) + end + end +end diff --git a/spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb b/spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb deleted file mode 100644 index 25812a492b2..00000000000 --- a/spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb +++ /dev/null @@ -1,103 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Metrics::Dashboard::GitlabAlertEmbedService, feature_category: :metrics do - include MetricsDashboardHelpers - - let_it_be(:alert) { create(:prometheus_alert) } - let_it_be(:project) { alert.project } - let_it_be(:user) { create(:user) } - - let(:alert_id) { alert.id } - - before_all do - project.add_maintainer(user) - end - - describe '.valid_params?' do - let(:valid_params) do - { - embedded: true, - prometheus_alert_id: alert_id - } - end - - subject { described_class.valid_params?(params) } - - let(:params) { valid_params } - - it { is_expected.to be_truthy } - - context 'missing embedded' do - let(:params) { valid_params.except(:embedded) } - - it { is_expected.to be_falsey } - end - - context 'not embedded' do - let(:params) { valid_params.merge(embedded: 'false') } - - it { is_expected.to be_falsey } - end - - context 'missing alert id' do - let(:params) { valid_params.except(:prometheus_alert_id) } - - it { is_expected.to be_falsey } - end - - context 'missing alert id' do - let(:params) { valid_params.merge(prometheus_alert_id: 'none') } - - it { is_expected.to be_falsey } - end - end - - describe '#get_dashboard' do - let(:service_params) do - [ - project, - user, - { - embedded: true, - prometheus_alert_id: alert_id - } - ] - end - - let(:service_call) { described_class.new(*service_params).get_dashboard } - - context 'when alerting is available' do - it_behaves_like 'valid embedded dashboard service response' - it_behaves_like 'raises error for users with insufficient permissions' - - it 'generates an panel based on the alert' do - result = service_call - panel = result[:dashboard][:panel_groups][0][:panels][0] - metric = panel[:metrics].first - - expect(panel[:metrics].length).to eq 1 - expect(panel).to include( - title: alert.prometheus_metric.title, - y_label: alert.prometheus_metric.y_label, - type: 'area-chart' - ) - expect(metric[:metric_id]).to eq alert.prometheus_metric_id - end - - context 'when the metric does not exist' do - let(:alert_id) { -4 } - - it_behaves_like 'misconfigured dashboard service response', :not_found - end - - it 'does not cache the unprocessed dashboard' do - # Fail spec if any method of Cache class is called. - stub_const('Gitlab::Metrics::Dashboard::Cache', double) - - described_class.new(*service_params).get_dashboard - end - end - end -end diff --git a/spec/workers/integrations/group_mention_worker_spec.rb b/spec/workers/integrations/group_mention_worker_spec.rb index 111e3f5a107..e79b654184d 100644 --- a/spec/workers/integrations/group_mention_worker_spec.rb +++ b/spec/workers/integrations/group_mention_worker_spec.rb @@ -37,12 +37,10 @@ RSpec.describe Integrations::GroupMentionWorker, :clean_gitlab_redis_shared_stat context 'when mentionable_type is not supported' do let(:args) do - { + super().merge( mentionable_type: 'Unsupported', - mentionable_id: 23, - hook_data: {}, - is_confidential: false - } + mentionable_id: 23 + ) end it 'does not execute the service' do @@ -61,5 +59,15 @@ RSpec.describe Integrations::GroupMentionWorker, :clean_gitlab_redis_shared_stat worker.perform(args) end end + + context 'when mentionable cannot be found' do + let(:args) { super().merge(mentionable_id: non_existing_record_id) } + + it 'does not execute the service' do + expect(service_class).not_to receive(:new) + + worker.perform(args) + end + end end end