summaryrefslogtreecommitdiff
path: root/.gitlab
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-02-18 09:45:46 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-02-18 09:45:46 +0000
commita7b3560714b4d9cc4ab32dffcd1f74a284b93580 (patch)
tree7452bd5c3545c2fa67a28aa013835fb4fa071baf /.gitlab
parentee9173579ae56a3dbfe5afe9f9410c65bb327ca7 (diff)
downloadgitlab-ce-a7b3560714b4d9cc4ab32dffcd1f74a284b93580.tar.gz
Add latest changes from gitlab-org/gitlab@14-8-stable-eev14.8.0-rc42
Diffstat (limited to '.gitlab')
-rw-r--r--.gitlab/CODEOWNERS628
-rw-r--r--.gitlab/ci/cng.gitlab-ci.yml53
-rw-r--r--.gitlab/ci/docs.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/frontend.gitlab-ci.yml7
-rw-r--r--.gitlab/ci/global.gitlab-ci.yml30
-rw-r--r--.gitlab/ci/memory.gitlab-ci.yml27
-rw-r--r--.gitlab/ci/qa.gitlab-ci.yml4
-rw-r--r--.gitlab/ci/rails.gitlab-ci.yml86
-rw-r--r--.gitlab/ci/reports.gitlab-ci.yml3
-rw-r--r--.gitlab/ci/review-apps/main.gitlab-ci.yml48
-rw-r--r--.gitlab/ci/review-apps/qa.gitlab-ci.yml12
-rw-r--r--.gitlab/ci/rules.gitlab-ci.yml608
-rw-r--r--.gitlab/ci/setup.gitlab-ci.yml2
-rw-r--r--.gitlab/ci/test-metadata.gitlab-ci.yml6
-rw-r--r--.gitlab/ci/workhorse.gitlab-ci.yml4
-rw-r--r--.gitlab/issue_templates/Actionable Insight - Exploration needed.md (renamed from .gitlab/issue_templates/Actionable Insight.md)10
-rw-r--r--.gitlab/issue_templates/Actionable Insight - Product change.md33
-rw-r--r--.gitlab/issue_templates/Deprecations.md18
-rw-r--r--.gitlab/issue_templates/Feature Flag Cleanup.md52
-rw-r--r--.gitlab/issue_templates/Feature Flag Roll Out.md4
-rw-r--r--.gitlab/issue_templates/Feature Proposal - lean.md2
-rw-r--r--.gitlab/issue_templates/Feature proposal - detailed.md23
-rw-r--r--.gitlab/issue_templates/Geo Replicate a new Git repository type.md34
-rw-r--r--.gitlab/issue_templates/Geo Replicate a new blob type.md34
-rw-r--r--.gitlab/issue_templates/Pipeline Authoring Issue Implementation.md38
-rw-r--r--.gitlab/issue_templates/Problem Validation.md2
-rw-r--r--.gitlab/issue_templates/Security developer workflow.md6
-rw-r--r--.gitlab/merge_request_templates/Deprecations.md21
-rw-r--r--.gitlab/merge_request_templates/Removals.md30
29 files changed, 1147 insertions, 684 deletions
diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS
index 71e4571b603..ab9805bda7d 100644
--- a/.gitlab/CODEOWNERS
+++ b/.gitlab/CODEOWNERS
@@ -208,152 +208,588 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab
/doc/.markdownlint @marcel.amirault @eread @aqualls @cnorris
/doc/ @gl-docsteam
/doc/.vale/ @marcel.amirault @eread @aqualls @cnorris
+/doc/administration/application_settings_cache.md @marcia
+/doc/administration/audit_event_streaming.md @eread
+/doc/administration/audit_events.md @eread
+/doc/administration/audit_reports.md @eread
+/doc/administration/auditor_users.md @axil
+/doc/administration/auth/atlassian.md @eread
+/doc/administration/auth/authentiq.md @eread
+/doc/administration/auth/cognito.md @eread
+/doc/administration/auth/crowd.md @eread
+/doc/administration/auth/index.md @eread
+/doc/administration/auth/ldap/google_secure_ldap.md @eread
+/doc/administration/auth/jwt.md @eread
+/doc/administration/auth/ldap/ldap-troubleshooting.md @eread
+/doc/administration/auth/ldap/ldap_synchronization.md @eread
+/doc/administration/auth/ldap/index.md @eread
+/doc/administration/auth/oidc.md @eread
+/doc/administration/auth/smartcard.md @eread
+/doc/administration/cicd.md @marcel.amirault
+/doc/administration/clusters/kas.md @marcia
+/doc/administration/compliance.md @eread
+/doc/administration/configure.md @axil
+/doc/administration/consul.md @axil
+/doc/administration/docs_self_host.md @axil
+/doc/administration/encrypted_configuration.md @axil
+/doc/administration/environment_variables.md @axil
+/doc/administration/external_pipeline_validation.md @marcel.amirault
+/doc/administration/feature_flags.md @axil
+/doc/administration/file_hooks.md @aqualls
/doc/administration/geo/ @axil
+/doc/administration/git_protocol.md @aqualls
/doc/administration/gitaly/ @eread
-/doc/administration/lfs/ @aqualls
+/doc/administration/housekeeping.md @axil
+/doc/administration/incoming_email.md @msedlakjakubowski
+/doc/administration/index.md @axil
+/doc/administration/instance_limits.md @axil
+/doc/administration/instance_review.md @kpaizee
+/doc/administration/integration/kroki.md @kpaizee
+/doc/administration/integration/mailgun.md @kpaizee
+/doc/administration/integration/plantuml.md @aqualls
+/doc/administration/integration/terminal.md @kpaizee
+/doc/administration/invalidate_markdown_cache.md @msedlakjakubowski
+/doc/administration/issue_closing_pattern.md @aqualls
+/doc/administration/job_artifacts.md @eread
+/doc/administration/job_logs.md @sselhorn
+/doc/administration/lfs/index.md @aqualls
+/doc/administration/libravatar.md @axil
+/doc/administration/load_balancer.md @axil
+/doc/administration/logs.md @ngaskill
+/doc/administration/maintenance_mode/index.md @axil
+/doc/administration/merge_request_diffs.md @aqualls
/doc/administration/monitoring/ @ngaskill
-/doc/administration/operations/ @axil @eread @marcia
+/doc/administration/nfs.md @axil
+/doc/administration/object_storage.md @axil
+/doc/administration/operations/ @axil
+/doc/administration/operations/sidekiq_memory_killer.md @marcia
+/doc/administration/package_information/ @axil
/doc/administration/packages/ @ngaskill
-/doc/administration/pages/ @rdickenson @kpaizee
+/doc/administration/pages/ @rdickenson
+/doc/administration/polling.md @axil
/doc/administration/postgresql/ @marcia
-/doc/administration/raketasks/ @axil @eread
+/doc/administration/pseudonymizer.md @axil
+/doc/administration/raketasks/ @axil
+/doc/administration/read_only_gitlab.md @axil
/doc/administration/redis/ @axil
/doc/administration/reference_architectures/ @axil
-/doc/administration/snippets/ @aqualls
-/doc/administration/troubleshooting @axil @marcia @eread
-/doc/api/graphql/ @msedlakjakubowski @kpaizee
-/doc/api/graphql/reference/ @kpaizee
-/doc/api/group_activity_analytics.md @fneill
-/doc/api/vulnerabilities.md @fneill
-/doc/ci/ @marcel.amirault @sselhorn
-/doc/ci/environments/ @rdickenson
-/doc/ci/services/ @sselhorn
-/doc/ci/test_cases/ @msedlakjakubowski
-/doc/development/ @marcia
-/doc/development/documentation/ @cnorris @dianalogan
-/doc/development/i18n/ @ngaskill
-/doc/development/value_stream_analytics.md @fneill
-/doc/gitlab-basics/ @aqualls
-/doc/install/ @axil
-/doc/operations/ @ngaskill @rdickenson
-/doc/push_rules/ @aqualls
-/doc/security/ @eread
-/doc/ssh/ @eread
-/doc/subscriptions/ @sselhorn
-/doc/topics/autodevops/ @marcia
-/doc/topics/git/ @aqualls
-/doc/update/ @axil @marcia
-/doc/user/analytics/ @fneill @ngaskill
-/doc/user/application_security/ @rdickenson
-/doc/user/application_security/container_scanning/ @ngaskill
-/doc/user/application_security/cluster_image_scanning/ @ngaskill
-/doc/user/application_security/cve_id_request.md @fneill
-/doc/user/application_security/security_dashboard @fneill
-/doc/user/application_security/vulnerabilities @fneill
-/doc/user/application_security/vulnerability_report @fneill
-/doc/user/clusters/ @marcia
-/doc/user/compliance/ @rdickenson @eread
-/doc/user/group/ @msedlakjakubowski
-/doc/user/group/devops_adoption/ @fneill
-/doc/user/group/epics/ @msedlakjakubowski
-/doc/user/group/insights/ @fneill
-/doc/user/group/iterations/ @msedlakjakubowski
-/doc/user/group/roadmap/ @msedlakjakubowski
-/doc/user/group/value_stream_analytics/ @fneill
-/doc/user/infrastructure/ @marcia
-/doc/user/packages/ @ngaskill
-/doc/user/packages/infrastructure_registry/ @marcia
-/doc/user/packages/terraform_module_registry/ @marcia
-/doc/user/profile/ @msedlakjakubowski @eread
-/doc/user/project/ @aqualls @rdickenson @eread @msedlakjakubowski @ngaskill
-/doc/user/project/clusters/ @marcia
-/doc/user/project/import/ @ngaskill @msedlakjakubowski
-/doc/user/project/issues/ @msedlakjakubowski
-/doc/user/project/merge_requests/ @aqualls @eread
-/doc/user/project/milestones/ @msedlakjakubowski
-/doc/user/project/pages/ @rdickenson
-/doc/user/project/repository/ @aqualls
-/doc/user/project/settings/ @aqualls @eread
-/doc/user/project/static_site_editor/index.md @aqualls
-/doc/user/project/web_ide/index.md @aqualls
-/doc/user/project/wiki/index.md @aqualls
-/doc/user/search/ @marcia @aqualls
-/doc/user/workspace/ @fneill
-
-[Docs Create]
-/doc/administration/file_hooks.md @aqualls
-/doc/administration/git_protocol.md @aqualls
-/doc/administration/invalidate_markdown_cache.md @aqualls
-/doc/administration/issue_closing_pattern.md @aqualls
-/doc/administration/merge_request_diffs.md @aqualls
-/doc/administration/repository_checks.md @aqualls
+/doc/administration/reply_by_email_postfix_setup.md @axil
+/doc/administration/reply_by_email.md @msedlakjakubowski
+/doc/administration/repository_checks.md @eread
+/doc/administration/repository_storage_paths.md @eread
+/doc/administration/repository_storage_types.md @eread
+/doc/administration/restart_gitlab.md @axil
+/doc/administration/server_hooks.md @eread
+/doc/administration/sidekiq.md @axil
+/doc/administration/smime_signing_email.md @axil
+/doc/administration/snippets/index.md @aqualls
/doc/administration/static_objects_external_storage.md @aqualls
-/doc/api/access_requests.md @aqualls
+/doc/administration/terraform_state.md @marcia
+/doc/administration/timezone.md @axil
+/doc/administration/troubleshooting/ @axil
+/doc/administration/troubleshooting/group_saml_scim.md @eread
+/doc/administration/troubleshooting/postgresql.md @marcia
+/doc/administration/uploads.md @axil
+/doc/administration/user_settings.md @eread
+/doc/administration/whats-new.md @kpaizee
+/doc/administration/wikis/index.md @aqualls
+/doc/api/access_requests.md @eread
+/doc/api/admin_sidekiq_queues.md @axil
+/doc/api/api_resources.md @kpaizee
+/doc/api/appearance.md @eread
+/doc/api/applications.md @eread
+/doc/api/audit_events.md @eread
+/doc/api/avatar.md @eread
+/doc/api/award_emoji.md @msedlakjakubowski
+/doc/api/boards.md @msedlakjakubowski
/doc/api/branches.md @aqualls
+/doc/api/broadcast_messages.md @kpaizee
+/doc/api/bulk_imports.md @ngaskill
/doc/api/commits.md @aqualls
+/doc/api/container_registry.md @ngaskill
+/doc/api/custom_attributes.md @kpaizee
+/doc/api/dependencies.md @rdickenson
+/doc/api/dependency_proxy.md @ngaskill
+/doc/api/deploy_keys.md @rdickenson
+/doc/api/deploy_tokens.md @rdickenson
+/doc/api/deployments.md @rdickenson
/doc/api/discussions.md @aqualls
+/doc/api/dora/metrics.md @fneill
+/doc/api/dora4_project_analytics.md @fneill
+/doc/api/environments.md @rdickenson
+/doc/api/epic_issues.md @msedlakjakubowski
+/doc/api/epic_links.md @msedlakjakubowski
+/doc/api/epics.md @msedlakjakubowski
+/doc/api/error_tracking.md @ngaskill
+/doc/api/events.md @eread
+/doc/api/experiments.md @kpaizee
+/doc/api/feature_flag_specs.md @rdickenson
+/doc/api/feature_flag_user_lists.md @rdickenson
+/doc/api/feature_flags_legacy.md @rdickenson
+/doc/api/feature_flags.md @rdickenson
+/doc/api/features.md @rdickenson
+/doc/api/freeze_periods.md @rdickenson
+/doc/api/geo_nodes.md @axil
+/doc/api/graphql/ @kpaizee
+/doc/api/graphql/custom_emoji.md @msedlakjakubowski
+/doc/api/graphql/sample_issue_boards.md @msedlakjakubowski
+/doc/api/group_activity_analytics.md @fneill
+/doc/api/group_badges.md @eread
+/doc/api/group_boards.md @msedlakjakubowski
+/doc/api/group_clusters.md @marcia
+/doc/api/group_import_export.md @ngaskill
+/doc/api/group_iterations.md @msedlakjakubowski
+/doc/api/group_labels.md @msedlakjakubowski
+/doc/api/group_level_variables.md @marcel.amirault
+/doc/api/group_milestones.md @msedlakjakubowski
+/doc/api/group_protected_environments.md @rdickenson
+/doc/api/group_relations_export.md @ngaskill
+/doc/api/group_repository_storage_moves.md @aqualls
/doc/api/group_wikis.md @aqualls
+/doc/api/groups.md @eread
+/doc/api/import.md @ngaskill
+/doc/api/index.md @kpaizee
+/doc/api/instance_clusters.md @marcia
+/doc/api/instance_level_ci_variables.md @marcel.amirault
+/doc/api/integrations.md @kpaizee
+/doc/api/invitations.md @kpaizee
+/doc/api/issue_links.md @msedlakjakubowski
+/doc/api/issues_statistics.md @msedlakjakubowski
+/doc/api/issues.md @msedlakjakubowski
+/doc/api/iterations.md @msedlakjakubowski
+/doc/api/job_artifacts.md @eread
+/doc/api/jobs.md @marcel.amirault
/doc/api/keys.md @aqualls
+/doc/api/labels.md @msedlakjakubowski
+/doc/api/license.md @kpaizee
+/doc/api/lint.md @marcel.amirault
+/doc/api/managed_licenses.md @kpaizee
/doc/api/markdown.md @aqualls
+/doc/api/members.md @eread
/doc/api/merge_request_approvals.md @aqualls
/doc/api/merge_request_context_commits.md @aqualls
/doc/api/merge_requests.md @aqualls
+/doc/api/merge_trains.md @marcel.amirault
+/doc/api/metrics_dashboard_annotations.md @ngaskill
+/doc/api/metrics_user_starred_dashboards.md @ngaskill
+/doc/api/milestones.md @msedlakjakubowski
+/doc/api/namespaces.md @eread
+/doc/api/notes.md @msedlakjakubowski
+/doc/api/notification_settings.md @msedlakjakubowski
+/doc/api/oauth2.md @eread
+/doc/api/openapi/openapi_interactive.md @kpaizee
+/doc/api/packages.md @ngaskill
+/doc/api/packages/ @ngaskill
+/doc/api/pages_domains.md @rdickenson
+/doc/api/pages.md @rdickenson
+/doc/api/personal_access_tokens.md @eread
+/doc/api/pipeline_schedules.md @marcel.amirault
+/doc/api/pipeline_triggers.md @marcel.amirault
+/doc/api/pipelines.md @marcel.amirault
+/doc/api/plan_limits.md @eread
/doc/api/project_aliases.md @aqualls
/doc/api/project_badges.md @aqualls
+/doc/api/project_clusters.md @marcia
/doc/api/project_import_export.md @aqualls
-/doc/api/project_level_variables.md @aqualls
+/doc/api/project_level_variables.md @marcel.amirault
+/doc/api/project_relations_export.md @ngaskill
+/doc/api/project_repository_storage_moves.md @eread
/doc/api/project_snippets.md @aqualls
/doc/api/project_statistics.md @aqualls
/doc/api/project_templates.md @aqualls
/doc/api/project_vulnerabilities.md @aqualls
+/doc/api/projects.md @msedlakjakubowski
/doc/api/protected_branches.md @aqualls
+/doc/api/protected_environments.md @rdickenson
/doc/api/protected_tags.md @aqualls
+/doc/api/releases/index.md @rdickenson
+/doc/api/releases/links.md @rdickenson
/doc/api/remote_mirrors.md @aqualls
/doc/api/repositories.md @aqualls
/doc/api/repository_files.md @aqualls
/doc/api/repository_submodules.md @aqualls
+/doc/api/resource_access_tokens.md @eread
+/doc/api/resource_groups.md @rdickenson
+/doc/api/resource_iteration_events.md @msedlakjakubowski
+/doc/api/resource_label_events.md @eread
+/doc/api/resource_milestone_events.md @msedlakjakubowski
+/doc/api/resource_state_events.md @msedlakjakubowski
+/doc/api/resource_weight_events.md @msedlakjakubowski
+/doc/api/runners.md @sselhorn
+/doc/api/scim.md @eread
/doc/api/search.md @aqualls
-/doc/api/services.md @aqualls
+/doc/api/settings.md @eread
+/doc/api/sidekiq_metrics.md @axil
+/doc/api/snippet_repository_storage_moves.md @aqualls
/doc/api/snippets.md @aqualls
+/doc/api/statistics.md @eread
+/doc/api/status_checks.md @eread
/doc/api/suggestions.md @aqualls
+/doc/api/system_hooks.md @kpaizee
/doc/api/tags.md @aqualls
-/doc/api/visual_review_discussions.md @aqualls
+/doc/api/templates/dockerfiles.md @aqualls
+/doc/api/templates/gitignores.md @aqualls
+/doc/api/templates/gitlab_ci_ymls.md @marcel.amirault
+/doc/api/templates/licenses.md @rdickenson
+/doc/api/todos.md @msedlakjakubowski
+/doc/api/topics.md @fneill
+/doc/api/usage_data.md @fneill
+/doc/api/users.md @eread
+/doc/api/v3_to_v4.md @kpaizee
+/doc/api/version.md @kpaizee
+/doc/api/visual_review_discussions.md @eread
+/doc/api/vulnerabilities.md @fneill
+/doc/api/vulnerability_exports.md @fneill
+/doc/api/vulnerability_findings.md @fneill
/doc/api/wikis.md @aqualls
-/doc/intro/index.md @aqualls
+/doc/architecture/blueprints/container_registry_metadata_database/index.md @ngaskill
+/doc/architecture/blueprints/database/scalability/patterns/ @marcia
+/doc/architecture/blueprints/gitlab_to_kubernetes_communication/index.md @marcia
+/doc/ci/caching/index.md @marcel.amirault
+/doc/ci/chatops/index.md @marcia
+/doc/ci/ci_cd_for_external_repos/ @marcel.amirault
+/doc/ci/cloud_deployment/ecs/quick_start_guide.md @rdickenson
+/doc/ci/cloud_deployment/index.md @rdickenson
+/doc/ci/directed_acyclic_graph/index.md @marcel.amirault
+/doc/ci/docker/index.md @marcel.amirault
+/doc/ci/docker/using_docker_build.md @marcel.amirault
+/doc/ci/docker/using_docker_images.md @sselhorn
+/doc/ci/docker/using_kaniko.md @marcel.amirault
+/doc/ci/enable_or_disable_ci.md @marcel.amirault
+/doc/ci/environments/ @rdickenson
+/doc/ci/examples/authenticating-with-hashicorp-vault/index.md @rdickenson
+/doc/ci/examples/deployment/composer-npm-deploy.md @rdickenson
+/doc/ci/examples/deployment/index.md @rdickenson
+/doc/ci/examples/end_to_end_testing_webdriverio/index.md @eread
+/doc/ci/examples/index.md @marcel.amirault
+/doc/ci/examples/laravel_with_gitlab_and_envoy/index.md @marcel.amirault
+/doc/ci/examples/php.md @marcel.amirault
+/doc/ci/examples/semantic-release.md @ngaskill
+/doc/ci/git_submodules.md @marcel.amirault
+/doc/ci/index.md @marcel.amirault
+/doc/ci/interactive_web_terminal/index.md @sselhorn
+/doc/ci/introduction/index.md @marcel.amirault
+/doc/ci/jobs/ci_job_token.md @marcel.amirault
+/doc/ci/jobs/index.md @marcel.amirault
+/doc/ci/jobs/job_control.md @marcel.amirault
+/doc/ci/large_repositories/index.md @sselhorn
+/doc/ci/lint.md @marcel.amirault
+/doc/ci/metrics_reports.md @eread
+/doc/ci/migration/circleci.md @marcel.amirault
+/doc/ci/migration/jenkins.md @marcel.amirault
+/doc/ci/pipeline_editor/index.md @marcel.amirault
+/doc/ci/pipelines/ @marcel.amirault
+/doc/ci/pipelines/job_artifacts.md @eread
+/doc/ci/pipelines/pipeline_artifacts.md @eread
+/doc/ci/quick_start/index.md @marcel.amirault
+/doc/ci/resource_groups/index.md @rdickenson
+/doc/ci/review_apps/index.md @eread
+/doc/ci/runners/ @sselhorn
+/doc/ci/secrets/index.md @marcia
+/doc/ci/services/ @sselhorn
+/doc/ci/ssh_keys/index.md @marcel.amirault
+/doc/ci/test_cases/index.md @msedlakjakubowski
+/doc/ci/triggers/index.md @marcel.amirault
+/doc/ci/troubleshooting.md @marcel.amirault
+/doc/ci/unit_test_reports.md @eread
+/doc/ci/variables/ @marcel.amirault
+/doc/ci/yaml/ @marcel.amirault
+/doc/ci/yaml/artifacts_reports.md @eread
+/doc/development/adding_database_indexes.md @marcia
+/doc/development/application_limits.md @axil
+/doc/development/approval_rules.md @aqualls
+/doc/development/audit_event_guide/index.md @eread
+/doc/development/auto_devops.md @marcia
+/doc/development/avoiding_downtime_in_migrations.md @marcia
+/doc/development/backend/ruby_style_guide.md @marcia
+/doc/development/background_migrations.md @marcia
+/doc/development/build_test_package.md @axil
+/doc/development/bulk_import.md @ngaskill
+/doc/development/cascading_settings.md @eread
+/doc/development/chatops_on_gitlabcom.md @marcia
+/doc/development/cicd/cicd_reference_documentation_guide.md @marcel.amirault
+/doc/development/cicd/index.md @marcel.amirault
+/doc/development/cicd/templates.md @marcel.amirault
+/doc/development/code_intelligence/index.md @aqualls
+/doc/development/contributing/ @marcia
+/doc/development/creating_enums.md @marcia
+/doc/development/database_debugging.md @marcia
+/doc/development/database_query_comments.md @marcia
+/doc/development/database_review.md @marcia
+/doc/development/database/ @marcia
+/doc/development/db_dump.md @marcia
+/doc/development/developing_with_solargraph.md @aqualls
+/doc/development/distributed_tracing.md @ngaskill
+/doc/development/documentation/feature_flags.md @marcia
+/doc/development/documentation/graphql_styleguide.md @marcia
+/doc/development/documentation/index.md @cnorris
+/doc/development/documentation/redirects.md @cnorris
+/doc/development/documentation/restful_api_styleguide.md @marcia
+/doc/development/documentation/review_apps.md @cnorris
+/doc/development/documentation/structure.md @sselhorn
+/doc/development/documentation/styleguide/index.md @sselhorn
+/doc/development/documentation/styleguide/word_list.md @sselhorn
+/doc/development/documentation/testing.md @cnorris
+/doc/development/elasticsearch.md @marcia
+/doc/development/experiment_guide/ @kpaizee
+/doc/development/export_csv.md @ngaskill
+/doc/development/fe_guide/content_editor.md @aqualls
+/doc/development/fe_guide/dark_mode.md @marcia
+/doc/development/fe_guide/graphql.md @marcia
+/doc/development/fe_guide/source_editor.md @aqualls
+/doc/development/feature_categorization/index.md @marcia
+/doc/development/feature_flags/controls.md @marcia
+/doc/development/feature_flags/index.md @marcia
+/doc/development/filtering_by_label.md @msedlakjakubowski
+/doc/development/foreign_keys.md @marcia
+/doc/development/geo.md @axil
+/doc/development/geo/framework.md @axil
+/doc/development/git_object_deduplication.md @eread
+/doc/development/gitaly.md @eread
+/doc/development/graphql_guide/batchloader.md @marcia
+/doc/development/graphql_guide/graphql_pro.md @kpaizee
+/doc/development/graphql_guide/index.md @kpaizee
+/doc/development/graphql_guide/pagination.md @kpaizee
+/doc/development/hash_indexes.md @marcia
+/doc/development/i18n/ @ngaskill
+/doc/development/image_scaling.md @marcia
+/doc/development/import_export.md @ngaskill
+/doc/development/index.md @marcia
+/doc/development/insert_into_tables_in_batches.md @marcia
+/doc/development/integrations/codesandbox.md @marcia
+/doc/development/integrations/jenkins.md @kpaizee
+/doc/development/integrations/jira_connect.md @kpaizee
+/doc/development/integrations/secure_partner_integration.md @rdickenson
+/doc/development/integrations/secure.md @ngaskill
+/doc/development/internal_api/ @aqualls
+/doc/development/internal_users.md @marcia
+/doc/development/issuable-like-models.md @msedlakjakubowski
+/doc/development/issue_types.md @msedlakjakubowski
+/doc/development/iterating_tables_in_batches.md @marcia
+/doc/development/kubernetes.md @marcia
+/doc/development/lfs.md @aqualls
+/doc/development/licensed_feature_availability.md @sselhorn
+/doc/development/logging.md @ngaskill
+/doc/development/maintenance_mode.md @axil
+/doc/development/new_fe_guide/modules/widget_extensions.md @aqualls
+/doc/development/new_fe_guide/tips.md @marcia
+/doc/development/omnibus.md @axil
+/doc/development/ordering_table_columns.md @marcia
+/doc/development/packages.md @ngaskill
+/doc/development/permissions.md @eread
+/doc/development/policies.md @eread
+/doc/development/prometheus_metrics.md @ngaskill
+/doc/development/query_performance.md @marcia
+/doc/development/real_time.md @msedlakjakubowski
+/doc/development/secure_coding_guidelines.md @marcia
+/doc/development/serializing_data.md @marcia
+/doc/development/service_ping/ @fneill
+/doc/development/snowplow/ @fneill
+/doc/development/sql.md @marcia
+/doc/development/stage_group_dashboards.md @marcia
+/doc/development/swapping_tables.md @marcia
+/doc/development/testing_guide/best_practices.md @marcia
+/doc/development/testing_guide/end_to_end/best_practices.md @marcia
+/doc/development/understanding_explain_plans.md @marcia
+/doc/development/value_stream_analytics.md @fneill
+/doc/development/verifying_database_capabilities.md @marcia
+/doc/development/wikis.md @aqualls
+/doc/development/work_items.md @msedlakjakubowski
+/doc/development/work_items_widgets.md @msedlakjakubowski
+/doc/downgrade_ee_to_ce/index.md @axil
+/doc/gitlab-basics/add-file.md @aqualls
+/doc/gitlab-basics/command-line-commands.md @aqualls
+/doc/gitlab-basics/create-branch.md @aqualls
+/doc/gitlab-basics/feature_branch_workflow.md @aqualls
+/doc/gitlab-basics/index.md @aqualls
+/doc/gitlab-basics/start-using-git.md @aqualls
+/doc/install/ @axil
+/doc/integration/ @kpaizee
+/doc/integration/elasticsearch.md @marcia
+/doc/integration/gitpod.md @aqualls
+/doc/integration/kerberos.md @eread
+/doc/integration/mattermost/index.md @axil
+/doc/integration/oauth_provider.md @eread
+/doc/integration/saml.md @eread
+/doc/integration/security_partners/index.md @rdickenson
+/doc/integration/sourcegraph.md @aqualls
+/doc/integration/vault.md @rdickenson
+/doc/operations/ @ngaskill
+/doc/operations/feature_flags.md @rdickenson
+/doc/operations/product_analytics.md @fneill
+/doc/policy/ @axil
+/doc/public_access/public_access.md @fneill
+/doc/raketasks/ @axil
+/doc/raketasks/generate_sample_prometheus_data.md @ngaskill
+/doc/raketasks/migrate_snippets.md @aqualls
+/doc/raketasks/spdx.md @rdickenson
+/doc/raketasks/x509_signatures.md @aqualls
+/doc/security/ @eread
+/doc/ssh/index.md @eread
+/doc/subscriptions/ @sselhorn
+/doc/system_hooks/system_hooks.md @kpaizee
+/doc/topics/authentication/index.md @eread
+/doc/topics/autodevops/customize.md @marcia
+/doc/topics/autodevops/ @marcia
+/doc/topics/git/ @aqualls
/doc/topics/gitlab_flow.md @aqualls
+/doc/topics/offline/ @axil
+/doc/topics/plan_and_track.md @msedlakjakubowski
+/doc/update/ @axil
+/doc/update/mysql_to_postgresql.md @marcia
+/doc/update/upgrading_postgresql_using_slony.md @marcia
+/doc/user/admin_area/analytics/ @fneill
+/doc/user/admin_area/broadcast_messages.md @kpaizee
+/doc/user/admin_area/credentials_inventory.md @eread
+/doc/user/admin_area/custom_project_templates.md @ngaskill
+/doc/user/admin_area/diff_limits.md @aqualls
+/doc/user/admin_area/geo_nodes.md @axil
+/doc/user/admin_area/labels.md @msedlakjakubowski
+/doc/user/admin_area/license.md @kpaizee
+/doc/user/admin_area/merge_requests_approvals.md @aqualls
+/doc/user/admin_area/moderate_users.md @eread
+/doc/user/admin_area/monitoring/background_migrations.md @marcia
+/doc/user/admin_area/monitoring/health_check.md @ngaskill
+/doc/user/admin_area/review_abuse_reports.md @eread
/doc/user/admin_area/settings/account_and_limit_settings.md @aqualls
+/doc/user/admin_area/settings/continuous_integration.md @marcel.amirault
+/doc/user/admin_area/settings/deprecated_api_rate_limits.md @aqualls
+/doc/user/admin_area/settings/email.md @msedlakjakubowski
+/doc/user/admin_area/settings/external_authorization.md @eread
+/doc/user/admin_area/settings/files_api_rate_limits.md @aqualls
+/doc/user/admin_area/settings/git_lfs_rate_limits.md @aqualls
+/doc/user/admin_area/settings/gitaly_timeouts.md @eread
+/doc/user/admin_area/settings/import_export_rate_limits.md @ngaskill
+/doc/user/admin_area/settings/index.md @aqualls
/doc/user/admin_area/settings/instance_template_repository.md @aqualls
-/doc/user/admin_area/settings/project_integration_management.md @aqualls
+/doc/user/admin_area/settings/package_registry_rate_limits.md @ngaskill
+/doc/user/admin_area/settings/project_integration_management.md @kpaizee
/doc/user/admin_area/settings/push_event_activities_limit.md @aqualls
+/doc/user/admin_area/settings/rate_limit_on_issues_creation.md @msedlakjakubowski
+/doc/user/admin_area/settings/rate_limit_on_notes_creation.md @msedlakjakubowski
/doc/user/admin_area/settings/visibility_and_access_controls.md @aqualls
+/doc/user/analytics/ci_cd_analytics.md @rdickenson
+/doc/user/analytics/ @fneill
+/doc/user/application_security/ @rdickenson
+/doc/user/application_security/cluster_image_scanning/index.md @ngaskill
+/doc/user/application_security/container_scanning/index.md @ngaskill
+/doc/user/application_security/cve_id_request.md @fneill
+/doc/user/application_security/policies/index.md @ngaskill
+/doc/user/application_security/security_dashboard/index.md @fneill
+/doc/user/application_security/threat_monitoring/index.md @ngaskill
+/doc/user/application_security/vulnerabilities/ @fneill
+/doc/user/application_security/vulnerability_report/index.md @fneill
/doc/user/asciidoc.md @aqualls
-/doc/user/index.md @aqualls
+/doc/user/award_emojis.md @msedlakjakubowski
+/doc/user/clusters/ @marcia
+/doc/user/compliance/compliance_report/index.md @eread
+/doc/user/compliance/index.md @eread
+/doc/user/compliance/license_compliance/index.md @rdickenson
+/doc/user/discussions/index.md @aqualls
+/doc/user/feature_flags.md @marcia
+/doc/user/group/clusters/index.md @marcia
+/doc/user/group/contribution_analytics/index.md @fneill
+/doc/user/group/custom_project_templates.md @ngaskill
+/doc/user/group/devops_adoption/index.md @fneill
+/doc/user/group/epics/epic_boards.md @msedlakjakubowski
+/doc/user/group/epics/index.md @msedlakjakubowski
+/doc/user/group/epics/manage_epics.md @msedlakjakubowski
+/doc/user/group/import/index.md @ngaskill
+/doc/user/group/index.md @eread
+/doc/user/group/insights/index.md @fneill
+/doc/user/group/issues_analytics/index.md @msedlakjakubowski
+/doc/user/group/iterations/index.md @msedlakjakubowski
+/doc/user/group/repositories_analytics/index.md @eread
+/doc/user/group/roadmap/index.md @msedlakjakubowski
+/doc/user/group/saml_sso/group_managed_accounts.md @eread
+/doc/user/group/saml_sso/index.md @eread
+/doc/user/group/saml_sso/scim_setup.md @eread
+/doc/user/group/settings/import_export.md @ngaskill
+/doc/user/group/subgroups/index.md @eread
+/doc/user/group/value_stream_analytics/index.md @fneill
+/doc/user/infrastructure/clusters/ @marcia
+/doc/user/infrastructure/clusters/manage/clusters_health.md @marcia
+/doc/user/infrastructure/clusters/manage/management_project_applications/apparmor.md @ngaskill
+/doc/user/infrastructure/clusters/manage/management_project_applications/certmanager.md @marcia
+/doc/user/infrastructure/clusters/manage/management_project_applications/cilium.md @ngaskill
+/doc/user/infrastructure/clusters/manage/management_project_applications/elasticstack.md @ngaskill
+/doc/user/infrastructure/clusters/manage/management_project_applications/falco.md @ngaskill
+/doc/user/infrastructure/clusters/manage/management_project_applications/fluentd.md @ngaskill
+/doc/user/infrastructure/clusters/manage/management_project_applications/ingress.md @marcia
+/doc/user/infrastructure/clusters/manage/management_project_applications/prometheus.md @ngaskill
+/doc/user/infrastructure/clusters/manage/management_project_applications/runner.md @sselhorn
+/doc/user/infrastructure/clusters/manage/management_project_applications/sentry.md @ngaskill
+/doc/user/infrastructure/clusters/manage/management_project_applications/vault.md @marcia
+/doc/user/infrastructure/iac/ @marcia
+/doc/user/infrastructure/index.md @marcia
/doc/user/markdown.md @aqualls
+/doc/user/packages/ @ngaskill
+/doc/user/packages/infrastructure_registry/index.md @marcia
+/doc/user/packages/terraform_module_registry/index.md @marcia
+/doc/user/permissions.md @eread
+/doc/user/profile/ @eread
+/doc/user/profile/notifications.md @msedlakjakubowski
/doc/user/project/autocomplete_characters.md @aqualls
/doc/user/project/badges.md @aqualls
+/doc/user/project/clusters/ @marcia
+/doc/user/project/clusters/kubernetes_pod_logs.md @ngaskill
+/doc/user/project/clusters/protect/ @ngaskill
/doc/user/project/code_intelligence.md @aqualls
/doc/user/project/code_owners.md @aqualls
+/doc/user/project/deploy_boards.md @rdickenson
+/doc/user/project/deploy_keys/index.md @rdickenson
+/doc/user/project/deploy_tokens/index.md @rdickenson
+/doc/user/project/description_templates.md @msedlakjakubowski
/doc/user/project/file_lock.md @aqualls
/doc/user/project/git_attributes.md @aqualls
/doc/user/project/highlighting.md @aqualls
-/doc/user/project/index.md @aqualls
+/doc/user/project/import/ @ngaskill
+/doc/user/project/import/jira.md @msedlakjakubowski
+/doc/user/project/index.md @fneill
+/doc/user/project/integrations/ @kpaizee
+/doc/user/project/integrations/prometheus_library/ @ngaskill
+/doc/user/project/integrations/prometheus.md @ngaskill
+/doc/user/project/issue_board.md @msedlakjakubowski
+/doc/user/project/issues/ @msedlakjakubowski
+/doc/user/project/labels.md @msedlakjakubowski
+/doc/user/project/members/index.md @eread
+/doc/user/project/members/share_project_with_groups.md @fneill
+/doc/user/project/merge_requests/ @aqualls
+/doc/user/project/merge_requests/accessibility_testing.md @eread
+/doc/user/project/merge_requests/browser_performance_testing.md @eread
+/doc/user/project/merge_requests/code_quality.md @rdickenson
+/doc/user/project/merge_requests/csv_export.md @eread
+/doc/user/project/merge_requests/fail_fast_testing.md @eread
+/doc/user/project/merge_requests/load_performance_testing.md @eread
+/doc/user/project/merge_requests/status_checks.md @eread
+/doc/user/project/merge_requests/test_coverage_visualization.md @eread
+/doc/user/project/merge_requests/testing_and_reports_in_merge_requests.md @eread
+/doc/user/project/milestones/ @msedlakjakubowski
+/doc/user/project/pages/ @rdickenson
/doc/user/project/protected_branches.md @aqualls
/doc/user/project/protected_tags.md @aqualls
/doc/user/project/push_options.md @aqualls
-/doc/user/project/settings/import_export.md @aqualls
+/doc/user/project/quick_actions.md @msedlakjakubowski
+/doc/user/project/releases/index.md @rdickenson
+/doc/user/project/releases/release_cli.md @rdickenson
+/doc/user/project/repository/ @aqualls
+/doc/user/project/repository/reducing_the_repo_size_using_git.md @eread
+/doc/user/project/requirements/index.md @msedlakjakubowski
+/doc/user/project/service_desk.md @msedlakjakubowski
+/doc/user/project/settings/import_export.md @ngaskill
+/doc/user/project/settings/index.md @fneill
+/doc/user/project/settings/project_access_tokens.md @eread
+/doc/user/project/static_site_editor/index.md @aqualls
+/doc/user/project/time_tracking.md @msedlakjakubowski
+/doc/user/project/web_ide/index.md @aqualls
+/doc/user/project/wiki/group.md @aqualls
+/doc/user/project/wiki/index.md @aqualls
+/doc/user/project/working_with_projects.md @fneill
+/doc/user/reserved_names.md @fneill
+/doc/user/search/advanced_search.md @marcia
+/doc/user/search/index.md @aqualls
/doc/user/snippets.md @aqualls
-
-[Docs Ecosystem]
-/doc/administration/integration/ @kpaizee
-/doc/integration/ @kpaizee
-/doc/user/project/integrations/ @kpaizee
-/doc/user/project/integrations/prometheus_library/ @ngaskill
-
-[Docs Growth]
-/doc/administration/instance_review.md @kpaizee
-/doc/api/invitations.md @kpaizee
-/doc/api/experiments.md @kpaizee
-/doc/development/experiment_guide/ @kpaizee
-/doc/development/snowplow/ @fneill
-/doc/development/service_ping/ @fneill
-/doc/user/admin_area/license.md @kpaizee
+/doc/user/tasks.md @msedlakjakubowski
+/doc/user/todos.md @msedlakjakubowski
+/doc/user/usage_quotas.md @sselhorn
+/doc/user/workspace/index.md @fneill
diff --git a/.gitlab/ci/cng.gitlab-ci.yml b/.gitlab/ci/cng.gitlab-ci.yml
index bf439288be2..d720ec5ae45 100644
--- a/.gitlab/ci/cng.gitlab-ci.yml
+++ b/.gitlab/ci/cng.gitlab-ci.yml
@@ -1,10 +1,51 @@
+cloud-native-image-env:
+ extends:
+ - .default-retry
+ - .cng:rules
+ image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13
+ stage: post-test
+ before_script:
+ - source ./scripts/utils.sh
+ - install_gitlab_gem
+ script:
+ - 'ruby -r./scripts/trigger-build.rb -e "puts Trigger.variables_for_env_file(Trigger::CNG.new.variables)" > build.env'
+ - cat build.env
+ artifacts:
+ reports:
+ dotenv: build.env
+ paths:
+ - build.env
+ expire_in: 7 days
+ when: always
+
cloud-native-image:
extends: .cng:rules
- image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine
- dependencies: []
stage: post-test
+ needs: ["cloud-native-image-env"]
+ inherit:
+ variables: false
variables:
- GIT_DEPTH: "1"
- script:
- - install_gitlab_gem
- - ./scripts/trigger-build cng
+ TOP_UPSTREAM_SOURCE_PROJECT: "${TOP_UPSTREAM_SOURCE_PROJECT}"
+ TOP_UPSTREAM_SOURCE_REF: "${TOP_UPSTREAM_SOURCE_REF}"
+ TOP_UPSTREAM_SOURCE_JOB: "${TOP_UPSTREAM_SOURCE_JOB}"
+ TOP_UPSTREAM_SOURCE_SHA: "${TOP_UPSTREAM_SOURCE_SHA}"
+ TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID: "${TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID}"
+ TOP_UPSTREAM_MERGE_REQUEST_IID: "${TOP_UPSTREAM_MERGE_REQUEST_IID}"
+ GITLAB_REF_SLUG: "${GITLAB_REF_SLUG}"
+ # CNG pipeline specific variables
+ GITLAB_VERSION: "${GITLAB_VERSION}"
+ GITLAB_TAG: "${GITLAB_TAG}"
+ GITLAB_ASSETS_TAG: "${GITLAB_ASSETS_TAG}"
+ FORCE_RAILS_IMAGE_BUILDS: "${FORCE_RAILS_IMAGE_BUILDS}"
+ CE_PIPELINE: "${CE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$CE_PIPELINE'` will evaluate to `false` when this variable is empty
+ EE_PIPELINE: "${EE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$EE_PIPELINE'` will evaluate to `false` when this variable is empty
+ GITLAB_SHELL_VERSION: "${GITLAB_SHELL_VERSION}"
+ GITLAB_ELASTICSEARCH_INDEXER_VERSION: "${GITLAB_ELASTICSEARCH_INDEXER_VERSION}"
+ GITLAB_KAS_VERSION: "${GITLAB_KAS_VERSION}"
+ GITLAB_WORKHORSE_VERSION: "${GITLAB_WORKHORSE_VERSION}"
+ GITLAB_PAGES_VERSION: "${GITLAB_PAGES_VERSION}"
+ GITALY_SERVER_VERSION: "${GITALY_SERVER_VERSION}"
+ trigger:
+ project: gitlab-org/build/CNG
+ branch: $TRIGGER_BRANCH
+ strategy: depend
diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml
index c439e9a7c80..8b7691045cb 100644
--- a/.gitlab/ci/docs.gitlab-ci.yml
+++ b/.gitlab/ci/docs.gitlab-ci.yml
@@ -28,7 +28,7 @@
review-docs-deploy:
extends: .review-docs
script:
- - ./scripts/trigger-build docs deploy
+ - ./scripts/trigger-build.rb docs deploy
# Cleanup remote environment of gitlab-docs
review-docs-cleanup:
@@ -37,14 +37,14 @@ review-docs-cleanup:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}
action: stop
script:
- - ./scripts/trigger-build docs cleanup
+ - ./scripts/trigger-build.rb docs cleanup
docs-lint markdown:
extends:
- .default-retry
- .docs:rules:docs-lint
# When updating the image version here, update it in /scripts/lint-doc.sh too.
- image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.15-vale-2.14.0-markdownlint-0.30.0
+ image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.15-vale-2.15.0-markdownlint-0.31.0
stage: lint
needs: []
script:
diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml
index 1dd5285e0ae..ef5af342544 100644
--- a/.gitlab/ci/frontend.gitlab-ci.yml
+++ b/.gitlab/ci/frontend.gitlab-ci.yml
@@ -11,7 +11,7 @@
- .default-retry
- .default-before_script
- .assets-compile-cache
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7-git-2.33-lfs-2.9-node-14.15-yarn-1.22-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7-git-2.33-lfs-2.9-node-14.15-yarn-1.22-graphicsmagick-1.3.36
variables:
SETUP_DB: "false"
WEBPACK_VENDOR_DLL: "true"
@@ -306,11 +306,6 @@ qa-frontend-node:latest:
- .qa-frontend-node
- .frontend:rules:qa-frontend-node-latest
image: ${GITLAB_DEPENDENCY_PROXY}node:latest
- # This is a workaround for https://github.com/webpack/webpack/issues/14532 until
- # we can upgrade to Webpack 5 and switch to SHA256: https://gitlab.com/gitlab-org/gitlab/-/issues/350120
- script:
- - *yarn-install
- - run_timed_command "retry yarn run webpack-prod-node-latest"
webpack-dev-server:
extends:
diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml
index 73e4712cc89..33b04faf731 100644
--- a/.gitlab/ci/global.gitlab-ci.yml
+++ b/.gitlab/ci/global.gitlab-ci.yml
@@ -18,7 +18,7 @@
- source scripts/prepare_build.sh
.ruby-gems-cache: &ruby-gems-cache
- key: "ruby-gems-v1"
+ key: "ruby-gems-${DEBIAN_VERSION}"
paths:
- vendor/ruby/
policy: pull
@@ -28,7 +28,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.gitaly-ruby-gems-cache: &gitaly-ruby-gems-cache
- key: "gitaly-ruby-gems-v1"
+ key: "gitaly-ruby-gems-${DEBIAN_VERSION}"
paths:
- vendor/gitaly-ruby/
policy: pull
@@ -41,7 +41,7 @@
key:
files:
- GITALY_SERVER_VERSION
- prefix: "gitaly-binaries"
+ prefix: "gitaly-binaries-${DEBIAN-VERSION}"
paths:
- tmp/tests/gitaly/_build/bin/
- tmp/tests/gitaly/_build/deps/git/install/
@@ -56,7 +56,7 @@
policy: pull
.go-pkg-cache: &go-pkg-cache
- key: "go-pkg-v1"
+ key: "go-pkg-${DEBIAN_VERSION}"
paths:
- .go/pkg/mod/
policy: pull
@@ -66,7 +66,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.node-modules-cache: &node-modules-cache
- key: "node-modules-${NODE_ENV}-v1"
+ key: "node-modules-${DEBIAN_VERSION}-${NODE_ENV}"
paths:
- node_modules/
- tmp/cache/webpack-dlls/
@@ -77,7 +77,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.assets-cache: &assets-cache
- key: "assets-${NODE_ENV}-v2"
+ key: "assets-${DEBIAN_VERSION}-${NODE_ENV}"
paths:
- assets-hash.txt
- public/assets/webpack/
@@ -91,7 +91,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.storybook-node-modules-cache: &storybook-node-modules-cache
- key: "storybook-node-modules-${NODE_ENV}-v1"
+ key: "storybook-node-modules-${DEBIAN_VERSION}-${NODE_ENV}"
paths:
- storybook/node_modules/
policy: pull
@@ -101,7 +101,7 @@
policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up.
.rubocop-cache: &rubocop-cache
- key: "rubocop-v1"
+ key: "rubocop-${DEBIAN_VERSION}"
paths:
- tmp/rubocop_cache/
policy: pull
@@ -113,7 +113,7 @@
policy: push
.qa-ruby-gems-cache: &qa-ruby-gems-cache
- key: "qa-ruby-gems-v1-debian-buster"
+ key: "qa-ruby-gems-${DEBIAN_VERSION}"
paths:
- qa/vendor/ruby/
policy: pull
@@ -213,7 +213,7 @@
- *storybook-node-modules-cache-push
.use-pg11:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
services:
- name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -222,7 +222,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
services:
- name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -231,7 +231,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg13:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
services:
- name: postgres:13
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -240,7 +240,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg11-ee:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36
services:
- name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -251,7 +251,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12-ee:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36
services:
- name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@@ -262,7 +262,7 @@
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg13-ee:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7.patched-golang-1.16-git-2.33-lfs-2.9-chrome-97-node-14.15-yarn-1.22-postgresql-13-graphicsmagick-1.3.36
services:
- name: postgres:13
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
diff --git a/.gitlab/ci/memory.gitlab-ci.yml b/.gitlab/ci/memory.gitlab-ci.yml
index 9234b116ff8..c6572d9709c 100644
--- a/.gitlab/ci/memory.gitlab-ci.yml
+++ b/.gitlab/ci/memory.gitlab-ci.yml
@@ -11,34 +11,9 @@
metrics: "${METRICS_FILE}"
expire_in: 31d
-memory-static:
- extends: .only-code-memory-job-base
- stage: test
- needs: ["setup-test-env"]
- variables:
- SETUP_DB: "false"
- MEMORY_BUNDLE_MEM_FILE: "tmp/memory_bundle_mem.txt"
- MEMORY_BUNDLE_OBJECTS_FILE: "tmp/memory_bundle_objects.txt"
- script:
- # Uses two different reports from the 'derailed_benchmars' gem.
-
- # Loads each of gems in the Gemfile and checks how much memory they consume when they are required.
- # 'derailed_benchmarks' internally uses 'get_process_mem'
- - bundle exec derailed bundle:mem > "${MEMORY_BUNDLE_MEM_FILE}"
- - scripts/generate-gems-size-metrics-static "${MEMORY_BUNDLE_MEM_FILE}" >> "${METRICS_FILE}"
-
- # Outputs detailed information about objects created while gems are loaded.
- # 'derailed_benchmarks' internally uses 'memory_profiler'
- - bundle exec derailed bundle:objects > "${MEMORY_BUNDLE_OBJECTS_FILE}"
- - scripts/generate-gems-memory-metrics-static "${MEMORY_BUNDLE_OBJECTS_FILE}" >> "${METRICS_FILE}"
- artifacts:
- paths:
- - "${METRICS_FILE}"
- - "${MEMORY_BUNDLE_MEM_FILE}"
- - "${MEMORY_BUNDLE_OBJECTS_FILE}"
# Show memory usage caused by invoking require per gem.
-# Unlike `memory-static`, it hits the app with one request to ensure that any last minute require-s have been called.
+# Hits the app with one request to ensure that any last minute require-s have been called.
# The application is booted in `production` environment.
# All tests are run without a webserver (directly using Rack::Mock by default).
memory-on-boot:
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index b12f76f2823..77d12a3e848 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -73,7 +73,7 @@ update-qa-cache:
- echo $exit_code
- |
if [ $exit_code -eq 0 ]; then
- ./scripts/trigger-build omnibus
+ ./scripts/trigger-build.rb omnibus
elif [ $exit_code -eq 1 ]; then
exit 1
else
@@ -108,7 +108,7 @@ update-qa-cache:
if [[ $feature_flags ]]; then
export GITLAB_QA_OPTIONS="--set-feature-flags $feature_flags"
echo $GITLAB_QA_OPTIONS
- ./scripts/trigger-build omnibus
+ ./scripts/trigger-build.rb omnibus
else
echo "No changed feature flag found to test. The tests are skipped if the flag was removed."
fi
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index 1d2f94b616d..8a4ea690c60 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -29,7 +29,9 @@
GITLAB_USE_MODEL_LOAD_BALANCING: "true"
.rspec-base:
- extends: .rails-job-base
+ extends:
+ - .rails-job-base
+ - .base-artifacts
stage: test
variables:
RUBY_GC_MALLOC_LIMIT: 67108864
@@ -40,6 +42,8 @@
script:
- !reference [.base-script, script]
- rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration"
+
+.base-artifacts:
artifacts:
expire_in: 31d
when: always
@@ -48,16 +52,16 @@
- crystalball/
- deprecations/
- knapsack/
- - rspec_flaky/
- - rspec_profiling/
+ - rspec/
- tmp/capybara/
- - tmp/memory_test/
- log/*.log
reports:
- junit: junit_rspec.xml
+ junit: ${JUNIT_RESULT_FILE}
.rspec-base-migration:
- extends: .rails:rules:ee-and-foss-migration
+ extends:
+ - .base-artifacts
+ - .rails:rules:ee-and-foss-migration
script:
- !reference [.base-script, script]
- rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration"
@@ -307,6 +311,8 @@ rspec system pg12:
- .rspec-base-pg12
- .rails:rules:ee-and-foss-system
- .rspec-system-parallel
+ variables:
+ DEBUG_GITLAB_TRANSACTION_STACK: "true"
rspec system pg12 minimal:
extends:
@@ -335,13 +341,9 @@ rspec fast_spec_helper:
- .rspec-base-pg12
- .rails:rules:ee-and-foss-fast_spec_helper
script:
- - bin/rspec spec/fast_spec_helper.rb
-
-rspec fast_spec_helper minimal:
- extends:
- - rspec fast_spec_helper
- - .minimal-rspec-tests
- - .rails:rules:ee-and-foss-fast_spec_helper:minimal
+ - fast_spec_helper_specs=$(git grep -l -E '^require.*fast_spec_helper')
+ # Load fast_spec_helper as well just in case there are no specs available.
+ - bin/rspec --dry-run spec/fast_spec_helper.rb $fast_spec_helper_specs
db:rollback:
extends: .db-job-base
@@ -427,6 +429,13 @@ db:check-migrations-decomposed:
- .decomposed-database
- .rails:rules:decomposed-databases
+db:migrate-non-superuser:
+ extends:
+ - .db-job-base
+ - .rails:rules:ee-and-foss-mr-with-migration
+ script:
+ - bundle exec rake gitlab:db:reset_as_non_superuser
+
db:gitlabcom-database-testing:
extends: .rails:rules:db:gitlabcom-database-testing
stage: test
@@ -436,7 +445,7 @@ db:gitlabcom-database-testing:
script:
- source scripts/utils.sh
- install_gitlab_gem
- - ./scripts/trigger-build gitlab-com-database-testing
+ - ./scripts/trigger-build.rb gitlab-com-database-testing
gitlab:setup:
extends: .db-job-base
@@ -554,7 +563,6 @@ rspec:coverage:
- rspec-ee integration pg12 geo minimal
- rspec-ee system pg12 geo minimal
# Memory jobs
- - memory-static
- memory-on-boot
# As-if-FOSS jobs
- rspec migration pg12-as-if-foss
@@ -571,7 +579,6 @@ rspec:coverage:
- rspec system pg12-as-if-foss decomposed
script:
- run_timed_command "bundle exec scripts/merge-simplecov"
- - run_timed_command "bundle exec scripts/gather-test-memory-data"
coverage: '/LOC \((\d+\.\d+%)\) covered.$/'
artifacts:
name: coverage
@@ -580,7 +587,6 @@ rspec:coverage:
- coverage/index.html
- coverage/assets/
- coverage/lcov/
- - tmp/memory_test/
reports:
cobertura: coverage/coverage.xml
@@ -621,54 +627,26 @@ rspec:feature-flags:
run_timed_command "bundle exec scripts/used-feature-flags";
fi
-rspec:skipped-flaky-tests-report:
+rspec:flaky-tests-report:
extends:
- .default-retry
- - .rails:rules:skipped-flaky-tests-report
- image: ruby:2.7-alpine
+ - .rails:rules:flaky-tests-report
stage: post-test
# We cannot use needs since it would mean needing 84 jobs (since most are parallelized)
# so we use `dependencies` here.
- dependencies:
- # FOSS/EE jobs
- - rspec migration pg12
- - rspec unit pg12
- - rspec integration pg12
- - rspec system pg12
- # FOSS/EE minimal jobs
- - rspec migration pg12 minimal
- - rspec unit pg12 minimal
- - rspec integration pg12 minimal
- - rspec system pg12 minimal
- # EE jobs
- - rspec-ee migration pg12
- - rspec-ee unit pg12
- - rspec-ee integration pg12
- - rspec-ee system pg12
- # EE minimal jobs
- - rspec-ee migration pg12 minimal
- - rspec-ee unit pg12 minimal
- - rspec-ee integration pg12 minimal
- - rspec-ee system pg12 minimal
- # Geo jobs
- - rspec-ee unit pg12 geo
- - rspec-ee integration pg12 geo
- - rspec-ee system pg12 geo
- # Geo minimal jobs
- - rspec-ee unit pg12 geo minimal
- - rspec-ee integration pg12 geo minimal
- - rspec-ee system pg12 geo minimal
+ dependencies: !reference ["rspec:coverage", "dependencies"]
variables:
- SKIPPED_FLAKY_TESTS_REPORT: skipped_flaky_tests_report.txt
+ SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_report.txt
+ RETRIED_TESTS_REPORT_PATH: rspec/flaky/retried_tests_report.txt
before_script:
- - 'echo "SKIP_FLAKY_TESTS_AUTOMATICALLY: $SKIP_FLAKY_TESTS_AUTOMATICALLY"'
- - mkdir -p rspec_flaky
+ - source scripts/utils.sh
+ - source scripts/rspec_helpers.sh
script:
- - find rspec_flaky/ -type f -name 'skipped_flaky_tests_*_report.txt' -exec cat {} + >> "${SKIPPED_FLAKY_TESTS_REPORT}"
+ - generate_flaky_tests_reports
artifacts:
expire_in: 31d
paths:
- - ${SKIPPED_FLAKY_TESTS_REPORT}
+ - rspec/
# EE/FOSS: default refs (MRs, default branch, schedules) jobs #
#######################################################
diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml
index 6d58bbf9682..b9d2e31191a 100644
--- a/.gitlab/ci/reports.gitlab-ci.yml
+++ b/.gitlab/ci/reports.gitlab-ci.yml
@@ -112,7 +112,6 @@ yarn-audit-dependency_scanning:
name: registry.gitlab.com/gitlab-com/gl-security/security-research/package-hunter-cli:1.1.0
entrypoint: [""]
variables:
- DEBUG: '*'
HTR_user: '$PACKAGE_HUNTER_USER'
HTR_pass: '$PACKAGE_HUNTER_PASS'
needs: []
@@ -121,7 +120,7 @@ yarn-audit-dependency_scanning:
- rm -r spec locale .git app/assets/images doc/
- cd .. && tar -I "gzip --best" -cf gitlab.tgz gitlab/
script:
- - node /usr/src/app/cli.js analyze --format gitlab --manager ${PACKAGE_MANAGER} gitlab.tgz | tee ${CI_PROJECT_DIR}/gl-dependency-scanning-report.json
+ - DEBUG=* node /usr/src/app/cli.js analyze --format gitlab --manager ${PACKAGE_MANAGER} gitlab.tgz | tee ${CI_PROJECT_DIR}/gl-dependency-scanning-report.json
artifacts:
paths:
- gl-dependency-scanning-report.json
diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml
index 16ef3c82cda..d083f876b03 100644
--- a/.gitlab/ci/review-apps/main.gitlab-ci.yml
+++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml
@@ -16,20 +16,58 @@ include:
- source ./scripts/review_apps/review-apps.sh
- install_api_client_dependencies_with_apk
-review-build-cng:
+review-build-cng-env:
extends:
- .default-retry
- .review:rules:review-build-cng
image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine3.13
stage: prepare
- variables:
- CNG_PROJECT_ACCESS_TOKEN: "${CNG_MIRROR_PROJECT_ACCESS_TOKEN}" # "Multi-pipeline (from 'gitlab-org/gitlab' 'review-build-cng' job)" at https://gitlab.com/gitlab-org/build/CNG-mirror/-/settings/access_tokens
- CNG_PROJECT_PATH: "gitlab-org/build/CNG-mirror"
+ needs: []
before_script:
- source ./scripts/utils.sh
- install_gitlab_gem
script:
- - ./scripts/trigger-build cng
+ - 'ruby -r./scripts/trigger-build.rb -e "puts Trigger.variables_for_env_file(Trigger::CNG.new.variables)" > build.env'
+ - cat build.env
+ artifacts:
+ reports:
+ dotenv: build.env
+ paths:
+ - build.env
+ expire_in: 7 days
+ when: always
+
+review-build-cng:
+ extends: .review:rules:review-build-cng
+ stage: prepare
+ needs: ["review-build-cng-env"]
+ inherit:
+ variables: false
+ variables:
+ TOP_UPSTREAM_SOURCE_PROJECT: "${TOP_UPSTREAM_SOURCE_PROJECT}"
+ TOP_UPSTREAM_SOURCE_REF: "${TOP_UPSTREAM_SOURCE_REF}"
+ TOP_UPSTREAM_SOURCE_JOB: "${TOP_UPSTREAM_SOURCE_JOB}"
+ TOP_UPSTREAM_SOURCE_SHA: "${TOP_UPSTREAM_SOURCE_SHA}"
+ TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID: "${TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID}"
+ TOP_UPSTREAM_MERGE_REQUEST_IID: "${TOP_UPSTREAM_MERGE_REQUEST_IID}"
+ GITLAB_REF_SLUG: "${GITLAB_REF_SLUG}"
+ # CNG pipeline specific variables
+ GITLAB_VERSION: "${GITLAB_VERSION}"
+ GITLAB_TAG: "${GITLAB_TAG}"
+ GITLAB_ASSETS_TAG: "${GITLAB_ASSETS_TAG}"
+ FORCE_RAILS_IMAGE_BUILDS: "${FORCE_RAILS_IMAGE_BUILDS}"
+ CE_PIPELINE: "${CE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$CE_PIPELINE'` will evaluate to `false` when this variable is empty
+ EE_PIPELINE: "${EE_PIPELINE}" # Based on https://docs.gitlab.com/ee/ci/jobs/job_control.html#check-if-a-variable-exists, `if: '$EE_PIPELINE'` will evaluate to `false` when this variable is empty
+ GITLAB_SHELL_VERSION: "${GITLAB_SHELL_VERSION}"
+ GITLAB_ELASTICSEARCH_INDEXER_VERSION: "${GITLAB_ELASTICSEARCH_INDEXER_VERSION}"
+ GITLAB_KAS_VERSION: "${GITLAB_KAS_VERSION}"
+ GITLAB_WORKHORSE_VERSION: "${GITLAB_WORKHORSE_VERSION}"
+ GITLAB_PAGES_VERSION: "${GITLAB_PAGES_VERSION}"
+ GITALY_SERVER_VERSION: "${GITALY_SERVER_VERSION}"
+ trigger:
+ project: gitlab-org/build/CNG-mirror
+ branch: $TRIGGER_BRANCH
+ strategy: depend
.review-workflow-base:
extends:
diff --git a/.gitlab/ci/review-apps/qa.gitlab-ci.yml b/.gitlab/ci/review-apps/qa.gitlab-ci.yml
index 4ef6efa2604..eaf6429ad58 100644
--- a/.gitlab/ci/review-apps/qa.gitlab-ci.yml
+++ b/.gitlab/ci/review-apps/qa.gitlab-ci.yml
@@ -27,11 +27,13 @@
- echo "${CI_ENVIRONMENT_URL}"
- cd qa
script:
- - |
- bin/test "${QA_SCENARIO}" "${CI_ENVIRONMENT_URL}" \
- -- \
- --color --format documentation \
- --format RspecJunitFormatter --out tmp/rspec.xml
+ - qa_run_status=0
+ - bin/test "${QA_SCENARIO}" "${CI_ENVIRONMENT_URL}" -- --color --format documentation --format RspecJunitFormatter --out tmp/rspec.xml || qa_run_status=$?
+ - if [ ${qa_run_status} -ne 0 ]; then
+ release_sha=$(echo "${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-${CI_COMMIT_SHA}}" | cut -c1-11);
+ echo "Errors can be found at https://sentry.gitlab.net/gitlab/gitlab-review-apps/releases/${release_sha}/all-events/.";
+ fi
+ - exit ${qa_run_status}
artifacts:
paths:
- qa/tmp
diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 008b62f6a0f..a4bb99c49ad 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -73,6 +73,9 @@
.if-security-merge-request: &if-security-merge-request
if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID'
+.if-fork-merge-request: &if-fork-merge-request
+ if: '$CI_PROJECT_NAMESPACE !~ /^gitlab(-org)?($|\/)/ && $CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_LABELS !~ /pipeline:run-all-rspec/'
+
.if-default-branch-schedule-2-hourly: &if-default-branch-schedule-2-hourly
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $FREQUENCY == "2-hourly"'
@@ -121,15 +124,13 @@
.if-security-pipeline-merge-result: &if-security-pipeline-merge-result
if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $CI_PROJECT_NAMESPACE == "gitlab-org/security" && $GITLAB_USER_LOGIN == "gitlab-release-tools-bot"'
-.if-skip-flaky-tests-automatically: &if-skip-flaky-tests-automatically
- if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true"'
-
####################
# Changes patterns #
####################
.ci-patterns: &ci-patterns
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
+ - "scripts/rspec_helpers.sh"
.ci-build-images-patterns: &ci-build-images-patterns
- ".gitlab-ci.yml"
@@ -143,7 +144,7 @@
- ".gitlab/ci/review-apps/**/*"
- "scripts/review_apps/base-config.yaml"
- "scripts/review_apps/review-apps.sh"
- - "scripts/trigger-build"
+ - "scripts/trigger-build.rb"
- "{,ee/,jh/}{bin,config}/**/*.rb"
.ci-qa-patterns: &ci-qa-patterns
@@ -232,6 +233,9 @@
.controllers-patterns: &controllers-patterns
- "{,ee/,jh/}{app/controllers}/**/*"
+.models-patterns: &models-patterns
+ - "{,ee/,jh/}{app/models}/**/*"
+
.startup-css-patterns: &startup-css-patterns
- "{,ee/,jh/}app/assets/stylesheets/startup/**/*"
@@ -248,6 +252,7 @@
- ".gitlab-ci.yml"
- ".gitlab/ci/**/*"
- "*_VERSION"
+ - "scripts/rspec_helpers.sh"
# DB patterns + .ci-patterns
.db-patterns: &db-patterns
@@ -456,6 +461,106 @@
.feature-flag-development-config-patterns: &feature-flag-development-config-patterns
- "{,ee/}config/feature_flags/{development,ops}/*.yml"
+##################
+# Conditions set #
+##################
+.strict-ee-only-rules:
+ rules:
+ - <<: *if-not-ee
+ when: never
+ - <<: *if-jh
+ when: never
+
+.as-if-jh-default-exclusion-rules:
+ rules:
+ - <<: *if-security-merge-request
+ when: never
+ - <<: *if-merge-request-targeting-stable-branch
+ when: never
+ - <<: *if-stable-branch-refs
+ when: never
+ - <<: *if-merge-request-labels-as-if-jh
+ allow_failure: true
+
+.rails:rules:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request-approved
+ when: never
+ - <<: *if-automated-merge-request
+ when: never
+ - <<: *if-security-merge-request
+ when: never
+
+
+.rails:rules:ee-and-foss-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ - <<: *if-automated-merge-request
+ changes: *backend-patterns
+ - <<: *if-security-merge-request
+ changes: *backend-patterns
+ - <<: *if-merge-request-not-approved
+ when: never
+
+.rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ when: never
+
+.rails:rules:unit-integration:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ when: never
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
+
+.rails:rules:system-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ - <<: *if-merge-request
+ changes: *workhorse-patterns
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ - <<: *if-automated-merge-request
+ changes: *code-backstage-patterns
+ - <<: *if-security-merge-request
+ changes: *code-backstage-patterns
+ - <<: *if-merge-request-not-approved
+ when: never
+
+.rails:rules:system:minimal-default-rules:
+ rules:
+ - <<: *if-merge-request-labels-run-all-rspec
+ when: never
+ - <<: *if-merge-request
+ changes: *core-backend-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *workhorse-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *ci-patterns
+ when: never
+ - <<: *if-merge-request
+ changes: *code-backstage-patterns
+
+.rails:rules:previous-failed-tests-default-rules:
+ rules:
+ - <<: *if-security-merge-request
+ when: never
+ - <<: *if-merge-request-labels-run-all-rspec
+ - <<: *if-merge-request
+ changes: *code-backstage-patterns
+
################
# Shared rules #
################
@@ -519,7 +624,6 @@
rules:
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.dev-fixtures:rules:ee-only:
rules:
@@ -527,7 +631,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
##############
# Docs rules #
@@ -543,7 +646,6 @@
rules:
- <<: *if-default-refs
changes: *docs-patterns
- when: on_success
.docs:rules:deprecations-and-removals:
rules:
@@ -553,14 +655,12 @@
##################
# GraphQL rules #
##################
-
.graphql:rules:graphql-verify:
rules:
- <<: *if-not-ee
when: never
- <<: *if-default-refs
changes: *code-backstage-qa-patterns
- when: on_success
##################
# Frontend rules #
@@ -572,11 +672,13 @@
- <<: *if-merge-request-labels-run-review-app
- <<: *if-auto-deploy-branches
- changes: *code-qa-patterns
+ - changes: *workhorse-patterns
.frontend:rules:compile-test-assets:
rules:
- - changes: *code-backstage-qa-patterns
- <<: *if-merge-request-labels-run-all-rspec
+ - changes: *code-backstage-qa-patterns
+ - changes: *workhorse-patterns
.frontend:rules:compile-test-assets-as-if-foss:
rules:
@@ -586,23 +688,19 @@
- <<: *if-merge-request-labels-run-all-rspec
- changes: *code-backstage-qa-patterns
- changes: *startup-css-patterns
+ - changes: *workhorse-patterns
.frontend:rules:compile-test-assets-as-if-jh:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request-labels-run-all-rspec
+ allow_failure: true
- changes: *code-backstage-qa-patterns
+ allow_failure: true
- changes: *startup-css-patterns
+ allow_failure: true
+ - changes: *workhorse-patterns
.frontend:rules:default-frontend-jobs:
rules:
@@ -611,10 +709,7 @@
.frontend:rules:default-frontend-jobs-as-if-foss:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
+ - !reference [".strict-ee-only-rules", rules]
- <<: *if-security-merge-request
changes: *code-backstage-patterns
- <<: *if-merge-request-labels-as-if-foss
@@ -626,25 +721,21 @@
.frontend:rules:default-frontend-jobs-as-if-jh:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request-labels-run-all-rspec
+ allow_failure: true
- <<: *if-merge-request
changes: *startup-css-patterns
+ allow_failure: true
- <<: *if-merge-request
changes: *ci-patterns
+ allow_failure: true
.frontend:rules:jest:
rules:
+ - <<: *if-fork-merge-request
+ when: never
- <<: *if-merge-request-labels-run-all-jest
- <<: *if-default-refs
changes: *core-frontend-patterns
@@ -661,16 +752,12 @@
.frontend:rules:jest:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
+ - <<: *if-fork-merge-request
+ changes: *code-backstage-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
- <<: *if-merge-request-labels-run-all-jest
when: never
- - <<: *if-default-refs
- changes: *core-frontend-patterns
+ - changes: *core-frontend-patterns
when: never
- <<: *if-merge-request
changes: *ci-patterns
@@ -680,10 +767,7 @@
.frontend:rules:eslint-as-if-foss:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
+ - !reference [".strict-ee-only-rules", rules]
# We already have `static-analysis as-if-foss` which already runs `lint:eslint:all` if the `pipeline:run-as-if-foss` label is set.
- <<: *if-merge-request-labels-as-if-foss
when: never
@@ -731,7 +815,6 @@
rules:
- <<: *if-default-refs
changes: *code-patterns
- when: on_success
###############
# Pages rules #
@@ -747,14 +830,10 @@
rules:
- <<: *if-default-refs
changes: *code-qa-patterns
- when: on_success
.qa:rules:as-if-foss:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
+ - !reference [".strict-ee-only-rules", rules]
- <<: *if-security-merge-request
changes: *code-qa-patterns
- <<: *if-merge-request-labels-as-if-foss
@@ -809,11 +888,15 @@
.rails:rules:ee-and-foss-migration:
rules:
+ - <<: *if-fork-merge-request
+ when: never
- <<: *if-merge-request-labels-run-all-rspec
- <<: *if-merge-request
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
- <<: *if-automated-merge-request
@@ -826,20 +909,12 @@
.rails:rules:ee-and-foss-migration:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *db-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
when: never
@@ -860,105 +935,49 @@
.rails:rules:ee-and-foss-unit:
rules:
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-and-foss-unit:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
.rails:rules:ee-and-foss-integration:
rules:
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-and-foss-integration:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
.rails:rules:ee-and-foss-system:
rules:
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *code-backstage-patterns
- - <<: *if-security-merge-request
- changes: *code-backstage-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:system-default-rules", rules]
- changes: *code-backstage-patterns
.rails:rules:ee-and-foss-system:minimal:
rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
- - <<: *if-merge-request
+ - <<: *if-fork-merge-request
changes: *code-backstage-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:system:minimal-default-rules", rules]
.rails:rules:ee-and-foss-fast_spec_helper:
rules:
@@ -967,33 +986,8 @@
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: ["config/**/*"]
- - <<: *if-security-merge-request
- changes: ["config/**/*"]
- - <<: *if-merge-request-not-approved
- when: never
- changes: ["config/**/*"]
-.rails:rules:ee-and-foss-fast_spec_helper:minimal:
- rules:
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
- - <<: *if-merge-request
- changes: ["config/**/*"]
-
.rails:rules:code-backstage-qa:
rules:
- changes: *code-backstage-qa-patterns
@@ -1008,6 +1002,8 @@
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
- <<: *if-automated-merge-request
@@ -1022,20 +1018,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request
changes: *db-patterns
when: never
@@ -1044,37 +1030,19 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-only-unit:minimal:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
@@ -1082,37 +1050,19 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- changes: *backend-patterns
.rails:rules:ee-only-integration:minimal:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - <<: *if-fork-merge-request
+ changes: *backend-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *backend-patterns
@@ -1120,39 +1070,19 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *code-backstage-patterns
- - <<: *if-security-merge-request
- changes: *code-backstage-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:system-default-rules", rules]
- changes: *code-backstage-patterns
.rails:rules:ee-only-system:minimal:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
- - <<: *if-merge-request
+ - <<: *if-fork-merge-request
changes: *code-backstage-patterns
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:system:minimal-default-rules", rules]
.rails:rules:as-if-foss-migration:
rules:
@@ -1163,8 +1093,8 @@
changes: *core-backend-patterns
- <<: *if-merge-request
changes: *ci-patterns
- - <<: *if-security-merge-request
- changes: *db-patterns
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request-labels-as-if-foss
changes: *db-patterns
- <<: *if-automated-merge-request
@@ -1178,18 +1108,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
- when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
+ # When DB schema changes, many migrations spec may be affected. However, the test mapping from Crystalball does not map db change to a specific migration spec well.
+ # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68840.
- <<: *if-merge-request-labels-as-if-foss
changes: *db-patterns
when: never
@@ -1198,17 +1120,9 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1216,18 +1130,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1235,17 +1141,9 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *backend-patterns
- - <<: *if-security-merge-request
- changes: *backend-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:ee-and-foss-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1253,18 +1151,10 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request
- changes: *core-backend-patterns
- when: never
- - <<: *if-merge-request
- changes: *ci-patterns
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
+ - !reference [".rails:rules:as-if-foss-migration-unit-integration:minimal-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *backend-patterns
@@ -1272,17 +1162,9 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *core-backend-patterns
- - <<: *if-merge-request
- changes: *ci-patterns
- - <<: *if-automated-merge-request
- changes: *code-backstage-patterns
- - <<: *if-security-merge-request
- changes: *code-backstage-patterns
- - <<: *if-merge-request-not-approved
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:system-default-rules", rules]
- <<: *if-merge-request-labels-as-if-foss
changes: *code-backstage-patterns
@@ -1290,16 +1172,16 @@
rules:
- <<: *if-not-ee
when: never
- - <<: *if-merge-request-approved
- when: never
- - <<: *if-automated-merge-request
- when: never
- - <<: *if-security-merge-request
+ - <<: *if-fork-merge-request
when: never
+ - !reference [".rails:rules:minimal-default-rules", rules]
- <<: *if-merge-request
changes: *core-backend-patterns
when: never
- <<: *if-merge-request
+ changes: *workhorse-patterns
+ when: never
+ - <<: *if-merge-request
changes: *ci-patterns
when: never
- <<: *if-merge-request-labels-as-if-foss
@@ -1307,18 +1189,8 @@
.rails:rules:as-if-jh-rspec:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
- allow_failure: true
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request
changes: *ci-patterns
allow_failure: true
@@ -1340,24 +1212,17 @@
.rails:rules:detect-tests:
rules:
- - changes: *code-backstage-qa-patterns
- <<: *if-merge-request-labels-run-all-rspec
+ - changes: *code-backstage-qa-patterns
+ - changes: *workhorse-patterns
.rails:rules:detect-previous-failed-tests:
rules:
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *code-backstage-patterns
+ - !reference [".rails:rules:previous-failed-tests-default-rules", rules]
.rails:rules:rerun-previous-failed-tests:
rules:
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-labels-run-all-rspec
- - <<: *if-merge-request
- changes: *code-backstage-patterns
+ - !reference [".rails:rules:previous-failed-tests-default-rules", rules]
.rails:rules:rspec-foss-impact:
rules:
@@ -1418,19 +1283,21 @@
- <<: *if-merge-request
changes: *backend-patterns
-.rails:rules:default-branch-schedule-nightly--code-backstage:
+.rails:rules:default-branch-schedule-nightly--code-backstage-default-rules:
rules:
- <<: *if-default-branch-schedule-nightly
- <<: *if-merge-request
changes: [".gitlab/ci/rails.gitlab-ci.yml"]
+.rails:rules:default-branch-schedule-nightly--code-backstage:
+ rules:
+ - !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-default-rules", rules]
+
.rails:rules:default-branch-schedule-nightly--code-backstage-ee-only:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-default-branch-schedule-nightly
- - <<: *if-merge-request
- changes: [".gitlab/ci/rails.gitlab-ci.yml"]
+ - !reference [".rails:rules:default-branch-schedule-nightly--code-backstage-default-rules", rules]
.rails:rules:rspec-feature-flags:
rules:
@@ -1438,13 +1305,16 @@
when: never
- changes: *code-backstage-patterns
-.rails:rules:skipped-flaky-tests-report:
+.rails:rules:flaky-tests-report:
rules:
- <<: *if-not-ee
when: never
- - <<: *if-skip-flaky-tests-automatically
+ - if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true" || $RETRY_FAILED_TESTS_IN_NEW_PROCESS == "true"'
changes: *code-backstage-patterns
- - changes: *ci-patterns
+ when: always
+ - if: '$SKIP_FLAKY_TESTS_AUTOMATICALLY == "true" || $RETRY_FAILED_TESTS_IN_NEW_PROCESS == "true"'
+ changes: *ci-patterns
+ when: always
#########################
# Static analysis rules #
@@ -1619,6 +1489,8 @@
- <<: *if-dot-com-gitlab-org-merge-request
changes: *controllers-patterns
- <<: *if-dot-com-gitlab-org-merge-request
+ changes: *models-patterns
+ - <<: *if-dot-com-gitlab-org-merge-request
changes: *qa-patterns
- <<: *if-dot-com-gitlab-org-merge-request
changes: *code-patterns
@@ -1734,7 +1606,6 @@
when: never
- <<: *if-default-branch-or-tag
changes: *code-backstage-qa-patterns
- when: on_success
.setup:rules:dont-interrupt-me:
rules:
@@ -1749,7 +1620,6 @@
rules:
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:no-ee-check:
rules:
@@ -1757,7 +1627,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:no-jh-check:
rules:
@@ -1765,7 +1634,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:verify-tests-yml:
rules:
@@ -1773,7 +1641,6 @@
when: never
- <<: *if-default-refs
changes: *code-backstage-patterns
- when: on_success
.setup:rules:generate-frontend-fixtures-mapping:
rules:
@@ -1787,20 +1654,16 @@
.setup:rules:add-jh-folder:
rules:
- - <<: *if-not-ee
- when: never
- - <<: *if-jh
- when: never
- - <<: *if-security-merge-request
- when: never
- - <<: *if-merge-request-targeting-stable-branch
- when: never
- - <<: *if-stable-branch-refs
- when: never
- - <<: *if-merge-request-labels-as-if-jh
+ - !reference [".strict-ee-only-rules", rules]
+ - !reference [".as-if-jh-default-exclusion-rules", rules]
- <<: *if-merge-request-labels-run-all-rspec
+ allow_failure: true
- changes: *code-backstage-qa-patterns
+ allow_failure: true
- changes: *startup-css-patterns
+ allow_failure: true
+ - changes: *workhorse-patterns
+ allow_failure: true
#######################
# Test metadata rules #
@@ -1808,7 +1671,7 @@
.test-metadata:rules:retrieve-tests-metadata:
rules:
- changes: *code-backstage-patterns
- when: on_success
+ - changes: *workhorse-patterns
- <<: *if-merge-request-labels-run-all-rspec
.test-metadata:rules:update-tests-metadata:
@@ -1825,8 +1688,7 @@
###################
.workhorse:rules:workhorse:
rules:
- - <<: *if-default-refs
- changes: *workhorse-patterns
+ - changes: *workhorse-patterns
###################
# yaml-lint rules #
diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml
index 13108ba289a..1aeccfcb212 100644
--- a/.gitlab/ci/setup.gitlab-ci.yml
+++ b/.gitlab/ci/setup.gitlab-ci.yml
@@ -159,7 +159,7 @@ add-jh-folder:
script:
- JH_BRANCH=$(./scripts/setup/find-jh-branch.rb)
- 'echo "JH_BRANCH: ${JH_BRANCH}"'
- - curl --location -o "jh-folder.tar.gz" "https://gitlab.com/gitlab-jh/gitlab/-/archive/${JH_BRANCH}/gitlab-${JH_BRANCH}.tar.gz?path=jh"
+ - curl --location -o "jh-folder.tar.gz" "https://gitlab.com/gitlab-org/gitlab-jh/gitlab/-/archive/${JH_BRANCH}/gitlab-${JH_BRANCH}.tar.gz?path=jh"
- tar -xf "jh-folder.tar.gz"
- mv "gitlab-${JH_BRANCH}-jh/jh/" ./
- cp Gemfile.lock jh/
diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml
index d0d45cb9294..20cbd759ac6 100644
--- a/.gitlab/ci/test-metadata.gitlab-ci.yml
+++ b/.gitlab/ci/test-metadata.gitlab-ci.yml
@@ -6,9 +6,9 @@
expire_in: 31d
paths:
- knapsack/
- - rspec_flaky/
- - rspec_profiling/
+ - rspec/
- crystalball/
+ when: always
retrieve-tests-metadata:
extends:
@@ -44,6 +44,6 @@ update-tests-metadata:
script:
- run_timed_command "retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document"
- source ./scripts/rspec_helpers.sh
- - test -f rspec_flaky/report-suite.json || echo -e "\e[31m" 'Consider add ~"pipeline:run-all-rspec" to run full rspec jobs' "\e[0m"
+ - test -f "${FLAKY_RSPEC_SUITE_REPORT_PATH}" || echo -e "\e[31m" 'Consider add ~"pipeline:run-all-rspec" to run full rspec jobs' "\e[0m"
- update_tests_metadata
- update_tests_mapping
diff --git a/.gitlab/ci/workhorse.gitlab-ci.yml b/.gitlab/ci/workhorse.gitlab-ci.yml
index aab077e575b..01e059b8a60 100644
--- a/.gitlab/ci/workhorse.gitlab-ci.yml
+++ b/.gitlab/ci/workhorse.gitlab-ci.yml
@@ -22,8 +22,8 @@ workhorse:verify:
workhorse:test using go 1.16:
extends: .workhorse:test
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7-golang-1.16-git-2.31
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7-golang-1.16-git-2.31
workhorse:test using go 1.17:
extends: .workhorse:test
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:ruby-2.7-golang-1.17-git-2.31
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images:debian-${DEBIAN_VERSION}-ruby-2.7-golang-1.17-git-2.31
diff --git a/.gitlab/issue_templates/Actionable Insight.md b/.gitlab/issue_templates/Actionable Insight - Exploration needed.md
index f4724d66a1b..76316fc626d 100644
--- a/.gitlab/issue_templates/Actionable Insight.md
+++ b/.gitlab/issue_templates/Actionable Insight - Exploration needed.md
@@ -1,13 +1,15 @@
-<!-- Actionable insights must recommend an action that needs to take place. An actionable insight both defines the insight and clearly calls out action or next step required to improve based on the result of the research observation or data. Actionable insights are tracked over time and will include follow-up. Please follow the tasks outlined in this issue for best results. Learn more in the handbook here: https://about.gitlab.com/handbook/engineering/ux/ux-research-training/research-insights/#actionable-insights -->
+<!-- Actionable insights must recommend an action that needs to take place. An actionable insight both defines the insight and clearly calls out action or next step required to improve based on the result of the research observation or data. Actionable insights are tracked over time and will include follow-up. Please follow the tasks outlined in this issue for best results. Learn more in the handbook here: https://about.gitlab.com/handbook/engineering/ux/ux-research-training/research-insights/#actionable-insights
+
+This issue template is for an actionable insight that requires further exploration.-->
### Insight
-<!-- Describe the insight itself: often the problem, finding, or observation. -->
+<!-- Describe the insight itself: often the problem, finding, or observation.-->
### Supporting evidence
<!-- Describe why the problem is happening, or more details behind the finding or observation. Try to include quotes or specific data collected. Feel free to link the Actionable insight from Dovetail here if applicable instead of retyping details. -->
### Action
-<!--Describe the next step or action that needs to take place as a result of the research. The action should be clearly defined, achievable, and directly tied back to the insight. Make sure to use directive terminology, such as: conduct, explore, redesign, etc. -->
+<!--Since this is an actionable insight that requires further exploration, ensure the action is algned to that. Describe the next step or action that needs to take place as a result of the research. The action should be clearly defined, achievable, and directly tied back to the insight. Make sure to use directive terminology, such as: conduct, explore, redesign, etc. -->
### Resources
<!--Add resources as links below or as related issues. -->
@@ -26,5 +28,5 @@
/confidential
-/label ~"Actionable Insight"
+/label ~"Actionable Insight::Exploration needed"
diff --git a/.gitlab/issue_templates/Actionable Insight - Product change.md b/.gitlab/issue_templates/Actionable Insight - Product change.md
new file mode 100644
index 00000000000..6c030220636
--- /dev/null
+++ b/.gitlab/issue_templates/Actionable Insight - Product change.md
@@ -0,0 +1,33 @@
+<!-- Actionable insights must recommend an action that needs to take place. An actionable insight both defines the insight and clearly calls out action or next step required to improve based on the result of the research observation or data. Actionable insights are tracked over time and will include follow-up. Please follow the tasks outlined in this issue for best results. Learn more in the handbook here: https://about.gitlab.com/handbook/engineering/ux/ux-research-training/research-insights/#actionable-insights
+
+This issue template is for an actionable insight that requires a change in the product.-->
+
+### Insight
+<!-- Describe the insight itself: often the problem, finding, or observation.-->
+
+### Supporting evidence
+<!-- Describe why the problem is happening, or more details behind the finding or observation. Try to include quotes or specific data collected. Feel free to link the Actionable insight from Dovetail here if applicable instead of retyping details. -->
+
+### Action
+<!--Since this is an actionable insight that requires a change in the product, ensure the action is algned to that. Describe the next step or action that needs to take place as a result of the research. The action should be clearly defined, achievable, and directly tied back to the insight. Make sure to use directive terminology, such as: change, update, add/remove, etc. -->
+
+### Resources
+ <!--Add resources as links below or as related issues. -->
+
+- :dove: [Dovetail project](Paste URL for Dovetail project here)
+- :mag: [Research issue](Paste URL for research issue here)
+- :footprints: [Follow-up issue or epic](Paste URL for follow-up issue or epic here)
+
+### Tasks
+ <!--Fill out these tasks in order to consider an Actionable Insight complete. Actionable Insights are created as confidential by default, but can be made non-confidential if the insight does not include information about competitors from a Competitor Evaluation or any other confidential information. -->
+- [ ] Assign this issue to the appropriate Product Manager, Product Designer, or UX Researcher.
+- [ ] Add the appropriate `Group` (such as `~"group::source code"`) label to the issue. This helps identify and track actionable insights at the group level.
+- [ ] Link this issue back to the original research issue in the GitLab UX Research project and the Dovetail project.
+- [ ] Adjust confidentiality of this issue if applicable
+
+
+
+/confidential
+/label ~"Actionable Insight::Product change"
+/label ~"SUS"
+
diff --git a/.gitlab/issue_templates/Deprecations.md b/.gitlab/issue_templates/Deprecations.md
index 85db4314233..cea010153bb 100644
--- a/.gitlab/issue_templates/Deprecations.md
+++ b/.gitlab/issue_templates/Deprecations.md
@@ -1,3 +1,5 @@
+For guidance on the overall deprecations, removals and breaking changes workflow, please visit https://about.gitlab.com/handbook/product/gitlab-the-product/#breaking-changes-deprecations-and-removing-features
+
<!-- Use this template as a starting point for deprecations. -->
### Deprecation Summary
@@ -37,23 +39,27 @@ Which tier is this feature available in?
- [ ] @mention your stage's stable counterparts on this issue. For example, Customer Support, Customer Success (Technical Account Manager), Product Marketing Manager.
- To see who the stable counterparts are for a product team visit [product categories](https://about.gitlab.com/handbook/product/categories/)
- If there is no stable counterpart listed for Sales/CS please mention `@timtams`
- - If there is no stable counterpart listed for Support please @mention `@gitlab-com/support/managers`
- - If there is no stable counterpart listed for Marketing please mention `@williamchia`
+ - If there is no stable counterpart listed for Support please mention `@gitlab-com/support/managers`
+ - If there is no stable counterpart listed for Marketing please mention `@cfoster3`
-- [ ] @mention your GPM so that they are aware of planned deprecations. The goal is to have reviews happen at least two releases before the final removal of the feature or introduction of a breaking change.
+- [ ] `@mention` your GPM so that they are aware of planned deprecations. The goal is to have reviews happen at least two releases before the final removal of the feature or introduction of a breaking change.
### Deprecation Milestone
<!-- In which milestone will this deprecation be announced ? -->
-### Planned Removal Milestone
+### Planned Removal Milestone
<!-- In which milestone will the feature or functionality be removed and announced? -->
### Links
<!--
-Add links to any relevant documentation or code that will provide additional details or clarity regarding the planned change. Also, include a link to the removal issue if relevant.
+Add links to any relevant documentation or code that will provide additional details or clarity regarding the planned change.
+
+This issue is the main SSOT for the deprecations and removals process. Be sure to link all
+issues and MRs related to this deprecation/removal to this issue. This can include removal
+issues that were created ahead of time, and the MRs doing the actual deprecation/removal work.
-->
<!-- Label reminders - you should have one of each of the following labels.
@@ -71,4 +77,4 @@ Use the following resources to find the appropriate labels:
<!-- Identifies that this Issue is related to deprecating a feature -->
/label ~"type::deprecation"
-<!-- Add the ~"breaking change" label to this issue if necessary --> \ No newline at end of file
+<!-- Add the ~"breaking change" label to this issue if necessary -->
diff --git a/.gitlab/issue_templates/Feature Flag Cleanup.md b/.gitlab/issue_templates/Feature Flag Cleanup.md
new file mode 100644
index 00000000000..eedb35a4b5f
--- /dev/null
+++ b/.gitlab/issue_templates/Feature Flag Cleanup.md
@@ -0,0 +1,52 @@
+<!-- Title suggestion: [Feature flag] Cleanup <feature-flag-name> -->
+
+## Summary
+
+This issue is to cleanup the `<feature-flag-name>` feature flag, after the feature flag has been enabled by default for an appropriate amount of time in production.
+
+<!-- Short description of what the feature is about and link to relevant other issues. -->
+
+## Owners
+
+- Team: NAME_OF_TEAM
+- Most appropriate slack channel to reach out to: `#g_TEAM_NAME`
+- Best individual to reach out to: NAME
+- PM: NAME
+
+## Stakeholders
+
+<!--
+Are there any other stages or teams involved that need to be kept in the loop?
+
+- Name of a PM
+- The Support Team
+- The Delivery Team
+-->
+
+## Expectations
+
+### What might happen if this goes wrong?
+
+<!-- Any MRs that need to be rolled back? Communication that needs to happen? What are some things you can think of that could go wrong - data loss or broken pages? -->
+
+### Cleaning up the feature flag
+
+<!-- The checklist here is to help stakeholders keep track of the feature flag status -->
+- [ ] Create a merge request to remove `<feature-flag-name>` feature flag. Ask for review and merge it.
+ - [ ] Remove all references to the feature flag from the codebase.
+ - [ ] Remove the YAML definitions for the feature from the repository.
+ - [ ] Create [a changelog entry](https://docs.gitlab.com/ee/development/feature_flags/#changelog).
+- [ ] Ensure that the cleanup MR has been deployed to both production and canary.
+ If the merge request was deployed before [the code cutoff](https://about.gitlab.com/handbook/engineering/releases/#self-managed-releases-1),
+ the feature can be officially announced in a release blog post.
+ - [ ] `/chatops run auto_deploy status <merge-commit-of-cleanup-mr>`
+- [ ] Close [the feature issue](ISSUE LINK) to indicate the feature will be released in the current milestone.
+- [ ] Clean up the feature flag from all environments by running these chatops command in `#production` channel:
+ - [ ] `/chatops run feature delete <feature-flag-name> --dev`
+ - [ ] `/chatops run feature delete <feature-flag-name> --staging`
+ - [ ] `/chatops run feature delete <feature-flag-name>`
+- [ ] Close this rollout issue.
+
+
+/label ~"feature flag" ~"type::feature" ~"feature::addition"
+/assign DRI
diff --git a/.gitlab/issue_templates/Feature Flag Roll Out.md b/.gitlab/issue_templates/Feature Flag Roll Out.md
index 86f356daf90..590e627df75 100644
--- a/.gitlab/issue_templates/Feature Flag Roll Out.md
+++ b/.gitlab/issue_templates/Feature Flag Roll Out.md
@@ -121,7 +121,7 @@ To do so, follow these steps:
- [ ] `/chatops run auto_deploy status <merge-commit-of-default-enabling-mr>`
- [ ] Close [the feature issue](ISSUE LINK) to indicate the feature will be released in the current milestone.
- [ ] Set the next milestone to this rollout issue for scheduling [the flag removal](#release-the-feature).
-- [ ] (Optional) You can create a separate issue for scheduling the steps below to [Release the feature](#release-the-feature).
+- [ ] (Optional) You can [create a separate issue](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Feature%20Flag%20Cleanup) for scheduling the steps below to [Release the feature](#release-the-feature).
- [ ] Set the title to "[Feature flag] Cleanup `<feature-flag-name>`".
- [ ] Execute the `/copy_metadata <this-rollout-issue-link>` quick action to copy the labels from this rollout issue.
- [ ] Link this rollout issue as a related issue.
@@ -141,6 +141,8 @@ the [clean up](https://docs.gitlab.com/ee/development/feature_flags/controls.htm
should be done as soon as possible to permanently enable the feature and reduce complexity in the
codebase.
+You can either [create a follow-up issue for Feature Flag Cleanup](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Feature%20Flag%20Cleanup) or use the checklist below in this same issue.
+
<!-- The checklist here is to help stakeholders keep track of the feature flag status -->
- [ ] Create a merge request to remove `<feature-flag-name>` feature flag. Ask for review and merge it.
- [ ] Remove all references to the feature flag from the codebase.
diff --git a/.gitlab/issue_templates/Feature Proposal - lean.md b/.gitlab/issue_templates/Feature Proposal - lean.md
index c826abe7e10..53ad17bbf39 100644
--- a/.gitlab/issue_templates/Feature Proposal - lean.md
+++ b/.gitlab/issue_templates/Feature Proposal - lean.md
@@ -38,7 +38,7 @@ Personas are described at https://about.gitlab.com/handbook/marketing/product-ma
-->
-### Metrics
+### Feature Usage Metrics
<!-- How are you going to track usage of this feature? Think about user behavior and their interaction with the product. What indicates someone is getting value from it?
diff --git a/.gitlab/issue_templates/Feature proposal - detailed.md b/.gitlab/issue_templates/Feature proposal - detailed.md
index f7d0567f806..78faf146fbe 100644
--- a/.gitlab/issue_templates/Feature proposal - detailed.md
+++ b/.gitlab/issue_templates/Feature proposal - detailed.md
@@ -31,14 +31,6 @@ Personas are described at https://about.gitlab.com/handbook/marketing/product-ma
* [Eddie (Content Editor)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#eddie-content-editor)
-->
-### Metrics
-
-<!-- How are you going to track uage of this feature? Think about user behavior and their interaction with the product. What indicates someone is getting value from it?
-
-Create tracking issue using the Snowplow event tracking template. See https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Snowplow%20event%20tracking.md
-
--->
-
### User experience goal
<!-- What is the single user experience workflow this problem addresses?
@@ -63,7 +55,12 @@ Consider adding checkboxes and expectations of users with certain levels of memb
* [ ] Add expected impact to Reporter (20) members
* [ ] Add expected impact to Developer (30) members
* [ ] Add expected impact to Maintainer (40) members
-* [ ] Add expected impact to Owner (50) members -->
+* [ ] Add expected impact to Owner (50) members
+
+Please consider performing a threat model for the code changes that are introduced as part of this feature. To get started, refer to our Threat Modeling handbook page https://about.gitlab.com/handbook/security/threat_modeling/#threat-modeling.
+
+Don't hesitate to reach out to the Application Security Team (`@gitlab-com/gl-security/appsec`) to discuss any security concerns.
+-->
### Documentation
@@ -94,6 +91,14 @@ See the test engineering planning process and reach out to your counterpart Soft
* Ultimate/Gold
-->
+### Feature Usage Metrics
+
+<!-- How are you going to track usage of this feature? Think about user behavior and their interaction with the product. What indicates someone is getting value from it?
+
+Create tracking issue using the Snowplow event tracking template. See https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Snowplow%20event%20tracking.md
+
+-->
+
### What does success look like, and how can we measure that?
<!--
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 256bddcbdab..6d37fc678af 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
@@ -130,25 +130,23 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
FAILED_VERIFICATION_INDEX_NAME = "index_cool_widget_states_failed_verification"
NEEDS_VERIFICATION_INDEX_NAME = "index_cool_widget_states_needs_verification"
- disable_ddl_transaction!
+ enable_lock_retries!
def up
- with_lock_retries do
- create_table :cool_widget_states, id: false do |t|
- t.references :cool_widget, primary_key: true, null: false, foreign_key: { on_delete: :cascade }
- t.integer :verification_state, default: 0, limit: 2, null: false
- t.column :verification_started_at, :datetime_with_timezone
- t.datetime_with_timezone :verification_retry_at
- t.datetime_with_timezone :verified_at
- t.integer :verification_retry_count, limit: 2
- t.binary :verification_checksum, using: 'verification_checksum::bytea'
- t.text :verification_failure, limit: 255
-
- t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME
- t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
- t.index :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME
- t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
- end
+ create_table :cool_widget_states, id: false do |t|
+ t.datetime_with_timezone :verification_started_at
+ t.datetime_with_timezone :verification_retry_at
+ t.datetime_with_timezone :verified_at
+ t.references :cool_widget, primary_key: true, null: false, foreign_key: { on_delete: :cascade }
+ t.integer :verification_state, default: 0, limit: 2, null: false
+ t.integer :verification_retry_count, limit: 2
+ t.binary :verification_checksum, using: 'verification_checksum::bytea'
+ t.text :verification_failure, limit: 255
+
+ t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME
+ t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
+ t.index :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME
+ t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
end
end
@@ -489,7 +487,7 @@ That's all of the required database changes.
module Geo
class CoolWidgetState < ApplicationRecord
include EachBatch
-
+
self.primary_key = :cool_widget_id
belongs_to :cool_widget, inverse_of: :cool_widget_state
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 44b80158e51..35bb28ad170 100644
--- a/.gitlab/issue_templates/Geo Replicate a new blob type.md
+++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md
@@ -132,25 +132,23 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
FAILED_VERIFICATION_INDEX_NAME = "index_cool_widget_states_failed_verification"
NEEDS_VERIFICATION_INDEX_NAME = "index_cool_widget_states_needs_verification"
- disable_ddl_transaction!
+ enable_lock_retries!
def up
- with_lock_retries do
- create_table :cool_widget_states, id: false do |t|
- t.references :cool_widget, primary_key: true, null: false, foreign_key: { on_delete: :cascade }
- t.integer :verification_state, default: 0, limit: 2, null: false
- t.column :verification_started_at, :datetime_with_timezone
- t.datetime_with_timezone :verification_retry_at
- t.datetime_with_timezone :verified_at
- t.integer :verification_retry_count, limit: 2
- t.binary :verification_checksum, using: 'verification_checksum::bytea'
- t.text :verification_failure, limit: 255
-
- t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME
- t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
- t.index :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME
- t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
- end
+ create_table :cool_widget_states, id: false do |t|
+ t.datetime_with_timezone :verification_started_at
+ t.datetime_with_timezone :verification_retry_at
+ t.datetime_with_timezone :verified_at
+ t.references :cool_widget, primary_key: true, null: false, foreign_key: { on_delete: :cascade }
+ t.integer :verification_state, default: 0, limit: 2, null: false
+ t.integer :verification_retry_count, limit: 2
+ t.binary :verification_checksum, using: 'verification_checksum::bytea'
+ t.text :verification_failure, limit: 255
+
+ t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME
+ t.index :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
+ t.index :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME
+ t.index :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
end
end
@@ -453,7 +451,7 @@ That's all of the required database changes.
module Geo
class CoolWidgetState < ApplicationRecord
include EachBatch
-
+
self.primary_key = :cool_widget_id
belongs_to :cool_widget, inverse_of: :cool_widget_state
diff --git a/.gitlab/issue_templates/Pipeline Authoring Issue Implementation.md b/.gitlab/issue_templates/Pipeline Authoring Issue Implementation.md
new file mode 100644
index 00000000000..4544e675256
--- /dev/null
+++ b/.gitlab/issue_templates/Pipeline Authoring Issue Implementation.md
@@ -0,0 +1,38 @@
+<!--
+## Implementation Issue To-Do list
+(_NOTE: This section can be removed when the issue is ready for creation_)
+- [ ] Ensure that issue title is concise yet descriptive
+- [ ] Add `Frontend :` or `Backend: ` per group [naming conventions](https://about.gitlab.com/handbook/engineering/development/ops/verify/pipeline-authoring/#splitting-issues)
+- [ ] Ensure the issue containing the feature or change proposal and related discussions is linked as related to this implementation issue.
+- [ ] Aside from default labeling, please make sure to include relevant labels for `type::`, `workflow::`, and `~frontend`/`~backend` labeling.
+- [ ] Issues with user-facing changes should include the `~UX` label.
+-->
+
+## Summary
+
+## Proposal
+
+## Implementation Table
+
+<!--
+_NOTE: If the issue is not part of an epic, the implementation table can be removed. If it is part of an epic, make sure that the implementation table below mirrors the corresponding epic's implementation table content._
+-->
+
+
+| Group | Issue Link |
+| ------ | ------ |
+| ~backend | :point_left: You are here |
+| ~frontend | [#123123](url) |
+
+<!--
+## Documentation
+
+_NOTE: This section is optional, but can be used for easy access to any relevant documentation URLs._
+-->
+
+## Links/References
+
+
+
+
+/label ~"group::pipeline authoring" ~"Category:Pipeline Authoring" ~"section::ops" ~"devops::verify" ~"workflow::planning breakdown"
diff --git a/.gitlab/issue_templates/Problem Validation.md b/.gitlab/issue_templates/Problem Validation.md
index 3f92510b6af..dee026ee752 100644
--- a/.gitlab/issue_templates/Problem Validation.md
+++ b/.gitlab/issue_templates/Problem Validation.md
@@ -1,4 +1,4 @@
-<!-- This template is used as a starting point for understing and articulating a customer problem.
+<!-- This template is used as a starting point for understanding and articulating a customer problem.
Learn more about it in the handbook: https://about.gitlab.com/handbook/product-development-flow/#validation-phase-2-problem-validation
-->
diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md
index e63727fe484..5c1b669a88f 100644
--- a/.gitlab/issue_templates/Security developer workflow.md
+++ b/.gitlab/issue_templates/Security developer workflow.md
@@ -9,14 +9,13 @@ Set the title to: `Description of the original issue`
## Prior to starting the security release work
- [ ] Read the [security process for developers] if you are not familiar with it.
-- [ ] Make sure the issue really needs to follow the security release workflow.
- - Verify if the issue you're working on `gitlab-org/gitlab` is confidential, if it's public fix should be placed on GitLab canonical and no backports are required.
- - If the issue you're fixing doesn't appear to be something that can be exploited by a malicious person and is instead simply a security enhancement do not hesitate to ping `@gitlab-com/gl-security/appsec` to discuss if the issue can be fixed in the canonical repository.
+- [ ] Make sure the [issue really needs to follow the security release workflow].
- [ ] **IMPORTANT**: Mark this [issue as linked] to the Security Release Tracking Issue. You can find it [here](https://gitlab.com/gitlab-org/gitlab/-/issues?sort=created_date&state=opened&label_name[]=upcoming+security+release). This issue
MUST be linked for the release bot to know that the associated merge requests should be merged for this security release.
- Fill out the [Links section](#links):
- [ ] Next to **Issue on GitLab**, add a link to the `gitlab-org/gitlab` issue that describes the security vulnerability.
- [ ] Add one of the `~severity::x` labels to the issue and all associated merge requests.
+- [ ] If this change affects the public interface (public API or UI) of the product, post in the `#support_gitlab-com` Slack channel to explain the impact and discuss a mitigation plan for users that might be affected. If you need Support feedback or approval, reach out in `#spt_managers` Slack channel or mention `@gitlab-com/support/managers`.
## Development
@@ -71,5 +70,6 @@ After your merge request has been approved according to our [approval guidelines
[security Release merge request template]: https://gitlab.com/gitlab-org/security/gitlab/blob/master/.gitlab/merge_request_templates/Security%20Release.md
[approval guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines
[issue as linked]: https://docs.gitlab.com/ee/user/project/issues/related_issues.html#add-a-linked-issue
+[issue really needs to follow the security release workflow]: https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/security/developer.md#making-sure-the-issue-needs-to-follow-the-security-release-workflow
/label ~security
diff --git a/.gitlab/merge_request_templates/Deprecations.md b/.gitlab/merge_request_templates/Deprecations.md
index e0b4f127e4a..fc803152efb 100644
--- a/.gitlab/merge_request_templates/Deprecations.md
+++ b/.gitlab/merge_request_templates/Deprecations.md
@@ -1,12 +1,18 @@
<!-- Set the correct label and milestone using autocomplete for guidance. Please @mention only the DRI(s) for each stage or group rather than an entire department. -->
-/label ~"release post" ~"release post item" ~"Technical Writing" ~"devops::" ~"group::" ~"release post item::deprecation"
+/label ~"release post" ~"release post item" ~"Technical Writing" ~devops:: ~group:: ~"release post item::deprecation"
+/label ~"type::maintenance"
/milestone %
/assign `@EM/PM` (choose the DRI; remove backticks here, and below)
**Be sure to link this MR to the relevant deprecation issue(s).**
-If the MR does not have a deprecation issue, hit pause and review [this handbook documentation](https://about.gitlab.com/handbook/product/gitlab-the-product/#process-for-deprecating-and-removing-a-feature) and connect with the Product Manager DRI.
+- Deprecation Issue:
+
+If there is no relevant deprecation issue, hit pause and:
+
+- Review the [process for deprecating and removing features](https://about.gitlab.com/handbook/product/gitlab-the-product/#process-for-deprecating-and-removing-a-feature).
+- Connect with the Product Manager DRI.
Deprecation announcements can and should be created and merged into Docs at any time, to optimize user awareness and planning. We encourage confirmed deprecations to be merged as soon as the required reviews are complete, even if weeks ahead of the target milestone's release post. For the announcement to be included in a specific release post and that release's documentation packages, this MR must be reviewed/merged per the due dates below:
@@ -28,18 +34,13 @@ Please review the [guidelines for deprecations](https://about.gitlab.com/handboo
as well as the process for [creating a deprecation entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry).
They are frequently updated, and everyone should make sure they are aware of the current standards (PM, PMM, EM, and TW).
-## Links
-
-- Deprecation Issue:
-- Deprecation MR (optional):
-
## EM/PM release post item checklist
- [ ] Set yourself as the Assignee, meaning you are the DRI.
- [ ] If the deprecation is a [breaking change](https://about.gitlab.com/handbook/product/gitlab-the-product/#breaking-change), add label `breaking change`.
- [ ] Follow the process to [create a deprecation YAML file](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-a-deprecation-entry).
- [ ] Add reviewers by the 10th.
-- [ ] When ready to be merged and not later than the 15th, add the ~ready label and @ message the TW for final review and merge.
+- [ ] When ready to be merged and not later than the 15th, add the `~ready` label and @ message the TW for final review and merge.
## Reviewers
@@ -68,7 +69,7 @@ yourself as a reviewer if it's not ready for merge yet.
- [ ] Title:
- Length limit: 7 words (not including articles or prepositions).
- Capitalization: ensure the title is [sentence cased](https://design.gitlab.com/content/punctuation#case).
- - No Markdown `` `code` `` formatting in the title, as it doesn't render correctly in the release post.
+ - Rewrite to exclude the words `deprecation`, `deprecate`, `removal`, and `remove` if necessary.
- [ ] Consistency:
- Ensure that all resources (docs, deprecation, etc.) refer to the feature with the same term / feature name.
- [ ] Content:
@@ -98,4 +99,4 @@ must be updated before this MR is merged:
1. Commit the updated file and push the changes.
1. Set the MR to merge when the pipeline succeeds (or merge if the pipeline is already complete).
-If you have trouble running the rake task, check the [troubleshooting steps](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecation-rake-task-troubleshooting).
+If you have trouble running the Rake task, check the [troubleshooting steps](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecation-rake-task-troubleshooting).
diff --git a/.gitlab/merge_request_templates/Removals.md b/.gitlab/merge_request_templates/Removals.md
index 398714826b9..9d3738f63b5 100644
--- a/.gitlab/merge_request_templates/Removals.md
+++ b/.gitlab/merge_request_templates/Removals.md
@@ -1,13 +1,24 @@
<!-- Set the correct label and milestone using autocomplete for guidance. Please @mention only the DRI(s) for each stage or group rather than an entire department. -->
-**Be sure to link this MR to the relevant deprecation issue(s).**
+/label ~"release post" ~"release post item" ~"Technical Writing" ~devops:: ~group:: ~"release post item::removal"
+/label ~"type::maintenance"
+/milestone %
+/assign `@EM/PM` (choose the DRI; remove backticks here, and below)
+
+**Be sure to link this MR to the relevant issue(s).**
+
+- Deprecation issue:
+- Removal issue:
+- MR that removes the feature (optional):
+
+If there is no relevant deprecation issue, hit pause and:
-If the MR does not have a deprecation issue, hit pause and:
+- Review the [process for deprecating and removing features](https://about.gitlab.com/handbook/product/gitlab-the-product/#process-for-deprecating-and-removing-a-feature).
+- Connect with the Product Manager DRI.
-- Review [this handbook documentation](https://about.gitlab.com/handbook/product/gitlab-the-product/#process-for-deprecating-and-removing-a-feature).
-- Connect with the Product Manager DRI.
+Removals must be [announced as deprecations](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations) at least 2 milestones in advance of the planned removal date.
-Removals must be [announced as Deprecations](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations) at least 2 milestones in advance of the planned removal date. Removals can only be removed in a XX.0 major release if it creates a [breaking change](https://about.gitlab.com/handbook/product/gitlab-the-product/#breaking-changes-deprecations-and-removing-features).
+If the removal creates a [breaking change](https://about.gitlab.com/handbook/product/gitlab-the-product/#breaking-changes-deprecations-and-removing-features), it can only be removed in a major "XX.0" release.
**By the 10th**: Assign this MR to these team members as reviewers, and for approval:
@@ -27,11 +38,6 @@ Removals must be [announced as Deprecations](https://about.gitlab.com/handbook/m
Please review the [guidelines for removals](https://about.gitlab.com/handbook/marketing/blog/release-posts/#removals).
-## Links
-
-- Removal Issue:
-- Removal MR (optional):
-
## EM/PM release post item checklist
- [ ] Set yourself as the Assignee, meaning you are the DRI.
@@ -97,7 +103,3 @@ must be updated before this MR is merged:
1. Set the MR to merge when the pipeline succeeds (or merge if the pipeline is already complete).
If you have trouble running the rake task, check the [troubleshooting steps](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecation-rake-task-troubleshooting).
-
-/label ~"release post" ~"release post item" ~"Technical Writing" ~devops:: ~group:: ~"release post item::removal"
-/milestone %
-/assign `@EM/PM` (choose the DRI; remove backticks here, and below)