Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-08-18 13:50:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-08-18 13:50:51 +0300
commitdb384e6b19af03b4c3c82a5760d83a3fd79f7982 (patch)
tree34beaef37df5f47ccbcf5729d7583aae093cffa0 /.gitlab
parent54fd7b1bad233e3944434da91d257fa7f63c3996 (diff)
Add latest changes from gitlab-org/gitlab@16-3-stable-eev16.3.0-rc42
Diffstat (limited to '.gitlab')
-rw-r--r--.gitlab/CODEOWNERS238
-rw-r--r--.gitlab/ci/audit_event_types.gitlab-ci.yml12
-rw-r--r--.gitlab/ci/benchmark.gitlab-ci.yml1
-rw-r--r--.gitlab/ci/cng/main.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/docs.gitlab-ci.yml2
-rw-r--r--.gitlab/ci/frontend.gitlab-ci.yml16
-rw-r--r--.gitlab/ci/gitlab-gems.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/global.gitlab-ci.yml267
-rw-r--r--.gitlab/ci/package-and-test/main.gitlab-ci.yml7
-rw-r--r--.gitlab/ci/qa-common/main.gitlab-ci.yml25
-rw-r--r--.gitlab/ci/qa-common/rules.gitlab-ci.yml4
-rw-r--r--.gitlab/ci/qa-common/variables.gitlab-ci.yml7
-rw-r--r--.gitlab/ci/qa.gitlab-ci.yml58
-rw-r--r--.gitlab/ci/rails.gitlab-ci.yml57
-rw-r--r--.gitlab/ci/rails/shared.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/release-environments/main.gitlab-ci.yml4
-rw-r--r--.gitlab/ci/review-apps/main.gitlab-ci.yml37
-rw-r--r--.gitlab/ci/rules.gitlab-ci.yml331
-rw-r--r--.gitlab/ci/setup.gitlab-ci.yml2
-rw-r--r--.gitlab/ci/static-analysis.gitlab-ci.yml11
-rw-r--r--.gitlab/ci/templates/gem.gitlab-ci.yml7
-rw-r--r--.gitlab/ci/test-on-gdk/main.gitlab-ci.yml10
-rw-r--r--.gitlab/ci/workhorse.gitlab-ci.yml1
-rw-r--r--.gitlab/issue_templates/Design Sprint.md290
-rw-r--r--.gitlab/issue_templates/Feature Flag Roll Out.md25
-rw-r--r--.gitlab/issue_templates/Feature Proposal - lean.md7
-rw-r--r--.gitlab/issue_templates/Geo Replicate a new Git repository type.md33
-rw-r--r--.gitlab/issue_templates/Geo Replicate a new blob type.md33
-rw-r--r--.gitlab/merge_request_templates/Security Release.md3
-rw-r--r--.gitlab/route-map.yml2
30 files changed, 1066 insertions, 442 deletions
diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS
index 38b60413db5..989d74ff117 100644
--- a/.gitlab/CODEOWNERS
+++ b/.gitlab/CODEOWNERS
@@ -48,7 +48,7 @@ GITALY_SERVER_VERSION @project_278964_bot6 @gitlab-org/maintainers/rails-backend
/spec/frontend_integration/
/ee/spec/frontend_integration/
-^[Database] @gitlab-org/maintainers/database
+[Database] @gitlab-org/maintainers/database
/db/
/ee/db/
/lib/gitlab/background_migration/
@@ -59,14 +59,11 @@ GITALY_SERVER_VERSION @project_278964_bot6 @gitlab-org/maintainers/rails-backend
/ee/app/finders/
/rubocop/rubocop-migrations.yml
-[Create::IDE - Remote Development Scripts] @gitlab-org/maintainers/remote-development/backend
-# This entry must occur before `/scripts/` in order to be matched first
-/scripts/remote_development/
-
-[Engineering Productivity] @gl-quality/eng-prod
+[Pipeline configuration] @gl-quality/eng-prod
/.gitlab-ci.yml
/.gitlab/ci/
/.gitlab/ci/docs.gitlab-ci.yml @gl-quality/eng-prod @gl-docsteam
+/.gitlab/ci/frontend.gitlab-ci.yml @gl-quality/eng-prod @gitlab-org/maintainers/frontend
/.gitlab/ci/package-and-test/ @gl-quality/eng-prod @gl-quality/qe-maintainers
/.gitlab/ci/qa.gitlab-ci.yml @gl-quality/eng-prod @gl-quality/qe-maintainers
/.gitlab/ci/qa-common/ @gl-quality/eng-prod @gl-quality/qe-maintainers
@@ -74,14 +71,30 @@ GITALY_SERVER_VERSION @project_278964_bot6 @gitlab-org/maintainers/rails-backend
/.gitlab/ci/reports.gitlab-ci.yml @gl-quality/eng-prod @gitlab-com/gl-security/appsec
/.gitlab/ci/review-apps/qa.gitlab-ci.yml @gl-quality/eng-prod @gl-quality/qe-maintainers
/.gitlab/ci/test-on-gdk/ @gl-quality/eng-prod @gl-quality/qe-maintainers
+/gems/gem.gitlab-ci.yml
+
+[Tooling] @gl-quality/eng-prod
Dangerfile
/danger/
-/gems/gem.gitlab-ci.yml
/tooling/danger/
/scripts/
+/scripts/**/*.rb @gl-quality/eng-prod @gitlab-org/maintainers/rails-backend
+/scripts/**/glfm/**/* @gl-quality/eng-prod @gitlab-org/maintainers/rails-backend
+/scripts/**/*.js @gl-quality/eng-prod @gitlab-org/maintainers/frontend
/scripts/frontend/ @gl-quality/eng-prod @gitlab-org/maintainers/frontend
+/scripts/remote_development/ @gitlab-org/maintainers/remote-development/backend
/scripts/review_apps/seed-dast-test-data.sh @gl-quality/eng-prod @dappelt @ngeorge1
-.editorconfig
+/.codeclimate.yml
+/.dockerignore
+/.editorconfig
+/.gitpod.yml
+/.haml-lint_todo.yml
+/.haml-lint.yml
+/.nvmrc
+/.ruby-version
+/.tool-versions
+/lefthook.yml
+/tests.yml
^[Backend Static Code Analysis] @gl-quality/eng-prod @dstull @splattael
.rubocop*.yml
@@ -279,8 +292,20 @@ Dangerfile
^[Product Analytics] @gitlab-org/analytics-section/product-analytics/engineers/frontend
/ee/app/assets/javascripts/analytics/analytics_dashboards/components/analytics_dashboard.vue
+/ee/app/assets/javascripts/analytics/analytics_dashboards/components/analytics_visualization_designer.vue
/ee/app/assets/javascripts/analytics/analytics_dashboards/components/dashboards_list.vue
+/ee/app/assets/javascripts/analytics/analytics_dashboards/components/visualization_designer/selectors/product_analytics/
+/ee/app/assets/javascripts/analytics/analytics_dashboards/components/visualizations/column_chart.vue
+/ee/app/assets/javascripts/analytics/analytics_dashboards/components/visualizations/data_table.vue
+/ee/app/assets/javascripts/analytics/analytics_dashboards/components/visualizations/line_chart.vue
+/ee/app/assets/javascripts/analytics/analytics_dashboards/components/visualizations/single_stat.vue
/ee/app/assets/javascripts/analytics/analytics_dashboards/data_sources/
+/ee/app/assets/javascripts/analytics/analytics_dashboards/index.js
+/ee/app/assets/javascripts/analytics/analytics_dashboards/router.js
+/ee/app/assets/javascripts/analytics/analytics_dashboards/constants.js
+/ee/app/assets/javascripts/analytics/analytics_dashboards/graphql/queries/get_all_product_analytics_dashboards.query.graphql
+/ee/app/assets/javascripts/analytics/analytics_dashboards/graphql/queries/get_product_analytics_dashboard.query.graphql
+/ee/app/assets/javascripts/analytics/analytics_dashboards/graphql/queries/get_all_product_analytics_visualizations.query.graphql
/ee/app/assets/javascripts/vue_shared/components/customizable_dashboard/customizable_dashboard.vue
/ee/app/assets/javascripts/vue_shared/components/customizable_dashboard/panels_base.vue
/ee/app/assets/javascripts/product_analytics/
@@ -414,8 +439,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
@@ -426,24 +451,22 @@ 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_artifacts_troubleshooting.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
@@ -451,8 +474,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
@@ -471,8 +494,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
@@ -496,33 +519,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/deprecated_api_rate_limits.md @aqualls @msedlakjakubowski
-/doc/administration/settings/git_lfs_rate_limits.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 @msedlakjakubowski
+/doc/administration/settings/email.md @msedlakjakubowski
+/doc/administration/settings/external_authorization.md @jglassman1
+/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/visibility_and_access_controls.md @aqualls @msedlakjakubowski
+/doc/administration/settings/usage_statistics.md @lciutacu
+/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
@@ -541,10 +570,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
@@ -553,7 +582,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
@@ -568,7 +597,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
@@ -587,7 +616,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
@@ -604,7 +633,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
@@ -612,7 +641,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
@@ -634,27 +663,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
@@ -670,15 +699,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
@@ -691,6 +720,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
@@ -708,11 +738,13 @@ lib/gitlab/checks/**
/doc/ci/test_cases/ @msedlakjakubowski
/doc/ci/testing/code_quality.md @rdickenson
/doc/development/advanced_search.md @ashrafkhamis
+/doc/development/ai_features.md @sselhorn
/doc/development/application_limits.md @axil
/doc/development/audit_event_guide/ @eread
/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
@@ -720,13 +752,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
@@ -735,17 +767,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
@@ -757,17 +789,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
@@ -778,9 +810,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
@@ -793,10 +825,12 @@ 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/editor_extensions/ @aqualls
+/doc/editor_extensions/visual_studio_code/ @ashrafkhamis
+/doc/gitlab-basics/ @msedlakjakubowski
/doc/install/ @axil
/doc/install/postgresql_extensions.md @aqualls
/doc/integration/ @jglassman1
@@ -806,7 +840,6 @@ lib/gitlab/checks/**
/doc/integration/datadog.md @eread @ashrafkhamis
/doc/integration/external-issue-tracker.md @eread @ashrafkhamis
/doc/integration/gitpod.md @ashrafkhamis
-/doc/integration/glab/ @aqualls
/doc/integration/gmail_action_buttons_for_gitlab.md @eread @ashrafkhamis
/doc/integration/index.md @eread @ashrafkhamis
/doc/integration/jenkins.md @eread @ashrafkhamis
@@ -814,7 +847,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
@@ -823,7 +856,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
@@ -831,8 +864,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
@@ -841,27 +873,27 @@ lib/gitlab/checks/**
/doc/tutorials/configure_gitlab_runner_to_use_gke/ @fneill
/doc/tutorials/container_scanning/ @rdickenson
/doc/tutorials/convert_personal_namespace_to_group/ @lciutacu
+/doc/tutorials/create_register_first_runner/ @fneill
/doc/tutorials/dependency_scanning.md @rdickenson
/doc/tutorials/fuzz_testing/ @rdickenson
+/doc/tutorials/install_gitlab_single_node/ @axil
+/doc/tutorials/issue_triage/ @msedlakjakubowski
/doc/tutorials/move_personal_project_to_group/ @lciutacu
/doc/tutorials/protected_workflow/ @aqualls
/doc/tutorials/scan_result_policy/ @rdickenson
+/doc/tutorials/update_commit_messages/ @msedlakjakubowski
+/doc/tutorials/website_project_with_analytics/ @lciutacu
/doc/update/ @axil
/doc/update/background_migrations.md @aqualls
-/doc/user/admin_area/settings/continuous_integration.md @marcel.amirault
-/doc/user/admin_area/settings/email.md @msedlakjakubowski
-/doc/user/admin_area/settings/external_authorization.md @jglassman1
-/doc/user/admin_area/settings/files_api_rate_limits.md @aqualls @msedlakjakubowski
-/doc/user/admin_area/settings/slack_app.md @eread @ashrafkhamis
-/doc/user/admin_area/settings/usage_statistics.md @lciutacu
+/doc/user/ai_features.md @sselhorn
/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_report/ @eread
+/doc/user/compliance/compliance_center/ @eread
/doc/user/compliance/index.md @eread
/doc/user/crm/ @msedlakjakubowski
/doc/user/discussions/ @aqualls
@@ -870,7 +902,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
@@ -904,19 +936,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
@@ -928,33 +960,30 @@ 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/reviews/data_usage.md @sselhorn
/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/code_suggestions.md @sselhorn
/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
@@ -964,8 +993,9 @@ 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/storage_management_automation.md @fneill
/doc/user/tasks.md @msedlakjakubowski
/doc/user/todos.md @msedlakjakubowski
/doc/user/usage_quotas.md @fneill
@@ -1326,6 +1356,7 @@ lib/gitlab/checks/**
/app/policies/ci/runner*.rb @gitlab-org/ci-cd/runner-fleet-team/backend-approvers
/app/presenters/ci/runner_*.rb @gitlab-org/ci-cd/runner-fleet-team/backend-approvers
/app/serializers/runner*.rb @gitlab-org/ci-cd/runner-fleet-team/backend-approvers
+/app/services/groups/update_shared_runners_service.rb @gitlab-org/ci-cd/runner-fleet-team/backend-approvers
/app/services/ci/runners/ @gitlab-org/ci-cd/runner-fleet-team/backend-approvers
/app/workers/ci/runners/ @gitlab-org/ci-cd/runner-fleet-team/backend-approvers
/db/docs/ci_runner*.yml @gitlab-org/ci-cd/runner-fleet-team/backend-approvers
@@ -1438,7 +1469,7 @@ ee/lib/ee/api/entities/project.rb
/app/workers/releases/create_evidence_worker.rb
/app/workers/releases/manage_evidence_worker.rb
-[Fulfillment::Utilization] @sheldonled @aalakkad @kpalchyk
+^[Fulfillment::Utilization] @sheldonled @aalakkad @kpalchyk
/ee/app/assets/javascripts/usage_quotas/components/
/ee/app/assets/javascripts/usage_quotas/seats/
/ee/app/assets/javascripts/usage_quotas/storage/
@@ -1461,12 +1492,14 @@ ee/lib/ee/api/entities/project.rb
/ee/app/graphql/resolvers/remote_development/
/ee/app/controllers/remote_development/
/ee/app/services/remote_development/
+/ee/lib/remote_development/
/ee/spec/frontend/remote_development/
/ee/spec/features/remote_development/
/ee/spec/models/remote_development/
/ee/spec/policies/remote_development/
/ee/spec/requests/api/graphql/mutations/remote_development/
/ee/spec/requests/api/graphql/remote_development/
+/ee/spec/features/remote_development/ @gitlab-org/maintainers/remote-development/backend @gitlab-org/maintainers/remote-development/frontend
/ee/spec/finders/remote_development/
/ee/spec/support/shared_contexts/remote_development/
/ee/spec/graphql/types/remote_development/
@@ -1475,13 +1508,12 @@ ee/lib/ee/api/entities/project.rb
/ee/spec/fixtures/remote_development/
/ee/spec/controllers/remote_development/
/ee/spec/services/remote_development/
-/ee/lib/remote_development/
-/qa/qa/specs/features/ee/browser_ui/3_create/remote_development/
+/qa/qa/specs/features/**/remote_development/ @gitlab-org/maintainers/remote-development/backend @gl-quality/qe-maintainers
[Create::IDE - Remote Development Frontend] @gitlab-org/maintainers/remote-development/frontend
+/ee/app/assets/**/remote_development/
/ee/app/views/remote_development/
-/ee/app/assets/javascripts/remote_development/
-/ee/app/assets/javascripts/pages/remote_development/
+/ee/spec/frontend/**/remote_development/
# JiHu GitLab rules. See https://gitlab.com/gitlab-jh/gitlab-jh-enablement/-/issues/213#note_1024367528
diff --git a/.gitlab/ci/audit_event_types.gitlab-ci.yml b/.gitlab/ci/audit_event_types.gitlab-ci.yml
new file mode 100644
index 00000000000..f079a3b55e1
--- /dev/null
+++ b/.gitlab/ci/audit_event_types.gitlab-ci.yml
@@ -0,0 +1,12 @@
+audit-event-types-verify:
+ variables:
+ SETUP_DB: "false"
+ extends:
+ - .default-retry
+ - .ruby-cache
+ - .default-before_script
+ - .audit-event-types:rules:audit-event-types-verify
+ stage: lint
+ needs: []
+ script:
+ - bundle exec rake gitlab:audit_event_types:check_docs
diff --git a/.gitlab/ci/benchmark.gitlab-ci.yml b/.gitlab/ci/benchmark.gitlab-ci.yml
index 5949a9cd6a9..afad54cb84b 100644
--- a/.gitlab/ci/benchmark.gitlab-ci.yml
+++ b/.gitlab/ci/benchmark.gitlab-ci.yml
@@ -11,6 +11,7 @@ benchmark-markdown:
- section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"; # Do not use 'bundle exec' here
- bundle exec rake benchmark:banzai &> benchmark-markdown.txt
artifacts:
+ expire_in: 30 days
when: always
paths:
- benchmark-markdown.txt
diff --git a/.gitlab/ci/cng/main.gitlab-ci.yml b/.gitlab/ci/cng/main.gitlab-ci.yml
index 325b06d59cd..208567f569b 100644
--- a/.gitlab/ci/cng/main.gitlab-ci.yml
+++ b/.gitlab/ci/cng/main.gitlab-ci.yml
@@ -9,7 +9,7 @@ stages:
include:
- local: .gitlab/ci/global.gitlab-ci.yml
-review-build-cng-env:
+.review-build-cng-env:
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-alpine3.16
stage: prepare
needs:
@@ -34,7 +34,7 @@ review-build-cng-env:
expire_in: 7 days
when: always
-review-build-cng:
+.review-build-cng:
stage: prepare
inherit:
variables: false
@@ -56,6 +56,6 @@ review-build-cng:
GITALY_SERVER_VERSION: "${GITALY_SERVER_VERSION}"
RUBY_VERSION: "${FULL_RUBY_VERSION}"
trigger:
- project: gitlab-org/build/CNG-mirror
+ project: ${CI_PROJECT_NAMESPACE}/build/CNG-mirror
branch: $TRIGGER_BRANCH
strategy: depend
diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml
index 6ad916d919a..6aad4de64bd 100644
--- a/.gitlab/ci/docs.gitlab-ci.yml
+++ b/.gitlab/ci/docs.gitlab-ci.yml
@@ -42,7 +42,7 @@ review-docs-cleanup:
docs-lint links:
extends:
- .docs:rules:docs-lint
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-html:alpine-3.18-ruby-3.2.2-4207821e
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-html:alpine-3.18-ruby-3.2.2-6a53d93b
stage: lint
needs: []
script:
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 279a7067a74..f103032ee69 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -3,7 +3,7 @@
- .default-retry
- .default-before_script
- .assets-compile-cache
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}-node-18.16:rubygems-${RUBYGEMS_VERSION}-git-2.33-lfs-2.9-yarn-1.22-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}-node-18.17:rubygems-${RUBYGEMS_VERSION}-git-2.33-lfs-2.9-yarn-1.22-graphicsmagick-1.3.36
variables:
SETUP_DB: "false"
WEBPACK_VENDOR_DLL: "true"
@@ -31,6 +31,10 @@
- assets_compile_script
- echo -n "${GITLAB_ASSETS_HASH}" > "cached-assets-hash.txt"
+.update-cache-base:
+ after_script:
+ - yarn patch-package --reverse # To avoid caching patched modules
+
compile-production-assets:
extends:
- .compile-assets-base
@@ -47,8 +51,6 @@ compile-production-assets:
- public/assets/
- "${WEBPACK_COMPILE_LOG_PATH}"
when: always
- after_script:
- - rm -f /etc/apt/sources.list.d/google*.list # We don't need to update Chrome here
compile-production-assets as-if-foss:
extends:
@@ -77,6 +79,7 @@ compile-test-assets as-if-foss:
update-assets-compile-production-cache:
extends:
- compile-production-assets
+ - .update-cache-base
- .assets-compile-cache-push
- .shared:rules:update-cache
stage: prepare
@@ -85,18 +88,17 @@ update-assets-compile-production-cache:
update-assets-compile-test-cache:
extends:
- compile-test-assets
+ - .update-cache-base
- .assets-compile-cache-push
- .shared:rules:update-cache
stage: prepare
- script:
- - !reference [compile-test-assets, script]
- - echo -n "${GITLAB_ASSETS_HASH}" > "cached-assets-hash.txt"
artifacts: {} # This job's purpose is only to update the cache.
update-storybook-yarn-cache:
extends:
- .default-retry
- .default-utils-before_script
+ - .update-cache-base
- .storybook-yarn-cache-push
- .shared:rules:update-cache
stage: prepare
@@ -121,6 +123,7 @@ retrieve-frontend-fixtures:
run_timed_command "download_and_extract_fixtures"
fi
artifacts:
+ expire_in: 30 days
paths:
- tmp/tests/frontend/
@@ -216,6 +219,7 @@ graphql-schema-dump:
script:
- bundle exec rake gitlab:graphql:schema:dump
artifacts:
+ expire_in: 30 days
name: graphql-schema
paths:
- tmp/tests/graphql/gitlab_schema.graphql
diff --git a/.gitlab/ci/gitlab-gems.gitlab-ci.yml b/.gitlab/ci/gitlab-gems.gitlab-ci.yml
index eb0c8b8536e..1ee08c4ab85 100644
--- a/.gitlab/ci/gitlab-gems.gitlab-ci.yml
+++ b/.gitlab/ci/gitlab-gems.gitlab-ci.yml
@@ -20,3 +20,9 @@ include:
- local: .gitlab/ci/templates/gem.gitlab-ci.yml
inputs:
gem_name: "rspec_flaky"
+ - local: .gitlab/ci/templates/gem.gitlab-ci.yml
+ inputs:
+ gem_name: "gitlab-safe_request_store"
+ - local: .gitlab/ci/templates/gem.gitlab-ci.yml
+ inputs:
+ gem_name: "csv_builder"
diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml
index c501d930352..dd615fe5e9d 100644
--- a/.gitlab/ci/global.gitlab-ci.yml
+++ b/.gitlab/ci/global.gitlab-ci.yml
@@ -4,7 +4,6 @@
when:
- api_failure
- data_integrity_failure
- - job_execution_timeout
- runner_system_failure
- scheduler_failure
- stuck_or_timeout_failure
@@ -37,7 +36,17 @@
.ruby-gems-cache-push: &ruby-gems-cache-push
<<: *ruby-gems-cache
- policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
+ policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
+
+.ruby-coverage-gems-cache: &ruby-coverage-gems-cache
+ key: "ruby-coverage-gems-debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}"
+ paths:
+ - vendor/ruby/
+ policy: pull
+
+.ruby-coverage-gems-cache-push: &ruby-coverage-gems-cache-push
+ <<: *ruby-coverage-gems-cache
+ policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.gitaly-binaries-cache: &gitaly-binaries-cache
key:
@@ -162,6 +171,15 @@
- *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache`
- *rubocop-cache-push
+.ruby-gems-coverage-cache:
+ cache:
+ - *ruby-coverage-gems-cache
+
+.ruby-gems-coverage-cache-push:
+ cache:
+ - *ruby-coverage-gems-cache-push
+
+# This cache should eventually be replaced by .ruby-gems-coverage-cache.
.coverage-cache:
cache:
- *ruby-gems-cache
@@ -213,6 +231,12 @@
- *node-modules-cache # We don't push this cache as it's already rebuilt by `update-assets-compile-*-cache`
- *storybook-node-modules-cache-push
+.redis-services:
+ services:
+ - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:redis-cluster-6.2.12
+ alias: rediscluster # configure connections in config/redis.yml
+ - name: redis:${REDIS_VERSION}-alpine
+
.pg-base-variables:
variables:
POSTGRES_HOST_AUTH_METHOD: trust
@@ -222,179 +246,227 @@
- name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:postgres-${PG_VERSION}-pgvector-0.4.1
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off", "-c", "max_locks_per_transaction=256"]
alias: postgres
- - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:redis-cluster-6.2.12
- alias: rediscluster # configure connections in config/redis.yml
+ - !reference [.redis-services, services]
-.db-services-with-redis-6:
+.db-services-with-auto-explain:
services:
- - !reference [.db-services, services]
- - name: redis:6.2-alpine
+ - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:postgres-${PG_VERSION}-pgvector-0.4.1
+ command:
+ - postgres
+ - -c
+ - fsync=off
+ - -c
+ - synchronous_commit=off
+ - -c
+ - full_page_writes=off
+ - -c
+ - max_locks_per_transaction=256
+ - -c
+ - log_filename=pglog
+ - -c
+ - log_destination=csvlog
+ - -c
+ - logging_collector=true
+ - -c
+ - auto_explain.log_min_duration=0
+ - -c
+ - auto_explain.log_format=json
+ - -c
+ - auto_explain.log_timing=off
+ alias: postgres
+ - !reference [.redis-services, services]
+
+.zoekt-variables:
+ variables:
+ ZOEKT_INDEX_BASE_URL: http://zoekt-ci-image:6060
+ ZOEKT_SEARCH_BASE_URL: http://zoekt-ci-image:6070
-.db-services-with-redis-7:
+.zoekt-services:
services:
- - !reference [.db-services, services]
- - name: redis:7.0-alpine
+ - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:zoekt-ci-image-1.2
+ alias: zoekt-ci-image
.use-pg12:
extends:
- .pg-base-variables
- - .db-services-with-redis-6
+ services:
+ - !reference [.db-services, services]
variables:
PG_VERSION: "12"
+ REDIS_VERSION: "6.2"
.use-pg13:
extends:
- .pg-base-variables
- - .db-services-with-redis-6
+ services:
+ - !reference [.db-services, services]
variables:
PG_VERSION: "13"
+ REDIS_VERSION: "6.2"
.use-pg14:
extends:
- .pg-base-variables
- - .db-services-with-redis-6
+ services:
+ - !reference [.db-services-with-auto-explain, services]
variables:
PG_VERSION: "14"
+ REDIS_VERSION: "6.2"
.use-pg15:
extends:
- .pg-base-variables
- - .db-services-with-redis-7
+ services:
+ - !reference [.db-services-with-auto-explain, services]
variables:
PG_VERSION: "15"
+ REDIS_VERSION: "7.0"
-.zoekt-variables:
- variables:
- ZOEKT_INDEX_BASE_URL: http://zoekt-ci-image:6060
- ZOEKT_SEARCH_BASE_URL: http://zoekt-ci-image:6070
-
-.zoekt-services:
- services:
- - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:zoekt-ci-image-1.1
- alias: zoekt-ci-image
-
-.es7-base:
- extends:
- - .pg-base-variables
- - .zoekt-variables
+.es7-services:
services:
- - !reference [.db-services-with-redis-6, 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: .es7-base
- variables:
- PG_VERSION: "12"
+ extends:
+ - .use-pg12
+ - .zoekt-variables
+ services:
+ - !reference [.db-services, services]
+ - !reference [.es7-services, services]
.use-pg13-es7-ee:
- extends: .es7-base
- variables:
- PG_VERSION: "13"
+ extends:
+ - .use-pg13
+ - .zoekt-variables
+ services:
+ - !reference [.db-services, services]
+ - !reference [.es7-services, services]
.use-pg14-es7-ee:
- extends: .es7-base
- variables:
- PG_VERSION: "14"
+ extends:
+ - .use-pg14
+ - .zoekt-variables
+ services:
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.es7-services, services]
.use-pg15-es7-ee:
- extends: .es7-base
- variables:
- PG_VERSION: "15"
-
-.es8-base:
extends:
- - .pg-base-variables
+ - .use-pg15
- .zoekt-variables
services:
- - !reference [.db-services-with-redis-6, services]
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.es7-services, services]
+
+.es8-services:
+ services:
- !reference [.zoekt-services, services]
- name: elasticsearch:8.6.2
+
+.es8-variables:
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: .es8-base
- variables:
- PG_VERSION: "13"
+ extends:
+ - .use-pg13
+ - .zoekt-variables
+ - .es8-variables
+ services:
+ - !reference [.db-services, services]
+ - !reference [.es8-services, services]
.use-pg14-es8-ee:
- extends: .es8-base
- variables:
- PG_VERSION: "14"
+ extends:
+ - .use-pg14
+ - .zoekt-variables
+ - .es8-variables
+ services:
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.es8-services, services]
.use-pg15-es8-ee:
- extends: .es8-base
- variables:
- PG_VERSION: "15"
-
-.os1-base:
extends:
- - .pg-base-variables
+ - .use-pg15
- .zoekt-variables
+ - .es8-variables
+ services:
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.es8-services, services]
+
+.os1-services:
services:
- - !reference [.db-services-with-redis-6, services]
- !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: .os1-base
- variables:
- PG_VERSION: "13"
+ extends:
+ - .use-pg13
+ - .zoekt-variables
+ services:
+ - !reference [.db-services, services]
+ - !reference [.os1-services, services]
.use-pg14-opensearch1-ee:
- extends: .os1-base
- variables:
- PG_VERSION: "14"
+ extends:
+ - .use-pg14
+ - .zoekt-variables
+ services:
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.os1-services, services]
.use-pg15-opensearch1-ee:
- extends: .os1-base
- variables:
- PG_VERSION: "15"
-
-.os2-base:
extends:
- - .pg-base-variables
+ - .use-pg15
- .zoekt-variables
services:
- - !reference [.db-services-with-redis-6, services]
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.os1-services, services]
+
+.os2-services:
+ services:
- !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: .os2-base
- variables:
- PG_VERSION: "13"
+ extends:
+ - .use-pg13
+ - .zoekt-variables
+ services:
+ - !reference [.db-services, services]
+ - !reference [.os2-services, services]
.use-pg14-opensearch2-ee:
- extends: .os2-base
- variables:
- PG_VERSION: "14"
+ extends:
+ - .use-pg14
+ - .zoekt-variables
+ services:
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.os2-services, services]
.use-pg15-opensearch2-ee:
- extends: .os2-base
- variables:
- PG_VERSION: "15"
+ extends:
+ - .use-pg15
+ - .zoekt-variables
+ services:
+ - !reference [.db-services-with-auto-explain, services]
+ - !reference [.os2-services, services]
.use-pg14-clickhouse23:
+ extends: .use-pg14
services:
- - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:postgres-14-pgvector-0.4.1
- command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- alias: postgres
- - name: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:redis-cluster-6.2.12
- alias: rediscluster # configure connections in config/redis.yml
- - name: redis:6.2-alpine
+ - !reference [.db-services-with-auto-explain, services]
- name: clickhouse/clickhouse-server:23-alpine
alias: clickhouse
variables:
- POSTGRES_HOST_AUTH_METHOD: trust
- PG_VERSION: "14"
CLICKHOUSE_USER: clickhouse
CLICKHOUSE_PASSWORD: clickhouse
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
@@ -444,5 +516,16 @@
.use-kube-context:
before_script:
- - export KUBE_CONTEXT="gitlab-org/gitlab:review-apps"
+ - export KUBE_CONTEXT="${CI_PROJECT_NAMESPACE}/gitlab:review-apps"
- kubectl config use-context ${KUBE_CONTEXT}
+
+.fast-no-clone-job:
+ variables:
+ GIT_STRATEGY: none # We will download the required files for the job from the API
+ before_script:
+ # Logic taken from scripts/utils.sh in download_files function
+ - |
+ url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/repository/files/scripts%2Futils.sh/raw?ref=${CI_COMMIT_SHA}"
+ curl -f --header "Private-Token: ${PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE}" "${url}" --create-dirs --output scripts/utils.sh
+ - source scripts/utils.sh
+ - run_timed_command "download_files ${FILES_TO_DOWNLOAD}"
diff --git a/.gitlab/ci/package-and-test/main.gitlab-ci.yml b/.gitlab/ci/package-and-test/main.gitlab-ci.yml
index 45e07ccf659..9e11a6606f7 100644
--- a/.gitlab/ci/package-and-test/main.gitlab-ci.yml
+++ b/.gitlab/ci/package-and-test/main.gitlab-ci.yml
@@ -1,5 +1,5 @@
# E2E tests pipeline loaded dynamically by script: scripts/generate-e2e-pipeline
-# For adding new tests, refer to: doc/development/testing_guide/end_to_end/package_and_test_pipeline.md
+# For adding new tests, refer to: doc/development/testing_guide/end_to_end/test_pipelines.md
include:
- local: .gitlab/ci/qa-common/main.gitlab-ci.yml
- local: .gitlab/ci/qa-common/rules.gitlab-ci.yml
@@ -35,6 +35,11 @@ download-knapsack-report:
- .download-knapsack-report
- .rules:download-knapsack
+download-fast-quarantine-report:
+ extends:
+ - .download-fast-quarantine-report
+ - .rules:download-fast-quarantine-report
+
cache-gems:
extends:
- .qa-install
diff --git a/.gitlab/ci/qa-common/main.gitlab-ci.yml b/.gitlab/ci/qa-common/main.gitlab-ci.yml
index 603ac12c464..5c9043f8694 100644
--- a/.gitlab/ci/qa-common/main.gitlab-ci.yml
+++ b/.gitlab/ci/qa-common/main.gitlab-ci.yml
@@ -61,6 +61,11 @@ stages:
GITLAB_LICENSE_MODE: test
GITLAB_QA_ADMIN_ACCESS_TOKEN: $QA_ADMIN_ACCESS_TOKEN
GITLAB_QA_OPTS: $EXTRA_GITLAB_QA_OPTS
+ before_script:
+ - !reference [.qa-base, before_script]
+ # Prepend the file paths with the absolute path from inside the container since the files will be read from there
+ - export RSPEC_FAST_QUARANTINE_PATH="/home/gitlab/qa/${RSPEC_FAST_QUARANTINE_PATH}"
+ - export RSPEC_SKIPPED_TESTS_REPORT_PATH="/home/gitlab/qa/rspec/skipped_tests-${CI_JOB_ID}.txt"
# Allow QA jobs to fail as they are flaky. The top level `package-and-e2e:ee`
# pipeline is not allowed to fail, so without allowing QA to fail, we will be
# blocking merges due to flaky tests.
@@ -85,6 +90,26 @@ stages:
- qa/knapsack/*.json
expire_in: 1 day
+.download-fast-quarantine-report:
+ image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}alpine:edge
+ stage: .pre
+ variables:
+ GIT_STRATEGY: none
+ before_script:
+ - apk add --no-cache --update curl bash
+ script:
+ - mkdir -p "${QA_RSPEC_REPORT_PATH}"
+ - |
+ if [[ ! -f "${QA_RSPEC_REPORT_PATH}/${RSPEC_FAST_QUARANTINE_FILE}" ]]; then
+ curl --location -o "${QA_RSPEC_REPORT_PATH}/${RSPEC_FAST_QUARANTINE_FILE}" "https://gitlab-org.gitlab.io/quality/engineering-productivity/fast-quarantine/${RSPEC_FAST_QUARANTINE_PATH}" ||
+ echo "" > "${QA_RSPEC_REPORT_PATH}/${RSPEC_FAST_QUARANTINE_FILE}"
+ fi
+ allow_failure: true
+ artifacts:
+ paths:
+ - "${QA_RSPEC_REPORT_PATH}/${RSPEC_FAST_QUARANTINE_FILE}"
+ expire_in: 1 day
+
.upload-knapsack-report:
extends:
- .generate-knapsack-report-base
diff --git a/.gitlab/ci/qa-common/rules.gitlab-ci.yml b/.gitlab/ci/qa-common/rules.gitlab-ci.yml
index b5963d24b81..7518f08398f 100644
--- a/.gitlab/ci/qa-common/rules.gitlab-ci.yml
+++ b/.gitlab/ci/qa-common/rules.gitlab-ci.yml
@@ -64,6 +64,10 @@
rules:
- when: always
+.rules:download-fast-quarantine-report:
+ rules:
+ - when: always
+
# ------------------------------------------
# Test
# ------------------------------------------
diff --git a/.gitlab/ci/qa-common/variables.gitlab-ci.yml b/.gitlab/ci/qa-common/variables.gitlab-ci.yml
index fe980293f3a..9498df47ecc 100644
--- a/.gitlab/ci/qa-common/variables.gitlab-ci.yml
+++ b/.gitlab/ci/qa-common/variables.gitlab-ci.yml
@@ -1,6 +1,7 @@
# Default variables for package-and-test
variables:
+ USE_OLD_RUBY_VERSION: "true"
REGISTRY_HOST: "registry.gitlab.com"
REGISTRY_GROUP: "gitlab-org"
ALLURE_JOB_NAME: $CI_PROJECT_NAME
@@ -11,4 +12,8 @@ variables:
# run all tests by default when package-and-test is included natively in other projects
# this will be overridden when selective test execution is used in gitlab canonical project
QA_RUN_ALL_TESTS: "true"
- USE_OLD_RUBY_VERSION: "true"
+ # Used by gitlab-qa to set up a volume for `${CI_PROJECT_DIR}/qa/rspec:/home/gitlab/qa/rspec/`
+ QA_RSPEC_REPORT_PATH: "${CI_PROJECT_DIR}/qa/rspec"
+ RSPEC_FAST_QUARANTINE_FILE: "fast_quarantine-gitlab.txt"
+ # This path is relative to /home/gitlab/qa/ in the QA container
+ RSPEC_FAST_QUARANTINE_PATH: "rspec/${RSPEC_FAST_QUARANTINE_FILE}"
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index eae3b2f2a36..5cdaf6ada82 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -105,6 +105,12 @@ trigger-omnibus:
branch: $TRIGGER_BRANCH
strategy: depend
+# Same as trigger-omnibus but is manual and runs follow-up-e2e:package-and-test-ee automatically right after
+trigger-omnibus-and-follow-up-e2e:
+ extends:
+ - trigger-omnibus
+ - .qa:rules:manual-omnibus-and-follow-up-e2e
+
trigger-omnibus as-if-foss:
extends:
- trigger-omnibus
@@ -129,6 +135,42 @@ e2e:package-and-test-ee:
QA_RUN_TYPE: e2e-package-and-test
PIPELINE_NAME: E2E Omnibus GitLab EE
+# Same as e2e:package-and-test-ee but runs automatically after trigger-omnibus-and-follow-up-e2e
+follow-up-e2e:package-and-test-ee:
+ extends:
+ - .e2e-trigger-base
+ - .qa:rules:follow-up-e2e
+ needs:
+ - build-qa-image
+ - trigger-omnibus-and-follow-up-e2e
+ - e2e-test-pipeline-generate
+ variables:
+ RELEASE: "${REGISTRY_HOST}/${REGISTRY_GROUP}/build/omnibus-gitlab-mirror/gitlab-ee:${CI_COMMIT_SHA}"
+ QA_RUN_TYPE: e2e-package-and-test
+ PIPELINE_NAME: E2E Omnibus GitLab EE
+
+e2e:post-run-e2e-message:
+ extends:
+ - .predictive-job
+ - .qa:rules:post-run-e2e-message
+ stage: qa
+ variables:
+ ENV_FILE: $CI_PROJECT_DIR/qa_tests_vars.env
+ image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}
+ before_script:
+ - source scripts/utils.sh
+ - install_gitlab_gem
+ script:
+ - scripts/generate-message-to-run-e2e-pipeline.rb
+ needs:
+ - e2e-test-pipeline-generate
+ - trigger-omnibus-env
+ - build-assets-image
+ artifacts:
+ expire_in: 1 day
+ paths:
+ - "${CI_PROJECT_DIR}/qa_tests_vars.env"
+
e2e:package-and-test-ce:
extends:
- e2e:package-and-test-ee
@@ -144,21 +186,6 @@ e2e:package-and-test-ce:
QA_RUN_TYPE: e2e-package-and-test-ce
PIPELINE_NAME: E2E Omnibus GitLab CE
-e2e:package-and-test-old-nav:
- extends:
- - .e2e-trigger-base
- - .qa:rules:package-and-test-old-nav
- needs:
- - build-qa-image
- - trigger-omnibus
- - e2e-test-pipeline-generate
- variables:
- RELEASE: "${REGISTRY_HOST}/${REGISTRY_GROUP}/build/omnibus-gitlab-mirror/gitlab-ee:${CI_COMMIT_SHA}"
- QA_RUN_TYPE: e2e-package-and-test-old-nav
- PIPELINE_NAME: E2E Omnibus Old Navigation
- QA_SUPER_SIDEBAR_ENABLED: "false"
- EXTRA_GITLAB_QA_OPTS: ""
-
e2e:package-and-test-nightly:
extends:
- .e2e-trigger-base
@@ -187,4 +214,3 @@ e2e:test-on-gdk:
DYNAMIC_PIPELINE_YML: test-on-gdk-pipeline.yml
SKIP_MESSAGE: Skipping test-on-gdk due to mr containing only quarantine changes!
GDK_IMAGE: "${CI_REGISTRY_IMAGE}/gitlab-qa-gdk:${CI_COMMIT_SHA}"
- allow_failure: true
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index 9338f5cf7e5..326d23be5a4 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -56,9 +56,27 @@ update-gitaly-binaries-cache:
artifacts:
paths: [] # This job's purpose is only to update the cache.
+update-ruby-gems-coverage-cache-push:
+ extends:
+ - .ruby-gems-coverage-cache-push
+ - .shared:rules:update-cache
+ variables:
+ BUNDLE_WITHOUT: "" # This is to override the variable defined in .gitlab-ci.yml
+ BUNDLE_ONLY: "coverage"
+ script:
+ - source scripts/utils.sh
+ - bundle_install_script
+
+# Used in:
+# - rspec:undercoverage
+# - rspec:feature-flags
+# - rspec:merge-auto-explain-logs
+#
+# TODO: Consider making rspec:coverage reuse this base job, or split into two base jobs.
.coverage-base:
extends:
- .default-retry
+ # TODO: If applicable for all children jobs, delete/replace this cache with .ruby-gems-coverage-cache, as it is much smaller.
- .coverage-cache
before_script:
- source scripts/utils.sh
@@ -310,7 +328,7 @@ rspec:deprecations:
script:
- grep -h -R "keyword" deprecations/ | awk '{$1=$1};1' | sort | uniq -c | sort
- grep -R "keyword" deprecations/ | wc
- - run_timed_command "fail_on_warnings bundle exec rubocop --config .rubocop.yml --only Lint/LastKeywordArgument --parallel"
+ - run_timed_command "fail_on_warnings bundle exec rubocop --only Lint/LastKeywordArgument --parallel"
artifacts:
expire_in: 31d
when: always
@@ -327,8 +345,8 @@ rspec:deprecations:
GIT_STRATEGY: none
image: alpine:3.17
script:
- - mkdir -p coverage deprecations rspec
- - ls coverage/ deprecations/ rspec/
+ - mkdir -p coverage deprecations rspec auto_explain
+ - ls coverage/ deprecations/ rspec/ auto_explain/
artifacts:
expire_in: 7d
when: always
@@ -336,6 +354,7 @@ rspec:deprecations:
- coverage/
- deprecations/
- rspec/
+ - auto_explain/
rspec:artifact-collector unit:
extends:
@@ -445,11 +464,12 @@ rspec:artifact-collector ee:
rspec:coverage:
extends:
- - .coverage-base
+ - .ruby-gems-coverage-cache
- .rails:rules:rspec-coverage
stage: post-test
needs:
- - setup-test-env
+ - job: setup-test-env
+ artifacts: false
# FOSS/EE jobs
- job: rspec:artifact-collector unit
optional: true
@@ -476,6 +496,13 @@ rspec:coverage:
# Memory jobs
- job: memory-on-boot
optional: true
+ artifacts: false
+ variables:
+ BUNDLE_WITHOUT: "" # This is to override the variable defined in .gitlab-ci.yml
+ BUNDLE_ONLY: "coverage"
+ before_script:
+ - source scripts/utils.sh
+ - bundle_install_script
script:
- run_timed_command "bundle exec scripts/merge-simplecov"
coverage: '/LOC \((\d+\.\d+%)\) covered.$/'
@@ -533,9 +560,6 @@ rspec:flaky-tests-report:
- .rails:rules:flaky-tests-report
stage: post-test
needs: !reference ["rspec:coverage", "needs"]
- variables:
- SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests_report.txt
- RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_report.txt
before_script:
- source scripts/utils.sh
- source scripts/rspec_helpers.sh
@@ -546,6 +570,23 @@ rspec:flaky-tests-report:
paths:
- rspec/
+rspec:merge-auto-explain-logs:
+ extends:
+ - .coverage-base
+ - .rails:rules:rspec-merge-auto-explain-logs
+ stage: post-test
+ needs: !reference ["rspec:coverage", "needs"]
+ before_script:
+ - source scripts/utils.sh
+ - source scripts/rspec_helpers.sh
+ script:
+ - merge_auto_explain_logs
+ artifacts:
+ name: auto-explain-logs
+ expire_in: 31d
+ paths:
+ - auto_explain/
+
# EE/FOSS: default refs (MRs, default branch, schedules) jobs #
#######################################################
diff --git a/.gitlab/ci/rails/shared.gitlab-ci.yml b/.gitlab/ci/rails/shared.gitlab-ci.yml
index 9c2b0406f02..ce89e7ef689 100644
--- a/.gitlab/ci/rails/shared.gitlab-ci.yml
+++ b/.gitlab/ci/rails/shared.gitlab-ci.yml
@@ -25,6 +25,8 @@ include:
# gems could not be found under some circumstance. No idea why, hours wasted.
- run_timed_command "gem install knapsack --no-document"
- section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn" # Do not use 'bundle exec' here
+ - export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"
+ - export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"
.no-redis-cluster:
variables:
@@ -84,7 +86,7 @@ include:
bundle exec relate-failure-issue --input-files "rspec/rspec-*.json" --system-log-files "log" --project "gitlab-org/gitlab" --token "${TEST_FAILURES_PROJECT_TOKEN}";
fi
if [ "$CREATE_RAILS_SLOW_TEST_ISSUES" == "true" ]; then
- bundle exec slow-test-issues --input-files "rspec/rspec-*.json" --project "gitlab-org-sandbox/rails-test-failures" --token "${RAILS_TEST_FAILURES_PROJECT_TOKEN}";
+ bundle exec slow-test-issues --input-files "rspec/rspec-*.json" --project "gitlab-org/gitlab" --token "${TEST_FAILURES_PROJECT_TOKEN}";
fi
- echo -e "\e[0Ksection_end:`date +%s`:report_results_section\r\e[0K"
@@ -96,11 +98,11 @@ include:
expire_in: 31d
when: always
paths:
+ - auto_explain/
- coverage/
- crystalball/
- deprecations/
- knapsack/
- - query_recorder/
- rspec/
- tmp/capybara/
- log/*.log
diff --git a/.gitlab/ci/release-environments/main.gitlab-ci.yml b/.gitlab/ci/release-environments/main.gitlab-ci.yml
index 7eb67509301..ff15673d48d 100644
--- a/.gitlab/ci/release-environments/main.gitlab-ci.yml
+++ b/.gitlab/ci/release-environments/main.gitlab-ci.yml
@@ -3,9 +3,13 @@ include:
- local: .gitlab/ci/cng/main.gitlab-ci.yml
review-build-cng-env:
+ extends:
+ - .review-build-cng-env
allow_failure: true
review-build-cng:
+ extends:
+ - .review-build-cng
needs: ["review-build-cng-env"]
variables:
IMAGE_TAG_EXT: "-${CI_COMMIT_SHORT_SHA}"
diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml
index c5f56076ce7..a3ced427ea1 100644
--- a/.gitlab/ci/review-apps/main.gitlab-ci.yml
+++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml
@@ -30,17 +30,37 @@ dont-interrupt-me:
review-build-cng-env:
extends:
+ - .review-build-cng-env
- .default-retry
- .review:rules:review-build-cng
+ - .fast-no-clone-job
+ variables:
+ # We use > instead of | because we want the files to be space-separated.
+ FILES_TO_DOWNLOAD: >
+ GITALY_SERVER_VERSION
+ GITLAB_ELASTICSEARCH_INDEXER_VERSION
+ GITLAB_KAS_VERSION
+ GITLAB_METRICS_EXPORTER_VERSION
+ GITLAB_PAGES_VERSION
+ GITLAB_SHELL_VERSION
+ scripts/trigger-build.rb
+ VERSION
+ before_script:
+ - apk add --no-cache --update curl # Not present in ruby-alpine, so we add it manually
+ - !reference [".fast-no-clone-job", before_script]
+ - !reference [".review-build-cng-env", before_script]
+ - mv VERSION GITLAB_WORKHORSE_VERSION # GITLAB_WORKHORSE_VERSION is a symlink to VERSION
review-build-cng:
- extends: .review:rules:review-build-cng
+ extends:
+ - .review-build-cng
+ - .review:rules:review-build-cng
needs: ["review-build-cng-env"]
.review-workflow-base:
image: ${REVIEW_APPS_IMAGE}
retry:
- max: 2 # This is confusing but this means "3 runs at max"
+ max: 1 # This is confusing but this means "2 runs at max"
variables:
HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
@@ -49,6 +69,7 @@ review-build-cng:
GITLAB_REPO_URL: ${CI_PROJECT_URL}
GITLAB_IMAGE_REPOSITORY: "registry.gitlab.com/gitlab-org/build/cng-mirror"
GITLAB_IMAGE_SUFFIX: "ee"
+ GITLAB_REVIEW_APP_BASE_CONFIG_FILE: "scripts/review_apps/base-config.yaml"
GITLAB_HELM_CHART_REF: "75b1486a9aec212d0f49ef1251526d8e51004bbc" # 7.0.1: https://gitlab.com/gitlab-org/charts/gitlab/-/commit/75b1486a9aec212d0f49ef1251526d8e51004bbc
environment:
name: review/${CI_COMMIT_REF_SLUG}${SCHEDULE_TYPE} # No separator for SCHEDULE_TYPE so it's compatible as before and looks nice without it
@@ -59,6 +80,7 @@ review-deploy:
extends:
- .review-workflow-base
- .review:rules:review-deploy
+ - .fast-no-clone-job
stage: deploy
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}dtzar/helm-kubectl:3.9.3
needs:
@@ -70,7 +92,18 @@ review-deploy:
- "gitlab-${GITLAB_HELM_CHART_REF}"
environment:
action: start
+ variables:
+ # We use > instead of | because we want the files to be space-separated.
+ FILES_TO_DOWNLOAD: >
+ GITALY_SERVER_VERSION
+ GITLAB_SHELL_VERSION
+ scripts/review_apps/review-apps.sh
+ scripts/review_apps/seed-dast-test-data.sh
+ VERSION
before_script:
+ - apk add --no-cache --update curl # Not present in ruby-alpine, so we add it manually
+ - !reference [".fast-no-clone-job", before_script]
+ - mv VERSION GITLAB_WORKHORSE_VERSION # GITLAB_WORKHORSE_VERSION is a symlink to VERSION
- export GITLAB_SHELL_VERSION=$(<GITLAB_SHELL_VERSION)
- export GITALY_VERSION=$(<GITALY_SERVER_VERSION)
- export GITLAB_WORKHORSE_VERSION=$(<GITLAB_WORKHORSE_VERSION)
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 295f22258e9..264950ae1cc 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -89,6 +89,9 @@
.if-merge-request-labels-skip-undercoverage: &if-merge-request-labels-skip-undercoverage
if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:skip-undercoverage/'
+.if-merge-request-labels-record-queries: &if-merge-request-labels-record-queries
+ if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:record-queries/'
+
.if-merge-request-labels-jh-contribution: &if-merge-request-labels-jh-contribution
if: '$CI_MERGE_REQUEST_LABELS =~ /JiHu contribution/'
@@ -378,9 +381,6 @@
# Gitaly has interactions with background migrations: https://gitlab.com/gitlab-org/gitlab/-/issues/336538
- "GITALY_SERVER_VERSION"
- "lib/gitlab/setup_helper.rb"
- # CI changes
- - ".gitlab-ci.yml"
- - ".gitlab/ci/**/*"
# DB backup patterns
.db-backup-patterns: &db-backup-patterns
@@ -604,6 +604,18 @@
- "scripts/glfm/**/*"
- "scripts/lib/glfm/**/*"
+# Certain components require the base e2e GDK image to be rebuilt if they change
+.gdk-component-patterns: &gdk-component-patterns
+ - qa/gdk/**/*
+ - Gemfile.lock
+ - yarn.lock
+ - workhorse/**/*
+ - VERSION
+ - GITLAB_WORKHORSE_VERSION
+ - GITLAB_METRICS_EXPORTER_VERSION
+ - GITLAB_SHELL_VERSION
+ - GITALY_SERVER_VERSION
+
##################
# Conditions set #
##################
@@ -889,6 +901,8 @@
# - build the final stage in code-change pipelines (including MRs), and scheduled pipelines
# This has to match ".qa:rules:e2e:test-on-gdk" otherwise there won't be an image available to run GDK in the test jobs.
# Unfortunately, we can't just include ".qa:rules:e2e:test-on-gdk" because some of the conditions are manual
+# Since the smoke test job is not allowed to fail, the `build-gdk-image` job is also not allowed to fail.
+# It's better to fail early and avoid wasting resources running test jobs that would just fail anyway.
.build-images:rules:build-gdk-image:
rules:
- if: '$QA_RUN_TESTS_ON_GDK !~ /true|yes|1/i'
@@ -899,51 +913,37 @@
- <<: *if-default-branch-refs # Includes scheduled pipelines
variables:
BUILD_GDK_BASE: "true"
- allow_failure: true
# We want to also rebuild the base image if MRs change certain components.
- <<: *if-merge-request
variables:
BUILD_GDK_BASE: "true"
- changes:
- - qa/gdk/**/*
- - Gemfile.lock
- - yarn.lock
- - workhorse/**/*
- - VERSION
- - GITLAB_METRICS_EXPORTER_VERSION
- - GITLAB_SHELL_VERSION
- - GITALY_SERVER_VERSION
- allow_failure: true
+ changes: *gdk-component-patterns
# The rest are included to be consistent with .qa:rules:e2e:test-on-gdk
- <<: *if-merge-request-targeting-stable-branch
changes: *setup-test-env-patterns
- allow_failure: true
- <<: *if-ruby3_1-branch
- allow_failure: true
# We include the job under the matching conditions below, but unlike in .qa:rules:e2e:test-on-gdk we don't need to
# set OMNIBUS_GITLAB_BUILD_ON_ALL_OS when testing against GDK
- <<: *if-merge-request
changes: *dependency-patterns
- allow_failure: true
- <<: *if-merge-request-labels-run-all-e2e
- allow_failure: true
- <<: *if-merge-request
changes: *feature-flag-development-config-patterns
- allow_failure: true
- <<: *if-merge-request
changes: *initializers-patterns
- allow_failure: true
- <<: *if-merge-request
changes: *nodejs-patterns
- allow_failure: true
- <<: *if-merge-request
changes: *ci-qa-patterns
- allow_failure: true
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
+ changes: *feature-flag-development-config-patterns
+ when: manual
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified
+ changes: *code-patterns
- <<: *if-merge-request
changes: *code-qa-patterns
- allow_failure: true
- <<: *if-force-ci
- allow_failure: true
+ when: manual
.build-images:rules:build-assets-image:
rules:
@@ -1132,6 +1132,16 @@
- <<: *if-default-refs
changes: *code-backstage-qa-patterns
+############################
+# Audit event types rules #
+############################
+.audit-event-types:rules:audit-event-types-verify:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-default-refs
+ changes: *code-backstage-qa-patterns
+
##################
# Frontend rules #
##################
@@ -1168,6 +1178,8 @@
- <<: *if-merge-request-labels-run-all-e2e
- <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
changes: *feature-flag-development-config-patterns
+ - <<: *if-merge-request
+ changes: *dependency-patterns
- <<: *if-force-ci
.frontend:rules:compile-production-assets-as-if-foss:
@@ -1423,6 +1435,9 @@
changes: *setup-test-env-patterns
allow_failure: true
- <<: *if-merge-request
+ # Certain components trigger a rebuild of the e2e GDK image so we want to test it too
+ changes: *gdk-component-patterns
+ - <<: *if-merge-request
changes: *code-backstage-qa-patterns
allow_failure: true
- <<: *if-dot-com-gitlab-org-schedule
@@ -1449,6 +1464,43 @@
- <<: *if-force-ci
allow_failure: true
+# All rules copied from qa:rules:package-and-test-ee but jobs are automatic and not allowed to fail
+.qa:rules:trigger-omnibus-env:
+ rules:
+ # From .qa:rules:package-and-test-common
+ - !reference [".qa:rules:package-and-test-never-run", rules]
+ - <<: *if-merge-request-targeting-stable-branch
+ changes: *setup-test-env-patterns
+ - <<: *if-ruby3_1-branch
+ variables:
+ USE_OLD_RUBY_VERSION: 'false'
+ CACHE_EDITION: 'GITLAB_RUBY3_1'
+ - <<: *if-merge-request
+ changes: *dependency-patterns
+ variables:
+ OMNIBUS_GITLAB_BUILD_ON_ALL_OS: 'true'
+ - <<: *if-merge-request-labels-run-all-e2e
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
+ changes: *feature-flag-development-config-patterns
+ - <<: *if-merge-request
+ changes: *feature-flag-development-config-patterns
+ - <<: *if-merge-request
+ changes: *initializers-patterns
+ - <<: *if-merge-request
+ changes: *nodejs-patterns
+ - <<: *if-merge-request
+ changes: *ci-qa-patterns
+ - <<: *if-merge-request
+ changes: *qa-patterns
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified
+ changes: *code-patterns
+ - <<: *if-force-ci
+ # From .qa:rules:package-and-test-schedule
+ - <<: *if-dot-com-gitlab-org-schedule
+ # From .qa:rules:code-merge-request-manual
+ - <<: *if-merge-request
+ changes: *code-patterns
+
.qa:rules:package-and-test-never-run:
rules:
- <<: *if-not-canonical-namespace
@@ -1509,18 +1561,66 @@
# manually. That rule is now in ".qa:rules:code-merge-request-manual" so it can be included when needed and we can
# still use ".qa:rules:package-and-test-common" in jobs we don't want to be manual.
+# Like .qa:rules:package-and-test-common but not allowed to fail.
+# It's named `e2e` instead of `package-and-test` because it's used for e2e tests on GDK (and could be used
+# for other e2e tests)
+.qa:rules:e2e-blocking:
+ rules:
+ - !reference [".qa:rules:package-and-test-never-run", rules]
+ - <<: *if-merge-request-targeting-stable-branch
+ changes: *setup-test-env-patterns
+ - <<: *if-ruby3_1-branch
+ variables:
+ USE_OLD_RUBY_VERSION: 'false'
+ CACHE_EDITION: 'GITLAB_RUBY3_1'
+ - <<: *if-merge-request
+ # Certain components trigger a rebuild of the e2e GDK image so we want to test it too
+ changes: *gdk-component-patterns
+ - <<: *if-merge-request
+ changes: *dependency-patterns
+ - <<: *if-merge-request-labels-run-all-e2e
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
+ changes: *feature-flag-development-config-patterns
+ when: manual
+ - <<: *if-merge-request
+ changes: *nodejs-patterns
+ - <<: *if-merge-request
+ changes:
+ - qa/Gemfile.lock # qa/Gemfile.lock is a part of *qa-patterns, so this rule must be placed before the one with *qa-patterns changes
+ variables:
+ UPDATE_QA_CACHE: "true"
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified
+ changes: *code-patterns
+ - <<: *if-merge-request
+ changes: *code-qa-patterns # Includes all CI changes
+ - <<: *if-force-ci
+ when: manual
+
+.qa:e2e-test-schedule-variables: &qa-e2e-test-schedule-variables
+ variables:
+ CREATE_TEST_FAILURE_ISSUES: "true"
+ PROCESS_TEST_RESULTS: "true"
+ KNAPSACK_GENERATE_REPORT: "true"
+ UPDATE_QA_CACHE: "true"
+ QA_SAVE_TEST_METRICS: "true"
+ QA_EXPORT_TEST_METRICS: "false" # on main runs, metrics are exported to separate bucket via rake task for better consistency
+
.qa:rules:package-and-test-schedule:
rules:
- <<: *if-dot-com-gitlab-org-schedule
allow_failure: true
- variables:
- CREATE_TEST_FAILURE_ISSUES: "true"
- PROCESS_TEST_RESULTS: "true"
- KNAPSACK_GENERATE_REPORT: "true"
- UPDATE_QA_CACHE: "true"
- QA_SAVE_TEST_METRICS: "true"
- QA_EXPORT_TEST_METRICS: "false" # on main runs, metrics are exported to separate bucket via rake task for better consistency
+ <<: *qa-e2e-test-schedule-variables
+
+.qa:rules:e2e-schedule-blocking:
+ rules:
+ - <<: *if-dot-com-gitlab-org-schedule
+ <<: *qa-e2e-test-schedule-variables
+# Note: If any changes are made to this rule, the following should also be updated:
+# 1) .qa:rules:manual-omnibus-and-follow-up-e2e
+# 2) .qa:rules:follow-up-e2e
+# 3) .qa:rules:trigger-omnibus-env
+# 4) .qa:rules:post-run-e2e-message
.qa:rules:package-and-test-ee:
rules:
- !reference [".qa:rules:package-and-test-common", rules]
@@ -1552,27 +1652,8 @@
when: never
- <<: *if-default-branch-schedule-nightly # already executed in the 2-hourly schedule
when: never
- - !reference [".qa:rules:package-and-test-common", rules]
- - !reference [".qa:rules:package-and-test-schedule", rules]
- # Run automatically in all other code MRs that weren't included in ".qa:rules:package-and-test-common".
- - <<: *if-merge-request
- changes: *code-patterns
- allow_failure: true
-
-.qa:rules:package-and-test-old-nav:
- rules:
- - !reference [".qa:rules:package-and-test-never-run", rules]
- - <<: *if-merge-request
- changes: *code-patterns
- when: manual
- allow_failure: true
- - <<: *if-default-branch-schedule-nightly
- allow_failure: true
- variables:
- CREATE_TEST_FAILURE_ISSUES: "true"
- PROCESS_TEST_RESULTS: "true"
- QA_SAVE_TEST_METRICS: "true"
- QA_EXPORT_TEST_METRICS: "false"
+ - !reference [".qa:rules:e2e-blocking", rules]
+ - !reference [".qa:rules:e2e-schedule-blocking", rules]
.qa:rules:package-and-test-nightly:
rules:
@@ -1595,6 +1676,139 @@
- !reference [".qa:rules:package-and-test-nightly", rules]
- !reference [".qa:rules:package-and-test-ce", rules]
+# These are based on `.qa:rules:trigger-omnibus` but with automatic jobs changed to `when: never.`
+# If any changes are made to this rule, `.qa:rules:follow-up-e2e` should also be updated.
+.qa:rules:manual-omnibus-and-follow-up-e2e:
+ rules:
+ - !reference [".qa:rules:package-and-test-never-run", rules]
+ - !reference [".qa:rules:code-merge-request-manual", rules]
+ - <<: *if-dot-com-gitlab-org-schedule
+ when: never
+ - <<: *if-merge-request-targeting-stable-branch
+ changes: *setup-test-env-patterns
+ when: never
+ - <<: *if-ruby3_1-branch
+ when: never
+ - <<: *if-merge-request
+ changes: *dependency-patterns
+ when: never
+ - <<: *if-merge-request-labels-run-all-e2e
+ when: never
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
+ changes: *feature-flag-development-config-patterns
+ when: manual
+ allow_failure: true
+ - <<: *if-merge-request
+ changes: *feature-flag-development-config-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *initializers-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *nodejs-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *ci-qa-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *qa-patterns
+ when: never
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified
+ changes: *code-patterns
+ when: never
+ - <<: *if-force-ci
+ when: manual
+ allow_failure: true
+
+# These are based on `.qa:rules:manual-omnibus-and-follow-up-e2e` but with manual jobs changed to automatic
+.qa:rules:follow-up-e2e:
+ rules:
+ - !reference [".qa:rules:package-and-test-never-run", rules]
+ - <<: *if-merge-request
+ changes: *code-patterns
+ allow_failure: true
+ - <<: *if-dot-com-gitlab-org-schedule
+ when: never
+ - <<: *if-merge-request-targeting-stable-branch
+ changes: *setup-test-env-patterns
+ when: never
+ - <<: *if-ruby3_1-branch
+ when: never
+ - <<: *if-merge-request
+ changes: *dependency-patterns
+ when: never
+ - <<: *if-merge-request-labels-run-all-e2e
+ when: never
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
+ changes: *feature-flag-development-config-patterns
+ allow_failure: true
+ - <<: *if-merge-request
+ changes: *feature-flag-development-config-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *initializers-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *nodejs-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *ci-qa-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *qa-patterns
+ when: never
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified
+ changes: *code-patterns
+ when: never
+ - <<: *if-force-ci
+ allow_failure: true
+
+# These are based on `qa:rules:package-and-test-ee` but with when:never in all except for code-patterns in merge requests
+.qa:rules:post-run-e2e-message:
+ rules:
+ # From .qa:rules:package-and-test-common
+ - !reference [".qa:rules:package-and-test-never-run", rules]
+ - <<: *if-merge-request-targeting-stable-branch
+ changes: *setup-test-env-patterns
+ when: never
+ - <<: *if-ruby3_1-branch
+ when: never
+ - <<: *if-merge-request
+ changes: *dependency-patterns
+ when: never
+ - <<: *if-merge-request-labels-run-all-e2e
+ when: never
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-manual-ff-package-and-e2e
+ changes: *feature-flag-development-config-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *feature-flag-development-config-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *initializers-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *nodejs-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *ci-qa-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *qa-patterns
+ when: never
+ - <<: *if-dot-com-gitlab-org-and-security-merge-request-and-qa-tests-specified
+ changes: *code-patterns
+ when: never
+ - <<: *if-force-ci
+ when: never
+ # From .qa:rules:package-and-test-schedule
+ - <<: *if-dot-com-gitlab-org-schedule
+ when: never
+ # From .qa:rules:code-merge-request-manual
+ - <<: *if-merge-request
+ changes: *code-patterns
+ allow_failure: true
+
###############
# Rails rules #
###############
@@ -2024,13 +2238,20 @@
- <<: *if-merge-request-labels-run-on-pg12
- !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-default-rules", rules]
+.rails:rules:rspec-merge-auto-explain-logs:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-merge-request-labels-pipeline-expedite
+ when: never
+ - <<: *if-merge-request-labels-run-all-rspec
+ - <<: *if-merge-request-labels-record-queries
+
.rails:rules:default-branch-schedule-nightly--code-backstage-default-rules:
rules:
- <<: *if-merge-request-labels-pipeline-expedite
when: never
- <<: *if-default-branch-schedule-nightly
- - <<: *if-merge-request
- changes: [".gitlab/ci/rails.gitlab-ci.yml"]
.rails:rules:default-branch-schedule-nightly--code-backstage:
rules:
@@ -2545,8 +2766,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/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml
index ddd479385fc..b652ac5e30b 100644
--- a/.gitlab/ci/setup.gitlab-ci.yml
+++ b/.gitlab/ci/setup.gitlab-ci.yml
@@ -176,7 +176,7 @@ e2e-test-pipeline-generate:
trigger-omnibus-env:
stage: prepare
extends:
- - .qa:rules:package-and-test-ee
+ - .qa:rules:trigger-omnibus-env
needs:
# We need this job because we need its `cached-assets-hash.txt` artifact, so that we can pass the assets image tag to the downstream omnibus-gitlab pipeline.
- compile-production-assets
diff --git a/.gitlab/ci/static-analysis.gitlab-ci.yml b/.gitlab/ci/static-analysis.gitlab-ci.yml
index 40582170cc9..3344bb3a06d 100644
--- a/.gitlab/ci/static-analysis.gitlab-ci.yml
+++ b/.gitlab/ci/static-analysis.gitlab-ci.yml
@@ -64,6 +64,7 @@ generate-apollo-graphql-schema:
script:
- apollo client:download-schema --config=config/apollo.config.js ${GRAPHQL_SCHEMA_APOLLO_FILE}
artifacts:
+ expire_in: 30 days
name: graphql-schema-apollo
paths:
- "${GRAPHQL_SCHEMA_APOLLO_FILE}"
@@ -137,7 +138,7 @@ rubocop:
select_existing_files < "${RSPEC_CHANGED_FILES_PATH}" > "${RUBOCOP_TARGET_FILES}"
# Skip running RuboCop if there's no target files
if [ -s "${RUBOCOP_TARGET_FILES}" ]; then
- run_timed_command "fail_on_warnings bundle exec rubocop --config .rubocop.yml --parallel --force-exclusion $(cat ${RUBOCOP_TARGET_FILES})"
+ run_timed_command "fail_on_warnings bundle exec rubocop --parallel --force-exclusion $(cat ${RUBOCOP_TARGET_FILES})"
else
echoinfo "Nothing interesting changed for RuboCop. Skipping."
fi
@@ -177,7 +178,7 @@ feature-flags-usage:
script:
# We need to disable the cache for this cop since it creates files under tmp/feature_flags/*.used,
# the cache would prevent these files from being created.
- - run_timed_command "fail_on_warnings bundle exec rubocop --config .rubocop.yml --only Gitlab/MarkUsedFeatureFlags --cache false"
+ - run_timed_command "fail_on_warnings bundle exec rubocop --only Gitlab/MarkUsedFeatureFlags --cache false"
artifacts:
expire_in: 31d
when: always
@@ -193,14 +194,16 @@ semgrep-appsec-custom-rules:
script:
# Required to avoid a timeout https://github.com/returntocorp/semgrep/issues/5395
- git fetch origin master
+ - git clone $CUSTOM_RULES_REPOSITORY "${CI_BUILDS_DIR}/sast-custom-rules"
# Include/exclude list isn't ideal https://github.com/returntocorp/semgrep/issues/5399
- |
- semgrep ci --gitlab-sast --metrics off --config $CUSTOM_RULES_URL \
+ semgrep ci --gitlab-sast --metrics off --config "${CI_BUILDS_DIR}/sast-custom-rules" \
--include app --include lib --include workhorse \
--exclude '*_test.go' --exclude spec --exclude qa > gl-sast-report.json || true
variables:
- CUSTOM_RULES_URL: https://gitlab.com/gitlab-com/gl-security/appsec/sast-custom-rules/-/raw/main/gitlab-sast-rules/rules.yml
+ CUSTOM_RULES_REPOSITORY: https://gitlab.com/gitlab-com/gl-security/appsec/sast-custom-rules.git
artifacts:
+ expire_in: 30 days
paths:
- gl-sast-report.json
diff --git a/.gitlab/ci/templates/gem.gitlab-ci.yml b/.gitlab/ci/templates/gem.gitlab-ci.yml
index 46c5e1342c6..f17e168c1af 100644
--- a/.gitlab/ci/templates/gem.gitlab-ci.yml
+++ b/.gitlab/ci/templates/gem.gitlab-ci.yml
@@ -11,12 +11,19 @@ spec:
---
.gems:rules:$[[inputs.gem_name]]:
rules:
+ - if: '$CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_TYPE == "maintenance"'
- if: '$CI_MERGE_REQUEST_EVENT_TYPE == "merged_result" || $CI_MERGE_REQUEST_EVENT_TYPE == "detached"'
changes:
- "$[[inputs.gem_path_prefix]]$[[inputs.gem_name]]/**/*"
- ".gitlab/ci/gitlab-gems.gitlab-ci.yml"
+ - ".gitlab/ci/vendored-gems.gitlab-ci.yml"
- ".gitlab/ci/templates/gem.gitlab-ci.yml"
- "gems/gem.gitlab-ci.yml"
+ # Ensure new cop in the monolith don't break internal gems Rubocop checks: https://gitlab.com/gitlab-org/gitlab/-/issues/419915
+ - ".rubocop.yml"
+ - "rubocop/**/*"
+ - ".rubocop_todo/**/*"
+
gems $[[inputs.gem_name]]:
extends: ".gems:rules:$[[inputs.gem_name]]"
diff --git a/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml b/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml
index 367579b1999..41f85c492d9 100644
--- a/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml
+++ b/.gitlab/ci/test-on-gdk/main.gitlab-ci.yml
@@ -86,7 +86,6 @@ variables:
dotenv: suite_status.env
expire_in: 7 days
when: always
- allow_failure: true
download-knapsack-report:
extends:
@@ -118,6 +117,11 @@ cache-gems:
gdk reconfigure &&\
gdk restart"
+download-fast-quarantine-report:
+ extends:
+ - .download-fast-quarantine-report
+ - .rules:download-fast-quarantine-report
+
gdk-qa-smoke:
extends:
- .gdk-qa-base
@@ -143,6 +147,7 @@ gdk-qa-smoke-with-load-balancer:
- changes:
- ".gitlab/ci/test-on-gdk/**"
- "lib/gitlab/database/load_balancing/**/*"
+ allow_failure: true
gdk-qa-reliable:
extends:
@@ -153,6 +158,7 @@ gdk-qa-reliable:
QA_RUN_TYPE: gdk-qa-blocking
rules:
- when: always
+ allow_failure: true
gdk-qa-reliable-with-load-balancer:
extends:
@@ -171,6 +177,7 @@ gdk-qa-reliable-with-load-balancer:
- changes:
- ".gitlab/ci/test-on-gdk/**"
- "lib/gitlab/database/load_balancing/**/*"
+ allow_failure: true
gdk-qa-non-blocking:
extends:
@@ -181,6 +188,7 @@ gdk-qa-non-blocking:
QA_RUN_TYPE: gdk-qa-non-blocking
rules:
- when: manual
+ allow_failure: true
# ==========================================
# Post test stage
diff --git a/.gitlab/ci/workhorse.gitlab-ci.yml b/.gitlab/ci/workhorse.gitlab-ci.yml
index 00c4dc6c9a9..5b128ef6170 100644
--- a/.gitlab/ci/workhorse.gitlab-ci.yml
+++ b/.gitlab/ci/workhorse.gitlab-ci.yml
@@ -34,6 +34,7 @@ workhorse:test go:
- make -C workhorse test-coverage
coverage: '/\d+.\d+%/'
artifacts:
+ expire_in: 30 days
paths:
- workhorse/coverage.html
diff --git a/.gitlab/issue_templates/Design Sprint.md b/.gitlab/issue_templates/Design Sprint.md
index 9eaa9da3675..2ad3bac0a05 100644
--- a/.gitlab/issue_templates/Design Sprint.md
+++ b/.gitlab/issue_templates/Design Sprint.md
@@ -2,18 +2,18 @@
This template outlines a sample set-up process, activities and deliverables for running a Remote Design Sprint. The specific activities and deliverables should be customized based on your objectives and timeline.
-Please refer to the [Remote Design Sprint Handbook page](#anchor-tag-to-handbook-page) for additional recommendations.
+Please refer to the [Remote Design Sprint Handbook page](https://about.gitlab.com/handbook/product/ux/design-sprint/) for additional recommendations.
## Design Sprint Focus
-* [ ] Have you [determined that a Design Sprint is appropriate for this project](#anchor-tag-to-handbook-page)?
-<!-- What is the focus of the [Design Sprint](https://about.gitlab.com/handbook/product/product-processes/#design-sprint)? What problem area will you be solving for and who is the target user? -->
+* [ ] Have you [determined that a Design Sprint is appropriate for this project](https://about.gitlab.com/handbook/product/ux/design-sprint/#when-to-opt-for-a-remote-design-sprint)?
+_What is the focus of the [Design Sprint](https://about.gitlab.com/handbook/product/product-processes/#remote-design-sprint)? What problem area will you be solving for and who is the target user?_
## Objectives
-
-<!-- Try to describe the objectives of the Sprint in detail. eg "We want to introduce a new feature but we are unsure that we are thinking about the solution from the customer's perspective and through the Sprint we want to rethink the solution, prototype it and validate it with our customers" or "We are unhappy with the direction of one of our categories and we want to explore new directions with different stakeholders, reach to one solution and test it with users" or "Among the team we have different visions for a specific category and we want to work towards a solution we all support and test it with users". -->
+_What is the objective(s) this Design Sprint will entail?_
+<!-- Try to describe the objectives of the Sprint in detail. e.g., "We want to introduce a new feature but we are unsure that we are thinking about the solution from the customer's perspective, and through the Sprint we want to rethink the solution, prototype it and validate it with our customers" or "We are unhappy with the direction of one of our categories and we want to explore new directions with different stakeholders, reach to one solution and test it with users" or "Among the team we have different visions for a specific category and we want to work towards a solution we all support and test it with users". -->
## Outputs
-
+_Select which outputs you want to have at the end of the Sprint._
- [ ] A User testing flow.
- [ ] A Prototype to be tested with users.
- [ ] User testing analysis.
@@ -27,14 +27,7 @@ Please refer to the [Remote Design Sprint Handbook page](#anchor-tag-to-handbook
| YYYY-MM-DD | YYYY-MM-DD |
| TT:TT PST | TT:TT PST |
-
-### WHEN
-
-**Start date:**
-
-**End date:**
-
-**Reference time zone:**
+**Reference time zone:** All times will be posted in [UTC](https://www.timeanddate.com/worldclock/timezone/utc).
### WHERE
@@ -57,89 +50,52 @@ Please refer to the [Remote Design Sprint Handbook page](#anchor-tag-to-handbook
Here is the list of tools for the Sprint preparation, collaboration and documentation. Prior to the Sprint make sure you have access to all of the following:
* **GitLab**<br/>
-Each Sprint day outcomes and material will be documented in a separate issue under the Design Sprint epic.
-
-* **Mural** (You can join as anonymous but we need to be able to identify input against names, so please create an account beforehand.<br/>
+Each Sprint day outcomes and material will be documented in separate issues under the Design Sprint epic:
+ * **Kickoff:** (Kickoff Issue Link)
+ * **Day One:** (Day 1 Issue Link)
+ * **Day Two:** (Day 2 Issue Link)
+ * **Day Three:** (Day 3 Issue Link)
+ * **Day Four:** (Day 4 Issue Link)
+
+* **Mural** (You can join as anonymous but we need to be able to identify input against names, so please create an account beforehand.)<br/>
We will use Mural for most of the Sprint collaboration. Some of the things we will do in Mural:
- * Create artifacts like affinity diagrams from participants' input
- * Use post-its to comment on each other's points and to add notes
- * Vote on ideas and solutions
+ * Create artifacts like affinity diagrams from participants' input.
+ * Use post-its to comment on each other's points and to add notes.
+ * Vote on ideas and solutions.
* Create the first draft of the prototype.
-The Mural link to the collaboration project will be provided in the issue before the start of the Design Sprint.
+ * **The Mural link can be found here:** (Mural Link)
* **Video and/or screen recording tool** (Loom, Quicktime, Zoom or another tool you are using).<br/>
-As part of the pre-Sprint homework, you will be asked to record a short Lightning Walkthrough video. You can use any tool you feel comfortable with as long as it can capture your screen, mouse pointer and your audio.
+As part of the pre-Sprint homework, you will be asked to record a short Lightning Walkthrough video (don't worry, this will be explained in detail during the Sprint :smile:). You can use any tool you feel comfortable with as long as it can capture your screen, mouse pointer, and audio.
-* **A4/Letter sized paper (preferably white blank), Sharpies/Pens** (please don't use a pencil because it doesn't create enough contrast for photos).<br/>
-Day 2 of the sprint involves some (async) ideation via sketching so you will need a writing utensil (Sharpies are preferred because they force you to draw at a lower fidelity because the small details aren't necessary at this point) and some paper. This is the most fun part of the Sprint where you get into a design thinking mindset and can appeal to your creative self. Don't worry, it's not about artistry, it's about ideas and collaboration.
+* **A4/Letter-sized paper (preferably white, blank), Sharpies/Pens** (Please don't use a pencil because it doesn't create enough contrast for photos).<br/>
+Day 2 of the Sprint involves some (async) ideation via sketching so you will need a writing utensil (Sharpies are preferred because they force you to draw at a lower fidelity because the small details aren't necessary at this point) and some paper. This is the most fun part of the Sprint where you get into a design thinking mindset and can appeal to your creative self. Don't worry, it's not about artistry, it's about ideas and collaboration. It'll be fun!
* **Camera (phone or other) or scanner**<br/>
You will need to upload sketches as images for the facilitator to prepare the material before the next sync meeting. You can take a photo with your phone or use a scanner if available.
* **Post-it notes (Optional)**<br/>
-If you enjoy taking notes using post-it notes make sure you have available some of them as well. The upside is that they will make you feel more like you are in a workshop and will help the ideas flow (I find that typing is distracting while ideating). The downside is that you will have to digitalise the ones you want to share with the team in Mural.
+If you enjoy taking notes using Post-it notes make sure you have some of them as well. The upside is that they will make you feel more like you are in a workshop and will help the ideas flow (I find that typing is distracting while ideating). The downside is that you will have to digitize the ones you want to share with the team in Mural.
## Artefacts & Pre-Read Material
-<!-- If there is material that will be useful for the participants to read before the Design Sprint add here. -->
+<!-- If there is material that will be useful for the participants to read before the Design Sprint add here, such as the sprint slide deck or design sprint material -->
### Handbook pages
<!-- Add a link to the category vision from the handbook -->
### Competitor resources
-<!-- Add any solutions by competitors that are relevant to the Design Sprint topic and could be used as source of inspiration. -->
-
+<!-- Add any solutions by competitors that are relevant to the Design Sprint topic and could be used as a source of inspiration. -->
### Articles on Design Sprints
* [The Design Sprint](https://www.gv.com/sprint/)
* [The Ultimate Guide To Remote Design Sprints](https://drive.google.com/file/d/16bwrAqHVf8qxovd87Q7LdzqwAgy7a6Rx/view?usp=sharing)
-## Asyncronus tasks
-
-### Design Sprint preparation
-
-<!-- Replace the roles with GitLab handles to assign to specific participants -->
-
-- [ ] Finalise participant list - `decider` and `facilitator`
-- [ ] Create [participation form](https://docs.google.com/forms/d/e/1FAIpQLSc0_BNltvRW8yXXaJd8sIKzgDmrSGqILMfkoCJrAj6sFcsMcg/viewform?usp=sf_link) and send to participants (**deadline**: [date]) - `facilitator`
-- [ ] Create a dedicated Slack channel and add participants - `facilitator`
-- [ ] Promote this issue to an epic - `facilitator`
-- [ ] Create issues under the epic for the pre-workshop tasks: Expert interviews ([example](https://gitlab.com/groups/gitlab-org/configure/-/epics/3#note_332412524)), Lightning walkthroughs and How might we.. notetaking assignment ([example](https://gitlab.com/gitlab-org/configure/general/-/issues/52)), Voting How might we... notes assignment ([example](https://gitlab.com/gitlab-org/configure/general/-/issues/54)) - `facilitator`
-- [ ] Create sync meetings in calendar and invite all participants (**deadline**: [date]) - `decider` or `facilitator`
-- [ ] Block 2 hours for Sprint activities in calendar for the Sprint week - `all participants`
-- [ ] Prepare material and tools (eg. presentation templates, Google folders, Instructions videos etc) and Mural board from the [Mural template ](https://app.mural.co/invitation/mural/gitlab2474/1586990879319?sender=jmandell0210&key=03c25e92-9a43-4a3d-8907-6f0c3b094ab8) - facilitator
-- [ ] Finalize Agenda - `facilitator`
-- [ ] Run a test with material and tools - `facilitator`
-- [ ] Start user recruiting for prototype user testing (EOD 1) - `facilitator` or `decider`
-
-### Pre-Sprint activities (Homework exercises)
-
-Each exercise should be explained and documented in a separate issue. You can use the example issues above as templates.
-
-- [ ] Fill form and submit (**deadline**: [date]) - `all participants except the facilitator`
-- [ ] Expert interview analysis - `facilitator`
-- [ ] Lightning walkthrough videos (**deadline**: [date]) - `all participants except the facilitator`
-- [ ] How might we... notetaking assignment (**deadline**: [date]) - `all participants except the facilitator`
-- [ ] Voting How might we... notes assignment (**deadline**: [date]) - `all participants except the facilitator`
-- [ ] Add all required material to the Mural board (**deadline**: [date]) - `facilitator`
-
-### During Sprint activities
-
-- [ ] Organise user testing sessions - `facilitator` or `decider`
-- [ ] Create the Prototype to be tested and task list (End of Day 3) - `Product designer` or `Front end developer`
-- [ ] Run user testing sessions - `facilitator` or `decider`
-
-### Post-Sprint activities
-
-- [ ] Create a feedback issue for the Design Sprint - `facilitator` or `decider`
-- [ ] Analyse user testing results - `facilitator` or `decider`
-- [ ] Create report and share with the Design Sprint participants and wider team - `facilitator` or `decider`
-
## Personas
Deciding which persona we are focusing on will be part of the Day 1 discussions in the workshop. The personas we are going to consider are:
-<!-- Choose which personas could be target users so that you choose from this list during the Sprint. Personas are described at https://about.gitlab.com/handbook/product/personas/
+<!-- Choose which personas could be target users, and choose from this list during the Sprint. Personas are described at https://about.gitlab.com/handbook/product/personas/
* [Parker (Product Manager)](https://about.gitlab.com/handbook/product/personas/#parker-product-manager)
* [Delaney (Development Team Lead)](https://about.gitlab.com/handbook/product/personas/#delaney-development-team-lead)
@@ -161,44 +117,162 @@ Deciding which persona we are focusing on will be part of the Day 1 discussions
-->
-## Agenda
-### Day 1
-
- | Activity | Duration | Tool | Description |
-|---|---|---|---|
-| Warm-up exercise | 5 mins | Mural | Write 1 post-it answering the questions: <br/>"My name is…"<br/>"My role is…"<br/>“Something about myself you may not know is…”<br/>"My wish for this workshop is…" |
-| Summarise the async activities & complete Map | 20 mins | Mural | The Map is intended to show the focus of the Sprint and doesn't need to be complete or detailed. Steps:<br/> Go through the Map and the top voted How might we’s tree as a warm-up/reminder. <br/> • Make appropriate adjustments and additions to the map based on the reviews from the team. <br/> • Add the most voted HMWs to the most relevant area on the Map. If a HMW can go to more than one place, add it to the most left area. |
-| Long term goals/Deciding the Sprint goal | 15 mins | Mural | • Long term goal: Everyone spends 5 minutes in silence and writes one (max 2) long term goal post-it note for the Sprint. (5 mins ) <br/> • One by one everyone will read their goal aloud to the team. (5 mins) <br/> Everyone besides the decider will vote on the goal of the Sprint (1 dot). (4 minutes) <br/> The decider then makes the final decision on the long term goal of the Sprint. (1 min) |
- | Sprint questions | 20 mins | Mural | • Referencing the Long Term goal, everyone will write 2-3 post-it note Sprint questions for the biggest challenges they think might stop us from achieving our long term goal (what might hold us back or hinder us from achieving this goal). The questions should start with “Can we...” (similarly to the HMW). (7 mins) <br/> • One by one everyone will read their Sprint questions aloud to the team. (5 mins) <br/> • Everyone (including the decider) votes on the top 3 questions they think we should focus on as Sprint challenges (3 dots). (5 mins) <br/> • Separate the 3 most voted questions and keep them on the side. (1 min) <br/> • Finally, the decider chooses one Sprint question that will be the question we will focus on more during the Sprint by placing a green smiley sticker on it. (1 min) <br/> • Move the long term goal and the Sprint questions to the dedicated Mural space, highlighting the ultimate Sprint question that the decider chose. (1 min) |
-| Recap day. <br/> Short intro to next day and share the video with the next day exercise instructions. | 5 mins | Mural, Zoom | Summarise activities of the day and decisions. Brief walkthrough of the next day's activities and wrap up the day. |
-
-### Day 2
- | Activity | Duration | Tool | Description |
-|---|---|---|---|
-| Summary of Day 1 outcomes | 5 mins | Mural | Go through the previous day's activities, the Long term goal and the top voted Sprint questions, highlighting the ultimate Sprint question, and summarise the concept solution sketching homework exercise. |
-| Concept gallery review | 20 mins | Mural | • Everyone takes some time to read through and look at every aspect of each of the sketches in the Concept Gallery. The concept sketches are anonymous to avoid bias (15 mins). <br/> • The team will then vote on their favorite concepts and/or components of a concept via the red dots. When they see something that interests them and they think it will help solve the long term goal/challenges they can add one or more dots. They can use as many red dots as they want. Be frivolous when adding dots but if you really like or think something is important, add more to draw attention to it (5 mins).<br/> Note: If anyone has any questions about a concept sketch create a red sticky and write that question down placing it under the concept sketches. |
-| Speed critique | 5 mins | Mural | • The facilitator walks through each of the concepts, briefly summarizing each concept (to the best of their ability) with a focus on the areas that have been dotted. <br/> • During this time the facilitator will also try to answer any of the red post-it questions. <br/> • When the facilitator believes they’ve reached the end of their summary for that concept, ask the team if there was a concept that was voted on but not discussed or if the point of the red dot vote was missed in the discussion.
-| Straw Poll | ~15 mins | Mural | • All the participants, besides the Decider, vote using the larger green dot by adding their initials to it and placing it on the concept sketch they believe is the best one that will best fulfill the long term goal and challenges of this sprint and is worthy of being prototyped (2 mins) <br/> • Each participant will create a post-it note that explains their reasoning for choosing the concept. (5 mins) <br/> • Each participant will then get 1 minute to read through their post-it and attempt to sell their preferred concept to the Decider and the other participants. (5-10 mins) |
-| Super Vote (The Decider) | 10 mins | Mural | • The Decider makes their final decision of which of the concepts is the one to move forward with. <br/> • The decider can discuss their thought process and any questions with the rest of the participants. <br/> • They will get 2 green smiley stickers to vote with. Placing one on the concept they want to move forward with and the second, optional smiley, can be used to mark any other area of any other concept they think should also be incorporated into the prototype. |
-
-
-### Day 3
- | Activity | Duration | Tool | Description |
-|---|---|---|---|
-| User test flow | 25 mins | Mural | • Each participant writes (on separate post-its) 6 steps/actions that represent a step of a flow (you can think of a high-level prototype flow) from start to finish. Place them in the appropriate location on the User Test section. (10 mins) <br/> • Each participant takes 1 minute to walk the team through their flows one-by-one (5-10 mins total). Note: It's best to have the Decider go last. <br/> • Voting: All the Sprint participants get one red dot (the Decider gets 2) to vote on the flow row they think is the best foundation for the prototype. <br/> • After everyone has voted the Decider will vote on the row they think is best with one dot using the second dot to, optionally, vote on an element of another flow they think should be incorporated into the prototype. (5 mins) <br/> • If the second dot is used copy the specific sticky into the main flow voted by the Decider. |
-| Storyboard | 45 mins | Mural | • Copy the winning flow from the User Test Flow exercise to the Storyboard/Prototype section placing each individual post-it note into its own container. <br/> • Look at the sketch concepts and move over any relevant screens that fulfill the needs of the sticky note in that container. You can move the entire concept or screen capture cut/paste parts of concepts. Note: Don’t add any unnecessary details or ideas that aren’t needed for the end result prototype <br/> • Fill in the details that are required for each step described in the sticky. |
-| Recap day | 5 mins | Mural, Zoom | Summarise activities of the day and decisions. Brief walkthrough of the next day's activities and wrap up the day. |
-
-### Day 4
- | Activity | Duration | Tool | Description |
-|---|---|---|---|
-| Validate Prototype | 30 mins | Mural | • Go through the Prototype created by the Product designer or Front end developer and discuss any inaccuracies or missing content. |
-| Wrap up the Sprint | 15 mins | Zoom, GitLab | • Recap the Sprint and discuss next steps. Create user testing issues. |
-
-### Day 5
- | Activity | Duration | Tool | Description |
-|---|---|---|---|
-| Prototype testing with 5 users | ~45 mins | Figma or code/Zoom | • Test the prototype with users. |
+## Pre-Sprint Preparation | Due Date: `Add Date`
+
+- [ ] Promote this issue to an epic.
+- [ ] Finalize objective and outputs.
+- [ ] Finalize participant list.
+- [ ] Create a dedicated Slack channel and add participants.
+- [ ] Create issues for each day of the sprint.
+- [ ] Prepare activity slide deck.
+- [ ] Prepare Mural Board and ensure participant access.
+- [ ] Prepare instructional videos for activities (Lightning Talks, HMWs, Crazy 8s etc).
+- [ ] Organize and inform team members who will be providing lightning talk recordings.
+- [ ] Open a recruitment issue for user testing.
+- [ ] Create sync meetings in calendars for all participants.
+- [ ] Record Kickoff Video.
+- [ ] Do a Sprint test run.
+
+## Sprint Kickoff | `Add Date`
+
+#### Pre-Day Facilitator Checklist:
+- [ ] Ensure [Kickoff Issue](Add Link) is complete.
+- [ ] Assign participants to the [Kickoff Issue](Add Link).
+- [ ] Ensure warm-up exercise Mural is set up.
+- [ ] Prep Q&A issue thread.
+- [ ] Send a `Welcome to the Sprint` slack message.
+
+ | Activity | Type of Activity | Duration | Tool | Description |
+|---|---|---|---|---|
+| Introduction to Design Sprints | Async | 20 Minutes | Video Recording | • The facilitator gives an overview of the Sprint, including details about what they are, why they are used, and why they can help solve the problem for this Sprint. <br/> • The facilitator gives participants an overview of what they need to complete a Design Sprint such as a run down of the rules, and supples, as well as an agenda and basic expectations. <br/> • The facilitator gives participants an overview of the problem we will be solving and allows for an async Q&A period. |
+| Icebreaker | Async | 5 Minutes | Mural | • All Sprint participants give an async introduction in Mural. |
+| Q&A Period | Async | 5 Minutes | GitLab and Slack | • Participants can ask questions about the Sprint. (Optional) |
+| Record Lightning Talk | Async | 10 Minutes | Zoom | • Participants record their Lightning Talk. |
+
+#### Post-Day Facilitator Checklist:
+- [ ] Answer any questions that come up during the Q&A period.
+- [ ] Send a homework reminder in the Slack channel.
+
+## Day 1 - Sprint Homework | `Add Date`
+
+#### Pre-Day Facilitator Checklist:
+- [ ] Ensure [Day 1 Issue](Add Link) is complete.
+- [ ] Ensure Lightning Talk recordings are added to the [Day 1 Issue](Add Link).
+- [ ] Ensure participants have access to the Note Taking Activity Walkthrough Video.
+- [ ] Ensure HMW section on Mural is organized.
+- [ ] Ensure participants have access to the HMW Activity Walkthrough video.
+
+ | Activity | Type of Activity | Duration | Tool | Description |
+|---|---|---|---|---|
+| Watch Lightning Talks | Async | 15 Minutes Per Talk | Video Recording and Note Taking Tool | • Participants will watch lightning talks and complete the note-taking activity async. <br/> • The Facilitator will provide an overview video of what is expected during the note taking portion of this activity. |
+| How Might We’s (HMWs) | Async | 20 Minutes | Mural | • Participants will take their notes from the Lightning Talk activity and craft some HMWs around the opportunities uncovered. <br/> • The facilitator will provide participants a video to describe the HMW activity and review what makes a good HMW statement. <br/> • The facilitator will also be available to sync on Slack for any questions around the activity. |
+
+#### Post-Day Facilitator Checklist:
+- [ ] Answer any questions that come up during the async HMW activity.
+- [ ] Send a sync session reminder in the Slack channel.
+
+## Day 1 - Sync Session | `Add Date`
+
+#### Pre-Day Facilitator Checklist:
+- [ ] Ensure all sync Mural boards are organized (Affinity Mapping, Goals, Hurdles, Squiggle Birds).
+- [ ] Ensure sync session is recorded.
+
+ | Activity | Type of Activity | Duration | Tool | Description |
+|---|---|---|---|---|
+| Affinity Mapping | Sync | 30 Minutes | Zoom and Mural | • Participants take turns reading aloud their HMWs. (5 minutes). <br/> • Once the review has completed, the facilitator will choose an Affinity Mapper who will be in charge of categorizing the HMWs with the help of the entire group (10 Minutes). <br/> • Once the HMWs are organized into categories, the group will do a round of dot voting on the categories we want to focus on for the Sprint. Each participant will get three votes, and vote individually on the category they feel is most important to work on (10 Minutes). <br/> • The facilitator will allow time for discussion around the HMW groups chosen, and see if there needs to be adjustments (5 Minutes). |
+| Sprint Goal | Sync | 20 Minutes | Zoom and Mural | • Based on the outcomes of the HMW activity, participants start by asking themselves the following question: “If everything worked out perfectly, what would that look like for this project?” <br/> • Each participant writes one Sprint goal on a Mural sticky starting with “By the end of the Sprint…” (10 Minutes) <br/> • Everyone on the team should share their Sprint Goal with the larger group and post them on the Mural (5 Minutes). <br/> • Everyone is given one dot to vote on what they think the Sprint Goal should be. (5 Minutes) |
+| Sprint Hurdles | Sync | 20 Minutes | Zoom and Mural | • Participants will list out possible critical hurdles, in the form of a question, that may stop you from reaching your goal: What could stop us or heavily impact us from reaching our goals? <br/> • Each question must start with ‘Can we...’ <br/> • Each person can only write 2 questions (10 Minutes) <br/> • Everyone on the team should share their Hurdles back to the larger group and post them up on the Mural (5 Minutes). <br/> • Everyone is given three to vote on what they think are the most important to focus on as challenges toward the Goal. (5 Minutes) |
+| Recap of Day | Sync | 5 Minutes | Zoom and Mural | • Facilitator gives and overview of what has been completed so far during Day 1 of the Sprint and expectations for Day 2 Homework |
+| Squiggle Birds | Sync | 5 Minutes | Zoom, Paper and Pen/Sharpie | • Sync warm-up drawing activity to prep for next async tasks. <br/> • The facilitator will draw a squiggle on Mural and encourage all participants to also make a squiggle. <br/> • Everyone will then turn the squiggle into a bird. <br/> • The facilitator will share that "Our minds are great at recognizing patterns." Sketches are only used to convey an idea, so they don't need to be super detailed or accurate. |
+
+#### Post-Day Facilitator Checklist:
+- [ ] Send a Day 1 overview and homework reminder in the Slack channel.
+- [ ] Post-sync session recording in the Slack channel.
+- [ ] Ensure [Day 2 Issue](Add Link) is complete.
+- [ ] Ensure participants have access to the Crazy 8s Walkthrough Video.
+- [ ] Ensure the Crazy 8s section on Mural is organized.
+
+## Day 2 - Sprint Homework | (Add Date)
+
+#### Pre-Day Facilitator Checklist:
+- [ ] Ensure Ideation recordings are added to the [Day 2 Issue](Add Link).
+- [ ] Ensure participants have access to the Ideation Walkthrough Videos.
+- [ ] Ensure the Ideation section on Mural is organized.
+
+| Activity | Type of Activity | Duration | Tool | Description |
+|---|---|---|---|---|
+| Note Recap | Async | Google Docs | 5 Minutes | • Review all the notes that were taken during Day 1. <br/> • Review all the HMW stickies to jog your memory. |
+| Ideas List | Async | Google Docs | 5 Minutes | • On a piece of paper jot down any solutions that come to mind around solving HMW statements. |
+| Crazy 8s | Async | Paper and Marker/Pen | 8 Minutes | • Grab your printer paper and create an 8-panel page by folding your paper in half 3 times. <br/> • Draw a sketch for an idea in each rectangle. <br/> • Start at the top of your HMW statements/ideas list from the previous activity.|
+| Share-out Prep | Async | Mural | 10 Minutes | • In preparation for the share-out, take a photo of your Crazy 8 paper and add it to the Mural. |
+
+#### Post-Day Facilitator Checklist:
+- [ ] Send a sync session reminder in the Slack channel.
+
+## Day 2 - Sync Session | `Add Date`
+
+#### Pre-Day Facilitator Checklist:
+
+- [ ] Ensure sync Murals are organized (Crazy 8s, Storyboarding).
+- [ ] Ensure sync session is recorded.
+
+| Activity | Type of Activity | Duration | Tool | Description |
+|---|---|---|---|---|
+| Crazy 8's Share out and Voting | Sync | 15 Minutes | Zoom and Mural | • Each person will have two minutes to present their ideas to the team. <br/> • After each team member has gotten the chance to present their ideas, we will do a round of dot voting. <br/> • Vote on the ideas you think will be best to solve our Sprint problem. <br/> • Each team member will get 3 votes. |
+| Storyboarding Key Moments | Sync - 2 Groups | 30 Minutes | Zoom, Paper and Sharpie/Pen | • Take the first 10 minutes to write down the 8-10 key moments individually. <br/> • As a team decide on the ideal storyboard together. <br/> • Try and bring out the task that needs to be done and the emotion that you would like the user to experience. <br/> • No drawing yet! |
+| Storyboard Details | Sync | 20 Minutes | Zoom, Paper and Pen/Sharpie | • Take your draft storyboard and give it more detail. <br/> • DRAW BIG! Sketch 1 key moment per 8.5x11 page. <br/> • Each person on the team should sketch at least 1 key moment. <br/> • Focus on actions and emotions. |
+| Put Together the Story | Sync | 10 Minutes | Zoom and Mural | • Each person will take a photo of their storyboard and add it to the Mural. |
+| Storyboard Share Out and Voting | Sync | 15 Minutes | Zoom and Mural | • Each group takes turns presenting their story to the Sprint team. <br/> • Once both teams have had the chance to present their storyboard, we’ll hold a round of voting. <br/> • Each person will be given 3 votes to vote for any part of each experience they like. <br/> • The Decider gets 6 votes for this activity, 3 mega-likes and 3 dislikes. |
+| All in One or Rumble | Sync | 5 Minutes | Zoom | • Decide as a group if you want to incorporate the best parts of both storyboards into one or if you want to test both storyboards against each other during the testing phase. |
+
+#### Post-Day Facilitator Checklist:
+- [ ] Send a Day 2 overview and homework reminder in the Slack channel.
+- [ ] Post-sync session recording in the Slack channel.
+- [ ] Ensure [Day 3 Issue](Add Link) is complete.
+
+## Day 3 - Group Sprint Homework | (Add Date)
+
+#### Post-Day Facilitator Checklist:
+- [ ] Set up a Figma File for the prototype and ensure it's shared with the group.
+
+| Activity | Type of Activity | Duration | Tool | Description |
+|---|---|---|---|---|
+| Prototyping | Async | 1 Hour | Figma | • The Designer will craft out a prototype based on the storyboard for the team to review. |
+| Prototyping Feedback | Async | 10 Minutes | Figma | • Once the Designer has completed the prototype, the team will review it and leave feedback. <br/> • There will only be a single round of feedback before hallway testing (where we will receive additional feedback from users). |
+| Review Hallway Testing Slides | Async | 10 Minutes | Slides | • Review the details on what Hallway Testing is to prepare for the next sync session. |
+
+#### Post-Day Facilitator Checklist:
+- [ ] Send a sync session reminder in the Slack channel.
+
+## Day 3 - Sync Session | (Add Date)
+
+#### Pre-Day Facilitator Checklist:
+
+- [ ] Ensure sync Murals are organized (Hallway Testing Prep).
+- [ ] Ensure sync session is recorded.
+- [ ] Ensure the prototype is done and has been adjusted from the feedback.
+- [ ] Gathered a few potential Hallway Test Volunteers.
+
+| Activity | Type of Activity | Duration | Tool | Description |
+|---|---|---|---|---|
+| Define a Research Objective | Sync | 10 Minutes | Zoom and Mural | • As a group, write a research objective for your hallway test. Make sure to capture: What you want to learn, Who you want to talk to, What you plan to do with what you learn. |
+| Write a Test Scenario | Sync | 10 Minutes | Zoom and Mural | • As a group, write a test scenario for your hallway test. <br/> • Write down a list of key tasks that you’d like the participant to complete while using the prototype. |
+| Write Test Questions | Sync | 10 Minutes | Zoom and Mural | • As a group, write a test scenario for your hallway test. <br/> • Craft a list of questions and / or tasks that you’ll ask participants to answer or complete in order to answer your research objectives. |
+| Hallway Testing | Sync | 50 Minutes | Zoom | • Working in groups of 2-3, review the discussion guide and prototype. <br/> • Determine who will ask questions and who will take notes. Remember to switch roles after each test! <br/> • It’s up to you where you take notes. <br/> • Join the Zoom meeting with your assigned person & test your prototype. <br/> • Have the team document what they hear and be prepared to share back with the larger sprint team. |
+| Hallway Testing Share-out | Sync | 20 Minutes | Zoom | • Each group will have roughly 5 minutes to present their findings from Hallway Testing. Each team should present: <br/> • What were the common themes? <br/> • What did you hear that was surprising? <br/> • Any red flags? <br/> • Thank participants for their time. |
+
+#### Post-Day Facilitator Checklist:
+- [ ] Summarize themes of Hallway Testing and share with the Slack channel and the [Day 3 Issue](Add Link).
+- [ ] Optionally, share with UX, Product, and other relevant Slack channels.
+- [ ] Share with team next steps related to Day 4 and Usertesting.
+
+## Day 4 - Usertesting | (Add Date)
+
+<!-- Day 4 can happen at a later date when it makes the most sense. Use the problem validation issue template for Day 4. -->
+
+Day 4 consists of a round of user testing which typically happens a week or more after the first three days complete.
+
+* **Day Four Issue:** (Day 4 Issue Link)
## Ground Rules
* Honor the Facilitator's directions. They're the guide for the entire process.
diff --git a/.gitlab/issue_templates/Feature Flag Roll Out.md b/.gitlab/issue_templates/Feature Flag Roll Out.md
index 5efc9304a4e..6e878a18aae 100644
--- a/.gitlab/issue_templates/Feature Flag Roll Out.md
+++ b/.gitlab/issue_templates/Feature Flag Roll Out.md
@@ -20,8 +20,8 @@ that is currently behind the `<feature-flag-name>` feature flag.
- Team: NAME_OF_TEAM
- Most appropriate slack channel to reach out to: `#g_TEAM_NAME`
-- Best individual to reach out to: NAME
-- PM: NAME
+- Best individual to reach out to: NAME_OF_DRI
+- PM: NAME_OF_PM
## Stakeholders
@@ -82,7 +82,7 @@ Note: Please make sure to run the chatops commands in the slack channel that get
as this is the first environment deployed to. Note you will need to make sure you are configured to use canary as outlined [here](https://about.gitlab.com/handbook/engineering/infrastructure/environments/canary-stage/)
when accessing the staging environment in order to make sure you are testing appropriately.
-For assistance with QA end-to-end test failures, please reach out via the `#quality` Slack channel. Note that QA test failures on staging-ref [don't block deployments](https://about.gitlab.com/handbook/engineering/infrastructure/environments/staging-ref/#how-to-use-staging-ref).
+For assistance with QA end-to-end test failures, please reach out via the `#quality` Slack channel. Note that QA test failures on staging-ref [don't block deployments](https://about.gitlab.com/handbook/engineering/infrastructure/environments/staging-ref/#how-to-use-staging-ref).
### Specific rollout on production
@@ -194,6 +194,25 @@ You can either [create a follow-up issue for Feature Flag Cleanup](https://gitla
In this scenario, labels must be related to it, for example; ~"type::feature", ~"type::bug" or ~"type::maintenance".
Please use /copy_metadata to copy the labels from the issue you're rolling out. -->
+<!--
+Template placeholders
+
+- name: MAIN-ISSUE-LINK
+ description: the URL of the issue introducing the feature flag
+- name: <feature-flag-name>
+ description: the feature flag name
+- name: NAME_OF_TEAM
+ description: the label of the responsible team, e.g. group::foo
+- name: #g_TEAM_NAME
+ description: the Slack channel name of the responsible team, e.g. #g_foo
+- name: NAME_OF_DRI
+ description: the GitLab username of the best individual to reach out to, e.g. @foo
+- name: NAME_OF_PM
+ description: the GitLab username of the relevant PM, e.g. @foo
+- name: <your-username>
+ description: the GitLab username of the person who would enable the feature flag on GitLab.com, e.g. @foo
+-->
+
/label ~group::
/label ~"feature flag"
/assign me
diff --git a/.gitlab/issue_templates/Feature Proposal - lean.md b/.gitlab/issue_templates/Feature Proposal - lean.md
index 7b7402e4d18..c82907a2401 100644
--- a/.gitlab/issue_templates/Feature Proposal - lean.md
+++ b/.gitlab/issue_templates/Feature Proposal - lean.md
@@ -47,6 +47,13 @@ Create tracking issue using the Snowplow event tracking template. See https://gi
-->
+### Does this feature require an audit event?
+
+<!--- Checkout these docs to know more
+https://docs.gitlab.com/ee/development/audit_event_guide/#what-are-audit-events
+https://docs.gitlab.com/ee/administration/audit_events.html
+--->
+
<!-- Label reminders
Use the following resources to find the appropriate labels:
- Use only one tier label choosing the lowest tier this is intended for
diff --git a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md
index b77247954de..9e7d2634f3a 100644
--- a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md
+++ b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md
@@ -2,19 +2,22 @@
This template is based on a model named `CoolWidget`.
-To adapt this template, find and replace the following tokens:
-
-- `CoolWidget`
-- `Cool Widget`
-- `cool_widget`
-- `coolWidget`
-
-If your Model's pluralized form is non-standard, i.e. it doesn't just end in `s`, then find and replace the following tokens *first*:
-
-- `CoolWidgets`
-- `Cool Widgets`
-- `cool_widgets`
-- `coolWidgets`
+To adapt this template, find and replace the following:
+
+Template placeholders
+
+- name: Cool Widgets
+ description: the human-readable name of the model (plural)
+- name: Cool Widget
+ description: the human-readable name of the model (singular)
+- name: cool_widgets
+ description: the snake-cased name of the model (plural)
+- name: cool_widget
+ description: the snake-cased name of the model (singular)
+- name: CoolWidget
+ description: the ActiveRecord class name of the model
+- name: coolWidget
+ description: the camel-cased name of the model
-->
@@ -188,7 +191,7 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
```yaml
---
table_name: cool_widget_states
- description: Separate table for cool widget verification states
+ description: Separate table for Cool Widget verification states
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX
milestone: 'XX.Y'
feature_categories:
@@ -427,7 +430,6 @@ That's all of the required database changes.
let(:model_record) { build(:cool_widget) }
include_examples 'a repository replicator'
- include_examples 'a verifiable replicator'
end
```
@@ -506,7 +508,6 @@ That's all of the required database changes.
end
include_examples 'a Geo framework registry'
- include_examples 'a Geo verifiable registry'
end
```
diff --git a/.gitlab/issue_templates/Geo Replicate a new blob type.md b/.gitlab/issue_templates/Geo Replicate a new blob type.md
index 94c93bd27e4..11ad6614bc2 100644
--- a/.gitlab/issue_templates/Geo Replicate a new blob type.md
+++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md
@@ -2,19 +2,22 @@
This template is based on a model named `CoolWidget`.
-To adapt this template, find and replace the following tokens:
-
-- `CoolWidget`
-- `Cool Widget`
-- `cool_widget`
-- `coolWidget`
-
-If your Model's pluralized form is non-standard, i.e. it doesn't just end in `s`, find and replace the following tokens *first*:
-
-- `CoolWidgets`
-- `Cool Widgets`
-- `cool_widgets`
-- `coolWidgets`
+To adapt this template, find and replace the following:
+
+Template placeholders
+
+- name: Cool Widgets
+ description: the human-readable name of the model (plural)
+- name: Cool Widget
+ description: the human-readable name of the model (singular)
+- name: cool_widgets
+ description: the snake-cased name of the model (plural)
+- name: cool_widget
+ description: the snake-cased name of the model (singular)
+- name: CoolWidget
+ description: the ActiveRecord class name of the model
+- name: coolWidget
+ description: the camel-cased name of the model
-->
@@ -191,7 +194,7 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
```yaml
---
table_name: cool_widget_states
- description: Separate table for cool widget verification states
+ description: Separate table for Cool Widget verification states
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX
milestone: 'XX.Y'
feature_categories:
@@ -384,7 +387,6 @@ That's all of the required database changes.
let(:model_record) { build(:cool_widget) }
include_examples 'a blob replicator'
- include_examples 'a verifiable replicator'
end
```
@@ -463,7 +465,6 @@ That's all of the required database changes.
end
include_examples 'a Geo framework registry'
- include_examples 'a Geo verifiable registry'
end
```
diff --git a/.gitlab/merge_request_templates/Security Release.md b/.gitlab/merge_request_templates/Security Release.md
index b443dd7570e..772b73d1066 100644
--- a/.gitlab/merge_request_templates/Security Release.md
+++ b/.gitlab/merge_request_templates/Security Release.md
@@ -13,6 +13,7 @@ See [the general developer security release guidelines](https://gitlab.com/gitla
## Developer checklist
- [ ] **On "Related issues" section, write down the [GitLab Security] issue it belongs to (i.e. `Related to <issue_id>`).**
+- [ ] Familiarize yourself with the latest process to create Security merge requests: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#process
- [ ] Merge request targets `master`, or a versioned stable branch (`X-Y-stable-ee`).
- [ ] Title of this merge request is the same as for all backports.
- [ ] A [CHANGELOG entry] has been included, with `Changelog` trailer set to `security`.
@@ -24,7 +25,7 @@ See [the general developer security release guidelines](https://gitlab.com/gitla
- Trigger the [`e2e:package-and-test` job]. The docker image generated will be used by the AppSec engineer to validate the security vulnerability has been remediated.
- [ ] For a backport MR targeting a versioned stable branch (`X-Y-stable-ee`).
- [ ] Milestone is set to the version this backport applies to. A closed milestone can be assigned via [quick actions].
- - [ ] Ensure it's approved by a maintainer.
+ - [ ] Ensure it's approved by the same maintainer that reviewed and approved the merge request targeting the default branch.
- [ ] Ensure this merge request and the related security issue have a `~severity::x` label
**Note:** Reviewer/maintainer should not be a [Release Manager].
diff --git a/.gitlab/route-map.yml b/.gitlab/route-map.yml
index cc0c2856d49..7f6cbee9469 100644
--- a/.gitlab/route-map.yml
+++ b/.gitlab/route-map.yml
@@ -1,3 +1,3 @@
# Documentation
- source: /doc/(.+?)\.md/ # doc/administration/build_artifacts.md
- public: '\1.html' # doc/administration/build_artifacts.html
+ public: '\1.html' # administration/build_artifacts.html