Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2023-08-02 09:10:31 +00:00
parent 8bf623d6ea
commit a1131ca818
27 changed files with 178 additions and 410 deletions

View File

@ -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

View File

@ -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:

View File

@ -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"
###################

View File

@ -1 +1 @@
v16.3.0-rc4
v16.3.0-rc5

View File

@ -474,3 +474,10 @@
margin-left: $gl-padding;
}
}
@mixin btn-svg {
height: $gl-padding;
width: $gl-padding;
top: 0;
vertical-align: text-top;
}

View File

@ -1,5 +1,5 @@
@import 'mixins_and_variables_and_functions';
@import 'framework/buttons';
@import 'framework/mixins';
.edit-user {
.emoji-menu-toggle-button {

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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) |

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -446,17 +446,23 @@ When the docs are generated, the output is:
To stop the command, press <kbd>Control</kbd>+<kbd>C</kbd>.
### 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).

View File

@ -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:

View File

@ -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

View File

@ -13,7 +13,6 @@ module Gitlab
include Gitlab::Utils::StrongMemoize
SERVICES = [
::Metrics::Dashboard::GitlabAlertEmbedService,
::Metrics::Dashboard::CustomMetricEmbedService,
::Metrics::Dashboard::DefaultEmbedService,
::Metrics::Dashboard::SystemDashboardService

View File

@ -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?

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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