diff options
Diffstat (limited to '.gitlab')
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) |