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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab/ci/rails/shared.gitlab-ci.yml2
-rw-r--r--app/assets/javascripts/projects/settings/api/access_dropdown_api.js2
-rw-r--r--app/models/commit_status.rb17
-rw-r--r--app/models/users/callout.rb3
-rw-r--r--app/services/projects/create_service.rb2
-rw-r--r--app/services/projects/update_service.rb8
-rw-r--r--config/feature_flags/development/ci_partitioning_use_ci_builds_routing_table.yml8
-rw-r--r--config/feature_flags/development/limited_access_modal.yml2
-rw-r--r--config/metrics/counts_28d/20210216175004_g_analytics_merge_request_monthly.yml4
-rw-r--r--config/metrics/counts_28d/20210216175055_merge_requests.yml1
-rw-r--r--config/metrics/counts_28d/20210216175109_suggestions.yml1
-rw-r--r--config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml1
-rw-r--r--config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml1
-rw-r--r--config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml1
-rw-r--r--config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml1
-rw-r--r--config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml2
-rw-r--r--config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml2
-rw-r--r--config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml2
-rw-r--r--config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml1
-rw-r--r--config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml1
-rw-r--r--config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml1
-rw-r--r--config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml1
-rw-r--r--config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml1
-rw-r--r--config/metrics/counts_28d/20210216183640_gitlab.yml2
-rw-r--r--config/metrics/counts_28d/20210216183646_gitlab.yml1
-rw-r--r--config/metrics/counts_28d/20210216183712_total.yml2
-rw-r--r--config/metrics/counts_28d/20210216183714_gitlab_project.yml2
-rw-r--r--config/metrics/counts_28d/20210216183716_gitlab.yml2
-rw-r--r--config/metrics/counts_28d/20210216183718_github.yml2
-rw-r--r--config/metrics/counts_28d/20210216183720_bitbucket.yml2
-rw-r--r--config/metrics/counts_28d/20210216183722_bitbucket_server.yml2
-rw-r--r--config/metrics/counts_28d/20210216183724_gitea.yml2
-rw-r--r--config/metrics/counts_28d/20210216183726_git.yml2
-rw-r--r--config/metrics/counts_28d/20210216183728_manifest.yml2
-rw-r--r--config/metrics/counts_28d/20210216183730_jira.yml2
-rw-r--r--config/metrics/counts_28d/20210216183731_fogbugz.yml2
-rw-r--r--config/metrics/counts_28d/20210216183733_phabricator.yml2
-rw-r--r--config/metrics/counts_28d/20210216183735_csv.yml2
-rw-r--r--config/metrics/counts_28d/20210216183737_groups_imported.yml2
-rw-r--r--config/metrics/counts_28d/20210216184140_testing_total_unique_counts_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml3
-rw-r--r--config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml1
-rwxr-xr-xconfig/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184814_i_package_container_deploy_token_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184818_i_package_debian_deploy_token_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184826_i_package_golang_deploy_token_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184846_i_package_tag_deploy_token_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184902_i_package_container_user_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184906_i_package_debian_user_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184913_i_package_golang_user_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210216184933_i_package_tag_user_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210902000813_p_ci_templates_implicit_auto_devops_deploy_latest_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml1
-rw-r--r--config/metrics/counts_7d/20210216174902_g_analytics_merge_request.yml2
-rw-r--r--config/metrics/counts_7d/20210216183213_product_analytics_test_metrics_union.yml1
-rw-r--r--config/metrics/counts_7d/20210216183215_product_analytics_test_metrics_intersection.yml1
-rw-r--r--config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184500_p_ci_templates_implicit_auto_devops_build_weekly.yml1
-rw-r--r--config/metrics/counts_7d/20210216184504_p_ci_templates_implicit_auto_devops_deploy_weekly.yml1
-rw-r--r--config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml3
-rw-r--r--config/metrics/counts_7d/20210216184524_p_ci_templates_aws_cf_deploy_ec2_weekly.yml1
-rw-r--r--config/metrics/counts_7d/20210216184536_p_ci_templates_auto_devops_deploy_weekly.yml1
-rw-r--r--config/metrics/counts_7d/20210216184540_p_ci_templates_auto_devops_deploy_latest_weekly.yml1
-rwxr-xr-xconfig/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml1
-rw-r--r--config/metrics/counts_7d/20210216184805_i_package_composer_deploy_token_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184812_i_package_container_deploy_token_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184816_i_package_debian_deploy_token_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184824_i_package_golang_deploy_token_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184844_i_package_tag_deploy_token_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184900_i_package_container_user_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184904_i_package_debian_user_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184911_i_package_golang_user_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210216184931_i_package_tag_user_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210902000809_p_ci_templates_implicit_auto_devops_deploy_latest_weekly.yml1
-rw-r--r--config/metrics/counts_7d/20210916102312_templates_gitlab_slack_application_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175019_projects_with_prometheus_alerts.yml1
-rw-r--r--config/metrics/counts_all/20210216175021_pod_logs_usages_total.yml1
-rw-r--r--config/metrics/counts_all/20210216175045_merge_requests.yml1
-rw-r--r--config/metrics/counts_all/20210216175053_suggestions.yml1
-rw-r--r--config/metrics/counts_all/20210216175255_clusters_applications_helm.yml1
-rw-r--r--config/metrics/counts_all/20210216175257_clusters_applications_ingress.yml1
-rw-r--r--config/metrics/counts_all/20210216175259_clusters_applications_cert_managers.yml1
-rw-r--r--config/metrics/counts_all/20210216175301_clusters_applications_crossplane.yml1
-rw-r--r--config/metrics/counts_all/20210216175303_clusters_applications_prometheus.yml1
-rw-r--r--config/metrics/counts_all/20210216175305_clusters_applications_runner.yml1
-rw-r--r--config/metrics/counts_all/20210216175307_clusters_applications_knative.yml1
-rw-r--r--config/metrics/counts_all/20210216175309_clusters_applications_elastic_stack.yml1
-rw-r--r--config/metrics/counts_all/20210216175310_clusters_applications_jupyter.yml1
-rw-r--r--config/metrics/counts_all/20210216175312_clusters_applications_cilium.yml1
-rw-r--r--config/metrics/counts_all/20210216175329_clusters_applications_cert_managers.yml1
-rw-r--r--config/metrics/counts_all/20210216175331_clusters_applications_helm.yml1
-rw-r--r--config/metrics/counts_all/20210216175333_clusters_applications_ingress.yml1
-rw-r--r--config/metrics/counts_all/20210216175335_clusters_applications_knative.yml1
-rw-r--r--config/metrics/counts_all/20210216175403_projects_with_prometheus_alerts.yml1
-rw-r--r--config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml3
-rw-r--r--config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml3
-rw-r--r--config/metrics/counts_all/20210216175446_network_policy_forwards.yml2
-rw-r--r--config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml3
-rw-r--r--config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml3
-rw-r--r--config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml3
-rw-r--r--config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml3
-rw-r--r--config/metrics/counts_all/20210216175627_templates_asana_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175638_templates_assembla_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175649_templates_bamboo_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175701_templates_bugzilla_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175712_templates_buildkite_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175723_templates_campfire_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175734_templates_confluence_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175745_templates_custom_issue_tracker_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175756_templates_discord_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175807_templates_drone_ci_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175818_templates_emails_on_push_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175829_templates_external_wiki_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175840_templates_flowdock_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175902_templates_hangouts_chat_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175910_projects_hipchat_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175912_groups_hipchat_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175913_templates_hipchat_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175915_instances_hipchat_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175917_projects_inheriting_hipchat_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175919_groups_inheriting_hipchat_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175924_templates_irker_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175935_templates_jenkins_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175946_templates_jira_active.yml1
-rw-r--r--config/metrics/counts_all/20210216175957_templates_mattermost_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180008_templates_mattermost_slash_commands_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180019_templates_microsoft_teams_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180030_templates_packagist_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180041_templates_pipelines_email_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180052_templates_pivotaltracker_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180104_templates_pushover_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180115_templates_redmine_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180126_templates_slack_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180137_templates_slack_slash_commands_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180148_templates_teamcity_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180159_templates_unify_circuit_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180210_templates_webex_teams_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180221_templates_youtrack_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180451_incident_labeled_issues.yml1
-rw-r--r--config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml1
-rw-r--r--config/metrics/counts_all/20210216180634_gitlab.yml2
-rw-r--r--config/metrics/counts_all/20210216180639_gitlab.yml1
-rw-r--r--config/metrics/counts_all/20210216180705_total.yml2
-rw-r--r--config/metrics/counts_all/20210216180707_gitlab_project.yml2
-rw-r--r--config/metrics/counts_all/20210216180709_gitlab.yml2
-rw-r--r--config/metrics/counts_all/20210216180711_github.yml2
-rw-r--r--config/metrics/counts_all/20210216180713_bitbucket.yml2
-rw-r--r--config/metrics/counts_all/20210216180715_bitbucket_server.yml2
-rw-r--r--config/metrics/counts_all/20210216180716_gitea.yml2
-rw-r--r--config/metrics/counts_all/20210216180718_git.yml2
-rw-r--r--config/metrics/counts_all/20210216180720_manifest.yml2
-rw-r--r--config/metrics/counts_all/20210216180722_jira.yml2
-rw-r--r--config/metrics/counts_all/20210216180724_fogbugz.yml2
-rw-r--r--config/metrics/counts_all/20210216180726_phabricator.yml2
-rw-r--r--config/metrics/counts_all/20210216180727_csv.yml2
-rw-r--r--config/metrics/counts_all/20210216180729_groups_imported.yml2
-rw-r--r--config/metrics/counts_all/20210216180934_templates_prometheus_active.yml1
-rw-r--r--config/metrics/counts_all/20210216180947_clusters_applications_prometheus.yml1
-rw-r--r--config/metrics/counts_all/20210216181949_clusters_applications_runner.yml1
-rw-r--r--config/metrics/counts_all/20210216182551_templates_datadog_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182618_templates_ewm_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182722_projects_mock_ci_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182724_groups_mock_ci_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182726_templates_mock_ci_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182728_instances_mock_ci_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182730_projects_inheriting_mock_ci_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182732_groups_inheriting_mock_ci_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182734_projects_mock_monitoring_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182736_groups_mock_monitoring_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182738_templates_mock_monitoring_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182739_instances_mock_monitoring_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182741_projects_inheriting_mock_monitoring_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182743_groups_inheriting_mock_monitoring_active.yml1
-rw-r--r--config/metrics/counts_all/20210216182907_package_events_i_package_container_delete_package.yml1
-rw-r--r--config/metrics/counts_all/20210216182909_package_events_i_package_container_pull_package.yml1
-rw-r--r--config/metrics/counts_all/20210216182911_package_events_i_package_container_push_package.yml1
-rw-r--r--config/metrics/counts_all/20210216182917_package_events_i_package_debian_push_package.yml1
-rw-r--r--config/metrics/counts_all/20210216183017_package_events_i_package_tag_delete_package.yml2
-rw-r--r--config/metrics/counts_all/20210216183019_package_events_i_package_tag_pull_package.yml2
-rw-r--r--config/metrics/counts_all/20210216183021_package_events_i_package_tag_push_package.yml2
-rw-r--r--config/metrics/license/20230228110448_installation_creation_date.yml1
-rw-r--r--config/metrics/schema.json20
-rw-r--r--config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml3
-rw-r--r--db/docs/p_ci_builds.yml5
-rw-r--r--doc/api/graphql/reference/index.md1
-rw-r--r--doc/architecture/blueprints/transfer_data/index.md141
-rw-r--r--doc/architecture/blueprints/transfer_data/repository.md67
-rw-r--r--doc/ci/runners/new_creation_workflow.md30
-rw-r--r--doc/development/ai_features/index.md5
-rw-r--r--doc/development/cloud_connector/code_suggestions_for_sm.md259
-rw-r--r--doc/development/cloud_connector/img/code_suggestions_components.pngbin0 -> 44296 bytes
-rw-r--r--doc/development/fe_guide/customizable_dashboards.md8
-rw-r--r--doc/development/internal_analytics/service_ping/metrics_dictionary.md4
-rw-r--r--doc/user/application_security/vulnerabilities/index.md8
-rw-r--r--doc/user/project/repository/code_suggestions/index.md2
-rw-r--r--doc/user/project/repository/code_suggestions/saas.md4
-rw-r--r--doc/user/project/repository/code_suggestions/self_managed.md4
-rw-r--r--doc/user/project/repository/code_suggestions/troubleshooting.md2
-rw-r--r--lib/api/helpers.rb4
-rw-r--r--lib/gitlab/pages.rb15
-rw-r--r--lib/gitlab/prometheus/queries/matched_metric_query.rb82
-rw-r--r--lib/gitlab/prometheus/queries/validate_query.rb21
-rw-r--r--lib/gitlab/usage/metric_definition.rb3
-rw-r--r--locale/gitlab.pot18
-rw-r--r--spec/db/schema_spec.rb6
-rw-r--r--spec/lib/api/helpers_spec.rb10
-rw-r--r--spec/lib/gitlab/pages_spec.rb47
-rw-r--r--spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb137
-rw-r--r--spec/lib/gitlab/prometheus/queries/validate_query_spec.rb59
-rw-r--r--spec/lib/gitlab/usage/metric_definition_spec.rb22
-rw-r--r--spec/models/ci/build_spec.rb22
-rw-r--r--spec/models/commit_status_spec.rb40
-rw-r--r--spec/models/concerns/prometheus_adapter_spec.rb42
-rw-r--r--spec/services/projects/create_service_spec.rb13
-rw-r--r--spec/services/projects/update_service_spec.rb74
-rw-r--r--spec/spec_helper.rb1
222 files changed, 903 insertions, 576 deletions
diff --git a/.gitlab/ci/rails/shared.gitlab-ci.yml b/.gitlab/ci/rails/shared.gitlab-ci.yml
index a7a8315ae14..6803bdd3386 100644
--- a/.gitlab/ci/rails/shared.gitlab-ci.yml
+++ b/.gitlab/ci/rails/shared.gitlab-ci.yml
@@ -89,7 +89,7 @@ include:
bundle exec slow-test-issues --input-files "rspec/rspec-*.json" --project "gitlab-org/gitlab" --token "${TEST_FAILURES_PROJECT_TOKEN}";
fi
if [ "$ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST" == "true" ]; then
- bundle exec slow-test-merge-request-report-note --input-files "rspec/rspec-*.json" --project "gitlab-org/gitlab" --merge_request_iid "$CI_MERGE_REQUEST_IID" --token "${TEST_FAILURES_PROJECT_TOKEN}";
+ bundle exec slow-test-merge-request-report-note --input-files "rspec/rspec-*.json" --project "gitlab-org/gitlab" --merge_request_iid "$CI_MERGE_REQUEST_IID" --token "${TEST_SLOW_NOTE_PROJECT_TOKEN}";
fi
- echo -e "\e[0Ksection_end:`date +%s`:report_results_section\r\e[0K"
diff --git a/app/assets/javascripts/projects/settings/api/access_dropdown_api.js b/app/assets/javascripts/projects/settings/api/access_dropdown_api.js
index 46b5f252644..b886bf43b57 100644
--- a/app/assets/javascripts/projects/settings/api/access_dropdown_api.js
+++ b/app/assets/javascripts/projects/settings/api/access_dropdown_api.js
@@ -31,7 +31,7 @@ export const getGroups = () => {
if (gon.current_project_id) {
return Api.projectGroups(gon.current_project_id, {
with_shared: true,
- min_access_level: ACCESS_LEVEL_DEVELOPER_INTEGER,
+ shared_min_access_level: ACCESS_LEVEL_DEVELOPER_INTEGER,
});
}
return axios.get(buildUrl(gon.relative_url_root || '', GROUPS_PATH)).then(({ data }) => {
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index c2425e9460a..3761aa81bf7 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -9,16 +9,19 @@ class CommitStatus < Ci::ApplicationRecord
include BulkInsertableAssociations
include TaggableQueries
- ROUTING_FEATURE_FLAG = :ci_partitioning_use_ci_builds_routing_table
+ def self.switch_table_names
+ if Gitlab::Utils.to_boolean(ENV['USE_CI_BUILDS_ROUTING_TABLE'])
+ :p_ci_builds
+ else
+ :ci_builds
+ end
+ end
- self.table_name = 'ci_builds'
- self.sequence_name = 'ci_builds_id_seq'
+ self.table_name = self.switch_table_names
+ self.sequence_name = :ci_builds_id_seq
self.primary_key = :id
- partitionable scope: :pipeline, through: {
- table: :p_ci_builds,
- flag: ROUTING_FEATURE_FLAG
- }
+ partitionable scope: :pipeline
belongs_to :user
belongs_to :project
diff --git a/app/models/users/callout.rb b/app/models/users/callout.rb
index c19fb87f4f5..def0765560e 100644
--- a/app/models/users/callout.rb
+++ b/app/models/users/callout.rb
@@ -74,7 +74,8 @@ module Users
# 72 removed in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129022
namespace_over_storage_users_combined_alert: 73, # EE-only
rich_text_editor: 74,
- vsd_feedback_banner: 75 # EE-only
+ vsd_feedback_banner: 75, # EE-only
+ security_policy_protected_branch_modification: 76 # EE-only
}
validates :feature_name,
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 4ffebf21577..e4987438c57 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -144,6 +144,8 @@ module Projects
end
def create_project_settings
+ Gitlab::Pages.add_unique_domain_to(project)
+
@project.project_setting.save if @project.project_setting.changed?
end
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb
index a6a2fa87e59..e5e39247dbf 100644
--- a/app/services/projects/update_service.rb
+++ b/app/services/projects/update_service.rb
@@ -53,13 +53,7 @@ module Projects
def add_pages_unique_domain
return unless params.dig(:project_setting_attributes, :pages_unique_domain_enabled)
- # If the project used a unique domain once, it'll always use the same
- return if project.project_setting.pages_unique_domain_in_database.present?
-
- params[:project_setting_attributes][:pages_unique_domain] = Gitlab::Pages::RandomDomain.generate(
- project_path: project.path,
- namespace_path: project.parent.full_path
- )
+ Gitlab::Pages.add_unique_domain_to(project)
end
def validate!
diff --git a/config/feature_flags/development/ci_partitioning_use_ci_builds_routing_table.yml b/config/feature_flags/development/ci_partitioning_use_ci_builds_routing_table.yml
deleted file mode 100644
index 97bacb21e38..00000000000
--- a/config/feature_flags/development/ci_partitioning_use_ci_builds_routing_table.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: ci_partitioning_use_ci_builds_routing_table
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122919
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/421180
-milestone: '16.3'
-type: development
-group: group::pipeline execution
-default_enabled: false
diff --git a/config/feature_flags/development/limited_access_modal.yml b/config/feature_flags/development/limited_access_modal.yml
index b567b9ce0d4..c9800da0d6c 100644
--- a/config/feature_flags/development/limited_access_modal.yml
+++ b/config/feature_flags/development/limited_access_modal.yml
@@ -1,7 +1,7 @@
---
name: limited_access_modal
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129790
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/424877
milestone: '16.4'
type: development
group: group::billing and subscription management
diff --git a/config/metrics/counts_28d/20210216175004_g_analytics_merge_request_monthly.yml b/config/metrics/counts_28d/20210216175004_g_analytics_merge_request_monthly.yml
index f2716c0632c..ef3d62b42af 100644
--- a/config/metrics/counts_28d/20210216175004_g_analytics_merge_request_monthly.yml
+++ b/config/metrics/counts_28d/20210216175004_g_analytics_merge_request_monthly.yml
@@ -1,7 +1,7 @@
---
data_category: optional
key_path: redis_hll_counters.analytics.g_analytics_merge_request_monthly
-description:
+description: Removed metric without a description
product_section: dev
product_stage: manage
product_group: optimize
@@ -22,3 +22,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216175055_merge_requests.yml b/config/metrics/counts_28d/20210216175055_merge_requests.yml
index c71c83d7064..9e3f64553f6 100644
--- a/config/metrics/counts_28d/20210216175055_merge_requests.yml
+++ b/config/metrics/counts_28d/20210216175055_merge_requests.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216175109_suggestions.yml b/config/metrics/counts_28d/20210216175109_suggestions.yml
index d7e649ad7f8..e336c1def68 100644
--- a/config/metrics/counts_28d/20210216175109_suggestions.yml
+++ b/config/metrics/counts_28d/20210216175109_suggestions.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: '14.7'
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml b/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml
index 34cb10f08d0..6647ed6e3b8 100644
--- a/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml
+++ b/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml b/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml
index 44b46f9c013..249e7d85bad 100644
--- a/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml
+++ b/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml b/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml
index abf90e57eec..7a95f6e5ac7 100644
--- a/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml
+++ b/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml b/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml
index 885f9903247..12c8dde9cff 100644
--- a/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml
+++ b/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml b/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml
index 0e8e4741016..bcb6ce623f9 100644
--- a/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml
+++ b/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml
@@ -8,7 +8,7 @@ product_group: ide
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111351
-milestone_removed: 15.9
+milestone_removed: "15.9"
time_frame: 28d
data_source: redis_hll
distribution:
diff --git a/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml b/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml
index 8ee0f7e9fc3..7794edd8b22 100644
--- a/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml
+++ b/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml
@@ -8,7 +8,7 @@ product_group: source_code
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113551
-milestone_removed: 15.10
+milestone_removed: "15.10"
time_frame: 28d
data_source: redis_hll
distribution:
diff --git a/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml b/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml
index 52a16056ce1..0df0d7b8aef 100644
--- a/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml
+++ b/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml
@@ -8,7 +8,7 @@ product_group: source_code
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113551
-milestone_removed: 15.10
+milestone_removed: "15.10"
time_frame: 28d
data_source: redis_hll
distribution:
diff --git a/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml b/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml
index 9faf6cf6a84..3940428db10 100644
--- a/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml
+++ b/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml b/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml
index 69939472df6..19c12861873 100644
--- a/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml
+++ b/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml
@@ -19,3 +19,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml b/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml
index 2509db0052d..1c26a58c152 100644
--- a/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml
+++ b/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml
@@ -20,3 +20,4 @@ performance_indicator_type: []
milestone: "12.9"
introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26441"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml b/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml
index c9c8673285a..d82ee32ee24 100644
--- a/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml
+++ b/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml
@@ -19,3 +19,4 @@ tier:
- free
- premium
- ultimate
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml b/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml
index 5072ab05abe..4554ece2cec 100644
--- a/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml
+++ b/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml
@@ -19,3 +19,4 @@ tier:
- free
- premium
- ultimate
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216183640_gitlab.yml b/config/metrics/counts_28d/20210216183640_gitlab.yml
index 491e71844fd..137543ac9cb 100644
--- a/config/metrics/counts_28d/20210216183640_gitlab.yml
+++ b/config/metrics/counts_28d/20210216183640_gitlab.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183646_gitlab.yml b/config/metrics/counts_28d/20210216183646_gitlab.yml
index 0aa35644f9b..afc6a099bb3 100644
--- a/config/metrics/counts_28d/20210216183646_gitlab.yml
+++ b/config/metrics/counts_28d/20210216183646_gitlab.yml
@@ -22,3 +22,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216183712_total.yml b/config/metrics/counts_28d/20210216183712_total.yml
index c9b916cf2bd..6c610c91e95 100644
--- a/config/metrics/counts_28d/20210216183712_total.yml
+++ b/config/metrics/counts_28d/20210216183712_total.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183714_gitlab_project.yml b/config/metrics/counts_28d/20210216183714_gitlab_project.yml
index 3b9642da6ac..117101fdd85 100644
--- a/config/metrics/counts_28d/20210216183714_gitlab_project.yml
+++ b/config/metrics/counts_28d/20210216183714_gitlab_project.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183716_gitlab.yml b/config/metrics/counts_28d/20210216183716_gitlab.yml
index 0ac957a8b4b..5125e4734cb 100644
--- a/config/metrics/counts_28d/20210216183716_gitlab.yml
+++ b/config/metrics/counts_28d/20210216183716_gitlab.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183718_github.yml b/config/metrics/counts_28d/20210216183718_github.yml
index ad199ad3e30..6e41dcefa1f 100644
--- a/config/metrics/counts_28d/20210216183718_github.yml
+++ b/config/metrics/counts_28d/20210216183718_github.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183720_bitbucket.yml b/config/metrics/counts_28d/20210216183720_bitbucket.yml
index 04de804a4ac..25459551626 100644
--- a/config/metrics/counts_28d/20210216183720_bitbucket.yml
+++ b/config/metrics/counts_28d/20210216183720_bitbucket.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183722_bitbucket_server.yml b/config/metrics/counts_28d/20210216183722_bitbucket_server.yml
index 96aa85bd03d..43cdf486432 100644
--- a/config/metrics/counts_28d/20210216183722_bitbucket_server.yml
+++ b/config/metrics/counts_28d/20210216183722_bitbucket_server.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183724_gitea.yml b/config/metrics/counts_28d/20210216183724_gitea.yml
index ef967c52699..65687e9c77a 100644
--- a/config/metrics/counts_28d/20210216183724_gitea.yml
+++ b/config/metrics/counts_28d/20210216183724_gitea.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183726_git.yml b/config/metrics/counts_28d/20210216183726_git.yml
index 779485a9e3c..7083bd8d948 100644
--- a/config/metrics/counts_28d/20210216183726_git.yml
+++ b/config/metrics/counts_28d/20210216183726_git.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183728_manifest.yml b/config/metrics/counts_28d/20210216183728_manifest.yml
index 822ea1f9bfa..1595ca00598 100644
--- a/config/metrics/counts_28d/20210216183728_manifest.yml
+++ b/config/metrics/counts_28d/20210216183728_manifest.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183730_jira.yml b/config/metrics/counts_28d/20210216183730_jira.yml
index 2d54f765858..37c9b9a7b66 100644
--- a/config/metrics/counts_28d/20210216183730_jira.yml
+++ b/config/metrics/counts_28d/20210216183730_jira.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183731_fogbugz.yml b/config/metrics/counts_28d/20210216183731_fogbugz.yml
index 83c8e3771c0..b7321cdb765 100644
--- a/config/metrics/counts_28d/20210216183731_fogbugz.yml
+++ b/config/metrics/counts_28d/20210216183731_fogbugz.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183733_phabricator.yml b/config/metrics/counts_28d/20210216183733_phabricator.yml
index 8108a98f4fd..61bd88b547f 100644
--- a/config/metrics/counts_28d/20210216183733_phabricator.yml
+++ b/config/metrics/counts_28d/20210216183733_phabricator.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183735_csv.yml b/config/metrics/counts_28d/20210216183735_csv.yml
index a309a3d1f2d..52288129b53 100644
--- a/config/metrics/counts_28d/20210216183735_csv.yml
+++ b/config/metrics/counts_28d/20210216183735_csv.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216183737_groups_imported.yml b/config/metrics/counts_28d/20210216183737_groups_imported.yml
index 79e39cb214e..d9b572c7d45 100644
--- a/config/metrics/counts_28d/20210216183737_groups_imported.yml
+++ b/config/metrics/counts_28d/20210216183737_groups_imported.yml
@@ -18,3 +18,5 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184140_testing_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184140_testing_total_unique_counts_monthly.yml
index af835f558d1..21527d0cf3b 100644
--- a/config/metrics/counts_28d/20210216184140_testing_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184140_testing_total_unique_counts_monthly.yml
@@ -25,3 +25,5 @@ tier:
- free
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
index 8ad0494e775..77b94b5ae13 100644
--- a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
@@ -8,7 +8,7 @@ product_section: 'TBD'
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113422
-milestone_removed: 15.10
+milestone_removed: "15.10"
time_frame: 28d
data_source: redis_hll
instrumentation_class: AggregatedMetric
diff --git a/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml b/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml
index b88fcc4d439..bf355b1b604 100644
--- a/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml
+++ b/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml
@@ -22,3 +22,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml b/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml
index 33e3ef689d3..21348ba580b 100644
--- a/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml
+++ b/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml
@@ -22,3 +22,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml b/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml
index c546fba8629..ee41e49bcad 100644
--- a/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml
+++ b/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.ci_templates.p_ci_templates_5_min_production_app_mo
description: Number of projects using 5 min production app CI template in last 7 days.
product_section: seg
product_stage: deploy
-product_group: 5-min-app
+product_group: five_min_app
value_type: number
status: removed
milestone_removed: '14.6'
@@ -23,3 +23,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml b/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml
index e59a9924647..230a99b1a0b 100644
--- a/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml
+++ b/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml
@@ -23,3 +23,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml b/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml
index b31fae55802..801de933415 100644
--- a/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml
+++ b/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml
@@ -23,3 +23,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml b/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml
index cc3747ae053..5ab6f0478e0 100644
--- a/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml
+++ b/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml
@@ -23,3 +23,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml b/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml
index c5f9d63772f..633284ff05f 100644
--- a/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml
+++ b/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml
@@ -22,3 +22,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
index a1e70246309..97ff6a51c48 100755
--- a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
@@ -190,3 +190,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_28d/20210216184814_i_package_container_deploy_token_monthly.yml b/config/metrics/counts_28d/20210216184814_i_package_container_deploy_token_monthly.yml
index 3b7c46665cb..fb152f8ff60 100644
--- a/config/metrics/counts_28d/20210216184814_i_package_container_deploy_token_monthly.yml
+++ b/config/metrics/counts_28d/20210216184814_i_package_container_deploy_token_monthly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184818_i_package_debian_deploy_token_monthly.yml b/config/metrics/counts_28d/20210216184818_i_package_debian_deploy_token_monthly.yml
index 745c2ee2e5b..89c15abab51 100644
--- a/config/metrics/counts_28d/20210216184818_i_package_debian_deploy_token_monthly.yml
+++ b/config/metrics/counts_28d/20210216184818_i_package_debian_deploy_token_monthly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184826_i_package_golang_deploy_token_monthly.yml b/config/metrics/counts_28d/20210216184826_i_package_golang_deploy_token_monthly.yml
index 06d5ba1a1c9..61bc85e6891 100644
--- a/config/metrics/counts_28d/20210216184826_i_package_golang_deploy_token_monthly.yml
+++ b/config/metrics/counts_28d/20210216184826_i_package_golang_deploy_token_monthly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184846_i_package_tag_deploy_token_monthly.yml b/config/metrics/counts_28d/20210216184846_i_package_tag_deploy_token_monthly.yml
index cc15da4ab35..804bdf0fdd7 100644
--- a/config/metrics/counts_28d/20210216184846_i_package_tag_deploy_token_monthly.yml
+++ b/config/metrics/counts_28d/20210216184846_i_package_tag_deploy_token_monthly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184902_i_package_container_user_monthly.yml b/config/metrics/counts_28d/20210216184902_i_package_container_user_monthly.yml
index e415623ff53..3432e073b5d 100644
--- a/config/metrics/counts_28d/20210216184902_i_package_container_user_monthly.yml
+++ b/config/metrics/counts_28d/20210216184902_i_package_container_user_monthly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184906_i_package_debian_user_monthly.yml b/config/metrics/counts_28d/20210216184906_i_package_debian_user_monthly.yml
index 6b805cedbe4..12ccd12953f 100644
--- a/config/metrics/counts_28d/20210216184906_i_package_debian_user_monthly.yml
+++ b/config/metrics/counts_28d/20210216184906_i_package_debian_user_monthly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184913_i_package_golang_user_monthly.yml b/config/metrics/counts_28d/20210216184913_i_package_golang_user_monthly.yml
index 3c7e09e69fd..c506833515d 100644
--- a/config/metrics/counts_28d/20210216184913_i_package_golang_user_monthly.yml
+++ b/config/metrics/counts_28d/20210216184913_i_package_golang_user_monthly.yml
@@ -21,3 +21,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210216184933_i_package_tag_user_monthly.yml b/config/metrics/counts_28d/20210216184933_i_package_tag_user_monthly.yml
index f7a7af76999..d9064eb6f8d 100644
--- a/config/metrics/counts_28d/20210216184933_i_package_tag_user_monthly.yml
+++ b/config/metrics/counts_28d/20210216184933_i_package_tag_user_monthly.yml
@@ -21,3 +21,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_28d/20210902000813_p_ci_templates_implicit_auto_devops_deploy_latest_monthly.yml b/config/metrics/counts_28d/20210902000813_p_ci_templates_implicit_auto_devops_deploy_latest_monthly.yml
index 66f66f4ef6a..072cd9b84e4 100644
--- a/config/metrics/counts_28d/20210902000813_p_ci_templates_implicit_auto_devops_deploy_latest_monthly.yml
+++ b/config/metrics/counts_28d/20210902000813_p_ci_templates_implicit_auto_devops_deploy_latest_monthly.yml
@@ -23,3 +23,4 @@ tier:
options:
events:
- p_ci_templates_implicit_auto_devops_deploy_latest
+removed_by_url:
diff --git a/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml b/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml
index bb2e8bd8453..4749b9511bb 100644
--- a/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml
+++ b/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml
@@ -20,3 +20,4 @@ tier:
- free
- premium
- ultimate
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216174902_g_analytics_merge_request.yml b/config/metrics/counts_7d/20210216174902_g_analytics_merge_request.yml
index 8200576a27b..7bd4a0c21f3 100644
--- a/config/metrics/counts_7d/20210216174902_g_analytics_merge_request.yml
+++ b/config/metrics/counts_7d/20210216174902_g_analytics_merge_request.yml
@@ -21,3 +21,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216183213_product_analytics_test_metrics_union.yml b/config/metrics/counts_7d/20210216183213_product_analytics_test_metrics_union.yml
index 83ee5609107..f2d4909df3a 100644
--- a/config/metrics/counts_7d/20210216183213_product_analytics_test_metrics_union.yml
+++ b/config/metrics/counts_7d/20210216183213_product_analytics_test_metrics_union.yml
@@ -19,3 +19,4 @@ tier:
- free
- premium
- ultimate
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216183215_product_analytics_test_metrics_intersection.yml b/config/metrics/counts_7d/20210216183215_product_analytics_test_metrics_intersection.yml
index ed1944b4fc0..e8beab832d5 100644
--- a/config/metrics/counts_7d/20210216183215_product_analytics_test_metrics_intersection.yml
+++ b/config/metrics/counts_7d/20210216183215_product_analytics_test_metrics_intersection.yml
@@ -19,3 +19,4 @@ tier:
- free
- premium
- ultimate
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml
index e8670a1fe1e..4f84f5b26b5 100644
--- a/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml
+++ b/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml
@@ -8,7 +8,7 @@ product_section: 'TBD'
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113422
-milestone_removed: 15.10
+milestone_removed: "15.10"
time_frame: 7d
data_source: redis_hll
instrumentation_class: AggregatedMetric
diff --git a/config/metrics/counts_7d/20210216184500_p_ci_templates_implicit_auto_devops_build_weekly.yml b/config/metrics/counts_7d/20210216184500_p_ci_templates_implicit_auto_devops_build_weekly.yml
index f4e33e53c61..3487a2306a2 100644
--- a/config/metrics/counts_7d/20210216184500_p_ci_templates_implicit_auto_devops_build_weekly.yml
+++ b/config/metrics/counts_7d/20210216184500_p_ci_templates_implicit_auto_devops_build_weekly.yml
@@ -23,3 +23,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184504_p_ci_templates_implicit_auto_devops_deploy_weekly.yml b/config/metrics/counts_7d/20210216184504_p_ci_templates_implicit_auto_devops_deploy_weekly.yml
index 25609e951fb..07868d1be43 100644
--- a/config/metrics/counts_7d/20210216184504_p_ci_templates_implicit_auto_devops_deploy_weekly.yml
+++ b/config/metrics/counts_7d/20210216184504_p_ci_templates_implicit_auto_devops_deploy_weekly.yml
@@ -23,3 +23,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml b/config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml
index adf67977f9c..7be982f8ef2 100644
--- a/config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml
+++ b/config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.ci_templates.p_ci_templates_5_min_production_app_we
description: Number of projects using 5 min production app CI template in last 7 days.
product_section: seg
product_stage: deploy
-product_group: 5-min-app
+product_group: five_min_app
value_type: number
status: removed
milestone_removed: '14.6'
@@ -22,3 +22,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184524_p_ci_templates_aws_cf_deploy_ec2_weekly.yml b/config/metrics/counts_7d/20210216184524_p_ci_templates_aws_cf_deploy_ec2_weekly.yml
index 7b2ebf820b1..d5da98fd021 100644
--- a/config/metrics/counts_7d/20210216184524_p_ci_templates_aws_cf_deploy_ec2_weekly.yml
+++ b/config/metrics/counts_7d/20210216184524_p_ci_templates_aws_cf_deploy_ec2_weekly.yml
@@ -23,3 +23,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184536_p_ci_templates_auto_devops_deploy_weekly.yml b/config/metrics/counts_7d/20210216184536_p_ci_templates_auto_devops_deploy_weekly.yml
index 0ebcc00379b..855c1365589 100644
--- a/config/metrics/counts_7d/20210216184536_p_ci_templates_auto_devops_deploy_weekly.yml
+++ b/config/metrics/counts_7d/20210216184536_p_ci_templates_auto_devops_deploy_weekly.yml
@@ -24,3 +24,4 @@ tier:
- premium
- ultimate
performance_indicator_type: []
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184540_p_ci_templates_auto_devops_deploy_latest_weekly.yml b/config/metrics/counts_7d/20210216184540_p_ci_templates_auto_devops_deploy_latest_weekly.yml
index 34ef4ef374c..3c3d297639c 100644
--- a/config/metrics/counts_7d/20210216184540_p_ci_templates_auto_devops_deploy_latest_weekly.yml
+++ b/config/metrics/counts_7d/20210216184540_p_ci_templates_auto_devops_deploy_latest_weekly.yml
@@ -23,3 +23,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml
index 3c410b59322..3925f242efc 100755
--- a/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml
+++ b/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml
@@ -191,3 +191,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210216184805_i_package_composer_deploy_token_weekly.yml b/config/metrics/counts_7d/20210216184805_i_package_composer_deploy_token_weekly.yml
index e5d08397792..97965f8f7a0 100644
--- a/config/metrics/counts_7d/20210216184805_i_package_composer_deploy_token_weekly.yml
+++ b/config/metrics/counts_7d/20210216184805_i_package_composer_deploy_token_weekly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184812_i_package_container_deploy_token_weekly.yml b/config/metrics/counts_7d/20210216184812_i_package_container_deploy_token_weekly.yml
index 57b851d7240..dbe77d0e88a 100644
--- a/config/metrics/counts_7d/20210216184812_i_package_container_deploy_token_weekly.yml
+++ b/config/metrics/counts_7d/20210216184812_i_package_container_deploy_token_weekly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184816_i_package_debian_deploy_token_weekly.yml b/config/metrics/counts_7d/20210216184816_i_package_debian_deploy_token_weekly.yml
index 6a5f5010b3d..513371a05b4 100644
--- a/config/metrics/counts_7d/20210216184816_i_package_debian_deploy_token_weekly.yml
+++ b/config/metrics/counts_7d/20210216184816_i_package_debian_deploy_token_weekly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184824_i_package_golang_deploy_token_weekly.yml b/config/metrics/counts_7d/20210216184824_i_package_golang_deploy_token_weekly.yml
index 4b9d7df0c7c..cfe9bf13702 100644
--- a/config/metrics/counts_7d/20210216184824_i_package_golang_deploy_token_weekly.yml
+++ b/config/metrics/counts_7d/20210216184824_i_package_golang_deploy_token_weekly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184844_i_package_tag_deploy_token_weekly.yml b/config/metrics/counts_7d/20210216184844_i_package_tag_deploy_token_weekly.yml
index 9478f660aac..10a7c219917 100644
--- a/config/metrics/counts_7d/20210216184844_i_package_tag_deploy_token_weekly.yml
+++ b/config/metrics/counts_7d/20210216184844_i_package_tag_deploy_token_weekly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184900_i_package_container_user_weekly.yml b/config/metrics/counts_7d/20210216184900_i_package_container_user_weekly.yml
index 1ddb6cdbfa4..74957ee656f 100644
--- a/config/metrics/counts_7d/20210216184900_i_package_container_user_weekly.yml
+++ b/config/metrics/counts_7d/20210216184900_i_package_container_user_weekly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184904_i_package_debian_user_weekly.yml b/config/metrics/counts_7d/20210216184904_i_package_debian_user_weekly.yml
index 22e130b9969..6636498e590 100644
--- a/config/metrics/counts_7d/20210216184904_i_package_debian_user_weekly.yml
+++ b/config/metrics/counts_7d/20210216184904_i_package_debian_user_weekly.yml
@@ -21,3 +21,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184911_i_package_golang_user_weekly.yml b/config/metrics/counts_7d/20210216184911_i_package_golang_user_weekly.yml
index 32270cd0e3b..e44104ebf6c 100644
--- a/config/metrics/counts_7d/20210216184911_i_package_golang_user_weekly.yml
+++ b/config/metrics/counts_7d/20210216184911_i_package_golang_user_weekly.yml
@@ -21,3 +21,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210216184931_i_package_tag_user_weekly.yml b/config/metrics/counts_7d/20210216184931_i_package_tag_user_weekly.yml
index 6ab0f4f992e..cec805a07b4 100644
--- a/config/metrics/counts_7d/20210216184931_i_package_tag_user_weekly.yml
+++ b/config/metrics/counts_7d/20210216184931_i_package_tag_user_weekly.yml
@@ -22,3 +22,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_7d/20210902000809_p_ci_templates_implicit_auto_devops_deploy_latest_weekly.yml b/config/metrics/counts_7d/20210902000809_p_ci_templates_implicit_auto_devops_deploy_latest_weekly.yml
index de6e5b504fe..98951919e65 100644
--- a/config/metrics/counts_7d/20210902000809_p_ci_templates_implicit_auto_devops_deploy_latest_weekly.yml
+++ b/config/metrics/counts_7d/20210902000809_p_ci_templates_implicit_auto_devops_deploy_latest_weekly.yml
@@ -23,3 +23,4 @@ tier:
options:
events:
- p_ci_templates_implicit_auto_devops_deploy_latest
+removed_by_url:
diff --git a/config/metrics/counts_7d/20210916102312_templates_gitlab_slack_application_active.yml b/config/metrics/counts_7d/20210916102312_templates_gitlab_slack_application_active.yml
index 9f08bac4531..788652bf82a 100644
--- a/config/metrics/counts_7d/20210916102312_templates_gitlab_slack_application_active.yml
+++ b/config/metrics/counts_7d/20210916102312_templates_gitlab_slack_application_active.yml
@@ -20,3 +20,4 @@ tier:
- free
- premium
- ultimate
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175019_projects_with_prometheus_alerts.yml b/config/metrics/counts_all/20210216175019_projects_with_prometheus_alerts.yml
index 8b0fb9db517..c22277c98aa 100644
--- a/config/metrics/counts_all/20210216175019_projects_with_prometheus_alerts.yml
+++ b/config/metrics/counts_all/20210216175019_projects_with_prometheus_alerts.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175021_pod_logs_usages_total.yml b/config/metrics/counts_all/20210216175021_pod_logs_usages_total.yml
index 676308f9fc4..81157c0e40b 100644
--- a/config/metrics/counts_all/20210216175021_pod_logs_usages_total.yml
+++ b/config/metrics/counts_all/20210216175021_pod_logs_usages_total.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175045_merge_requests.yml b/config/metrics/counts_all/20210216175045_merge_requests.yml
index 0b10593be23..16f70b8851b 100644
--- a/config/metrics/counts_all/20210216175045_merge_requests.yml
+++ b/config/metrics/counts_all/20210216175045_merge_requests.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175053_suggestions.yml b/config/metrics/counts_all/20210216175053_suggestions.yml
index f42c47d9142..34b3ddb8976 100644
--- a/config/metrics/counts_all/20210216175053_suggestions.yml
+++ b/config/metrics/counts_all/20210216175053_suggestions.yml
@@ -18,3 +18,4 @@ tier:
- ultimate
milestone: "<13.9"
milestone_removed: '14.7'
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175255_clusters_applications_helm.yml b/config/metrics/counts_all/20210216175255_clusters_applications_helm.yml
index 075cddb387e..16c1f26bf8e 100644
--- a/config/metrics/counts_all/20210216175255_clusters_applications_helm.yml
+++ b/config/metrics/counts_all/20210216175255_clusters_applications_helm.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175257_clusters_applications_ingress.yml b/config/metrics/counts_all/20210216175257_clusters_applications_ingress.yml
index cb308890bd4..885de6e75a0 100644
--- a/config/metrics/counts_all/20210216175257_clusters_applications_ingress.yml
+++ b/config/metrics/counts_all/20210216175257_clusters_applications_ingress.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175259_clusters_applications_cert_managers.yml b/config/metrics/counts_all/20210216175259_clusters_applications_cert_managers.yml
index cad1d25e732..9ff2585d09d 100644
--- a/config/metrics/counts_all/20210216175259_clusters_applications_cert_managers.yml
+++ b/config/metrics/counts_all/20210216175259_clusters_applications_cert_managers.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175301_clusters_applications_crossplane.yml b/config/metrics/counts_all/20210216175301_clusters_applications_crossplane.yml
index e7ab1a3f950..63d06eb1af8 100644
--- a/config/metrics/counts_all/20210216175301_clusters_applications_crossplane.yml
+++ b/config/metrics/counts_all/20210216175301_clusters_applications_crossplane.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175303_clusters_applications_prometheus.yml b/config/metrics/counts_all/20210216175303_clusters_applications_prometheus.yml
index 033d912d880..29df1ab8ff3 100644
--- a/config/metrics/counts_all/20210216175303_clusters_applications_prometheus.yml
+++ b/config/metrics/counts_all/20210216175303_clusters_applications_prometheus.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175305_clusters_applications_runner.yml b/config/metrics/counts_all/20210216175305_clusters_applications_runner.yml
index a460b40ed81..02ddd07636f 100644
--- a/config/metrics/counts_all/20210216175305_clusters_applications_runner.yml
+++ b/config/metrics/counts_all/20210216175305_clusters_applications_runner.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175307_clusters_applications_knative.yml b/config/metrics/counts_all/20210216175307_clusters_applications_knative.yml
index bc142676e6a..ee95e2812dc 100644
--- a/config/metrics/counts_all/20210216175307_clusters_applications_knative.yml
+++ b/config/metrics/counts_all/20210216175307_clusters_applications_knative.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175309_clusters_applications_elastic_stack.yml b/config/metrics/counts_all/20210216175309_clusters_applications_elastic_stack.yml
index 54c96b5bea7..20afc0b4acf 100644
--- a/config/metrics/counts_all/20210216175309_clusters_applications_elastic_stack.yml
+++ b/config/metrics/counts_all/20210216175309_clusters_applications_elastic_stack.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175310_clusters_applications_jupyter.yml b/config/metrics/counts_all/20210216175310_clusters_applications_jupyter.yml
index b7d202d4c33..101167e45d3 100644
--- a/config/metrics/counts_all/20210216175310_clusters_applications_jupyter.yml
+++ b/config/metrics/counts_all/20210216175310_clusters_applications_jupyter.yml
@@ -20,3 +20,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175312_clusters_applications_cilium.yml b/config/metrics/counts_all/20210216175312_clusters_applications_cilium.yml
index 3126519fb36..0deff066abb 100644
--- a/config/metrics/counts_all/20210216175312_clusters_applications_cilium.yml
+++ b/config/metrics/counts_all/20210216175312_clusters_applications_cilium.yml
@@ -21,3 +21,4 @@ performance_indicator_type:
- customer_health_score
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175329_clusters_applications_cert_managers.yml b/config/metrics/counts_all/20210216175329_clusters_applications_cert_managers.yml
index 82bfacffaf3..90347bb8207 100644
--- a/config/metrics/counts_all/20210216175329_clusters_applications_cert_managers.yml
+++ b/config/metrics/counts_all/20210216175329_clusters_applications_cert_managers.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175331_clusters_applications_helm.yml b/config/metrics/counts_all/20210216175331_clusters_applications_helm.yml
index 52c023961f9..2a1f18295df 100644
--- a/config/metrics/counts_all/20210216175331_clusters_applications_helm.yml
+++ b/config/metrics/counts_all/20210216175331_clusters_applications_helm.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175333_clusters_applications_ingress.yml b/config/metrics/counts_all/20210216175333_clusters_applications_ingress.yml
index 8d9897318a4..fb3707aed9a 100644
--- a/config/metrics/counts_all/20210216175333_clusters_applications_ingress.yml
+++ b/config/metrics/counts_all/20210216175333_clusters_applications_ingress.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175335_clusters_applications_knative.yml b/config/metrics/counts_all/20210216175335_clusters_applications_knative.yml
index 1cab6eeee45..4c6f0ce629c 100644
--- a/config/metrics/counts_all/20210216175335_clusters_applications_knative.yml
+++ b/config/metrics/counts_all/20210216175335_clusters_applications_knative.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175403_projects_with_prometheus_alerts.yml b/config/metrics/counts_all/20210216175403_projects_with_prometheus_alerts.yml
index 4192eb5c3f8..9b66261f91c 100644
--- a/config/metrics/counts_all/20210216175403_projects_with_prometheus_alerts.yml
+++ b/config/metrics/counts_all/20210216175403_projects_with_prometheus_alerts.yml
@@ -19,3 +19,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml b/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml
index 6e39dfdcfc9..603de7f0a08 100644
--- a/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml
+++ b/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml
@@ -8,7 +8,7 @@ product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
value_type: number
status: removed
-milestone_removed: 14.0
+milestone_removed: "14.0"
time_frame: all
data_source: database
distribution:
@@ -20,3 +20,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml b/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml
index 23485e5d7d2..5b4594093ca 100644
--- a/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml
+++ b/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml
@@ -8,7 +8,7 @@ product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
value_type: number
status: removed
-milestone_removed: 14.0
+milestone_removed: "14.0"
time_frame: all
data_source: database
distribution:
@@ -20,3 +20,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175446_network_policy_forwards.yml b/config/metrics/counts_all/20210216175446_network_policy_forwards.yml
index d0fa2c434d2..78eedfb785a 100644
--- a/config/metrics/counts_all/20210216175446_network_policy_forwards.yml
+++ b/config/metrics/counts_all/20210216175446_network_policy_forwards.yml
@@ -9,7 +9,7 @@ product_group: container_security_group_was_removed
value_type: number
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86351
-milestone_removed: 15.0
+milestone_removed: "15.0"
time_frame: all
data_source: redis
distribution:
diff --git a/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml b/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml
index 3b28b7e3c93..106543cc586 100644
--- a/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml
+++ b/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml
@@ -7,7 +7,7 @@ product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
value_type: number
status: removed
-milestone_removed: 14.0
+milestone_removed: "14.0"
time_frame: all
data_source: database
distribution:
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml b/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml
index 5bc509d3b12..92562f636a2 100644
--- a/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml
+++ b/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml
@@ -7,7 +7,7 @@ product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
value_type: number
status: removed
-milestone_removed: 14.0
+milestone_removed: "14.0"
time_frame: all
data_source: database
distribution:
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml b/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml
index a440204f0aa..1aac4f05df8 100644
--- a/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml
+++ b/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml
@@ -7,7 +7,7 @@ product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
value_type: number
status: removed
-milestone_removed: 14.0
+milestone_removed: "14.0"
time_frame: all
data_source: database
distribution:
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml b/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml
index 27ed192f1cc..df267d8c965 100644
--- a/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml
+++ b/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml
@@ -7,7 +7,7 @@ product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
value_type: number
status: removed
-milestone_removed: 14.0
+milestone_removed: "14.0"
time_frame: all
data_source: database
distribution:
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175627_templates_asana_active.yml b/config/metrics/counts_all/20210216175627_templates_asana_active.yml
index 78fcd3d5a17..1011147e4a7 100644
--- a/config/metrics/counts_all/20210216175627_templates_asana_active.yml
+++ b/config/metrics/counts_all/20210216175627_templates_asana_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175638_templates_assembla_active.yml b/config/metrics/counts_all/20210216175638_templates_assembla_active.yml
index 04dde10ae73..d874954dc57 100644
--- a/config/metrics/counts_all/20210216175638_templates_assembla_active.yml
+++ b/config/metrics/counts_all/20210216175638_templates_assembla_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175649_templates_bamboo_active.yml b/config/metrics/counts_all/20210216175649_templates_bamboo_active.yml
index 30e1af14ed4..c732830f584 100644
--- a/config/metrics/counts_all/20210216175649_templates_bamboo_active.yml
+++ b/config/metrics/counts_all/20210216175649_templates_bamboo_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175701_templates_bugzilla_active.yml b/config/metrics/counts_all/20210216175701_templates_bugzilla_active.yml
index a520b0b0eff..dbf797cca73 100644
--- a/config/metrics/counts_all/20210216175701_templates_bugzilla_active.yml
+++ b/config/metrics/counts_all/20210216175701_templates_bugzilla_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175712_templates_buildkite_active.yml b/config/metrics/counts_all/20210216175712_templates_buildkite_active.yml
index f8a8d5e7c8d..b9681581c80 100644
--- a/config/metrics/counts_all/20210216175712_templates_buildkite_active.yml
+++ b/config/metrics/counts_all/20210216175712_templates_buildkite_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175723_templates_campfire_active.yml b/config/metrics/counts_all/20210216175723_templates_campfire_active.yml
index 561e1ed76cd..755bbea11b5 100644
--- a/config/metrics/counts_all/20210216175723_templates_campfire_active.yml
+++ b/config/metrics/counts_all/20210216175723_templates_campfire_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175734_templates_confluence_active.yml b/config/metrics/counts_all/20210216175734_templates_confluence_active.yml
index a0be5b61109..d5564464e7a 100644
--- a/config/metrics/counts_all/20210216175734_templates_confluence_active.yml
+++ b/config/metrics/counts_all/20210216175734_templates_confluence_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175745_templates_custom_issue_tracker_active.yml b/config/metrics/counts_all/20210216175745_templates_custom_issue_tracker_active.yml
index 2216d415bf2..66a5a94d99d 100644
--- a/config/metrics/counts_all/20210216175745_templates_custom_issue_tracker_active.yml
+++ b/config/metrics/counts_all/20210216175745_templates_custom_issue_tracker_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175756_templates_discord_active.yml b/config/metrics/counts_all/20210216175756_templates_discord_active.yml
index 156185b3ae7..25049d1497a 100644
--- a/config/metrics/counts_all/20210216175756_templates_discord_active.yml
+++ b/config/metrics/counts_all/20210216175756_templates_discord_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175807_templates_drone_ci_active.yml b/config/metrics/counts_all/20210216175807_templates_drone_ci_active.yml
index 8d400caff33..b8b9ab1aa08 100644
--- a/config/metrics/counts_all/20210216175807_templates_drone_ci_active.yml
+++ b/config/metrics/counts_all/20210216175807_templates_drone_ci_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175818_templates_emails_on_push_active.yml b/config/metrics/counts_all/20210216175818_templates_emails_on_push_active.yml
index b99cff392ad..81a9ba24425 100644
--- a/config/metrics/counts_all/20210216175818_templates_emails_on_push_active.yml
+++ b/config/metrics/counts_all/20210216175818_templates_emails_on_push_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175829_templates_external_wiki_active.yml b/config/metrics/counts_all/20210216175829_templates_external_wiki_active.yml
index a531b187420..0e6cd4a4169 100644
--- a/config/metrics/counts_all/20210216175829_templates_external_wiki_active.yml
+++ b/config/metrics/counts_all/20210216175829_templates_external_wiki_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175840_templates_flowdock_active.yml b/config/metrics/counts_all/20210216175840_templates_flowdock_active.yml
index 68d3ed10346..01df00739d4 100644
--- a/config/metrics/counts_all/20210216175840_templates_flowdock_active.yml
+++ b/config/metrics/counts_all/20210216175840_templates_flowdock_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175902_templates_hangouts_chat_active.yml b/config/metrics/counts_all/20210216175902_templates_hangouts_chat_active.yml
index 5d92d0b81b6..b6fbd660657 100644
--- a/config/metrics/counts_all/20210216175902_templates_hangouts_chat_active.yml
+++ b/config/metrics/counts_all/20210216175902_templates_hangouts_chat_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175910_projects_hipchat_active.yml b/config/metrics/counts_all/20210216175910_projects_hipchat_active.yml
index 737e9696f14..dbe69e2f99c 100644
--- a/config/metrics/counts_all/20210216175910_projects_hipchat_active.yml
+++ b/config/metrics/counts_all/20210216175910_projects_hipchat_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175912_groups_hipchat_active.yml b/config/metrics/counts_all/20210216175912_groups_hipchat_active.yml
index ac3d2ebe91a..e65499a9402 100644
--- a/config/metrics/counts_all/20210216175912_groups_hipchat_active.yml
+++ b/config/metrics/counts_all/20210216175912_groups_hipchat_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175913_templates_hipchat_active.yml b/config/metrics/counts_all/20210216175913_templates_hipchat_active.yml
index 2be621c6d35..9349ea24ecf 100644
--- a/config/metrics/counts_all/20210216175913_templates_hipchat_active.yml
+++ b/config/metrics/counts_all/20210216175913_templates_hipchat_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175915_instances_hipchat_active.yml b/config/metrics/counts_all/20210216175915_instances_hipchat_active.yml
index 591fd17e33e..c160b7a45d8 100644
--- a/config/metrics/counts_all/20210216175915_instances_hipchat_active.yml
+++ b/config/metrics/counts_all/20210216175915_instances_hipchat_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175917_projects_inheriting_hipchat_active.yml b/config/metrics/counts_all/20210216175917_projects_inheriting_hipchat_active.yml
index ca710cb7edc..8baaa6c1b77 100644
--- a/config/metrics/counts_all/20210216175917_projects_inheriting_hipchat_active.yml
+++ b/config/metrics/counts_all/20210216175917_projects_inheriting_hipchat_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175919_groups_inheriting_hipchat_active.yml b/config/metrics/counts_all/20210216175919_groups_inheriting_hipchat_active.yml
index e0da8100b3a..08741934c75 100644
--- a/config/metrics/counts_all/20210216175919_groups_inheriting_hipchat_active.yml
+++ b/config/metrics/counts_all/20210216175919_groups_inheriting_hipchat_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175924_templates_irker_active.yml b/config/metrics/counts_all/20210216175924_templates_irker_active.yml
index d88a90223eb..16a730af3fe 100644
--- a/config/metrics/counts_all/20210216175924_templates_irker_active.yml
+++ b/config/metrics/counts_all/20210216175924_templates_irker_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175935_templates_jenkins_active.yml b/config/metrics/counts_all/20210216175935_templates_jenkins_active.yml
index bf8d582550c..8dd6b51e36e 100644
--- a/config/metrics/counts_all/20210216175935_templates_jenkins_active.yml
+++ b/config/metrics/counts_all/20210216175935_templates_jenkins_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175946_templates_jira_active.yml b/config/metrics/counts_all/20210216175946_templates_jira_active.yml
index 3f5a28774a0..ecfc4963f98 100644
--- a/config/metrics/counts_all/20210216175946_templates_jira_active.yml
+++ b/config/metrics/counts_all/20210216175946_templates_jira_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216175957_templates_mattermost_active.yml b/config/metrics/counts_all/20210216175957_templates_mattermost_active.yml
index 2c568ebcbac..743e03f21a5 100644
--- a/config/metrics/counts_all/20210216175957_templates_mattermost_active.yml
+++ b/config/metrics/counts_all/20210216175957_templates_mattermost_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180008_templates_mattermost_slash_commands_active.yml b/config/metrics/counts_all/20210216180008_templates_mattermost_slash_commands_active.yml
index 3691f524c22..2d5277cdbc4 100644
--- a/config/metrics/counts_all/20210216180008_templates_mattermost_slash_commands_active.yml
+++ b/config/metrics/counts_all/20210216180008_templates_mattermost_slash_commands_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180019_templates_microsoft_teams_active.yml b/config/metrics/counts_all/20210216180019_templates_microsoft_teams_active.yml
index 78ee7a08864..1dcb7c25598 100644
--- a/config/metrics/counts_all/20210216180019_templates_microsoft_teams_active.yml
+++ b/config/metrics/counts_all/20210216180019_templates_microsoft_teams_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180030_templates_packagist_active.yml b/config/metrics/counts_all/20210216180030_templates_packagist_active.yml
index a498548b841..a6419bd2c6b 100644
--- a/config/metrics/counts_all/20210216180030_templates_packagist_active.yml
+++ b/config/metrics/counts_all/20210216180030_templates_packagist_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180041_templates_pipelines_email_active.yml b/config/metrics/counts_all/20210216180041_templates_pipelines_email_active.yml
index 14335a4a6c6..ececb5c7003 100644
--- a/config/metrics/counts_all/20210216180041_templates_pipelines_email_active.yml
+++ b/config/metrics/counts_all/20210216180041_templates_pipelines_email_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180052_templates_pivotaltracker_active.yml b/config/metrics/counts_all/20210216180052_templates_pivotaltracker_active.yml
index 0f33662ab50..d78e1fd6694 100644
--- a/config/metrics/counts_all/20210216180052_templates_pivotaltracker_active.yml
+++ b/config/metrics/counts_all/20210216180052_templates_pivotaltracker_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180104_templates_pushover_active.yml b/config/metrics/counts_all/20210216180104_templates_pushover_active.yml
index 10fd599f612..a864846893b 100644
--- a/config/metrics/counts_all/20210216180104_templates_pushover_active.yml
+++ b/config/metrics/counts_all/20210216180104_templates_pushover_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180115_templates_redmine_active.yml b/config/metrics/counts_all/20210216180115_templates_redmine_active.yml
index 380c4a29475..0abf8da3254 100644
--- a/config/metrics/counts_all/20210216180115_templates_redmine_active.yml
+++ b/config/metrics/counts_all/20210216180115_templates_redmine_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180126_templates_slack_active.yml b/config/metrics/counts_all/20210216180126_templates_slack_active.yml
index 5b6ae8cd466..46a50bd77c5 100644
--- a/config/metrics/counts_all/20210216180126_templates_slack_active.yml
+++ b/config/metrics/counts_all/20210216180126_templates_slack_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180137_templates_slack_slash_commands_active.yml b/config/metrics/counts_all/20210216180137_templates_slack_slash_commands_active.yml
index d79ab237338..9d8fe1485ec 100644
--- a/config/metrics/counts_all/20210216180137_templates_slack_slash_commands_active.yml
+++ b/config/metrics/counts_all/20210216180137_templates_slack_slash_commands_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180148_templates_teamcity_active.yml b/config/metrics/counts_all/20210216180148_templates_teamcity_active.yml
index d6f5fde5cb2..d41f1c2cb73 100644
--- a/config/metrics/counts_all/20210216180148_templates_teamcity_active.yml
+++ b/config/metrics/counts_all/20210216180148_templates_teamcity_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180159_templates_unify_circuit_active.yml b/config/metrics/counts_all/20210216180159_templates_unify_circuit_active.yml
index abea902b74a..237fc2df1dc 100644
--- a/config/metrics/counts_all/20210216180159_templates_unify_circuit_active.yml
+++ b/config/metrics/counts_all/20210216180159_templates_unify_circuit_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180210_templates_webex_teams_active.yml b/config/metrics/counts_all/20210216180210_templates_webex_teams_active.yml
index fb08834235e..ad7c2c42acb 100644
--- a/config/metrics/counts_all/20210216180210_templates_webex_teams_active.yml
+++ b/config/metrics/counts_all/20210216180210_templates_webex_teams_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180221_templates_youtrack_active.yml b/config/metrics/counts_all/20210216180221_templates_youtrack_active.yml
index d3dc6ecc2c5..a5a4b17a6c0 100644
--- a/config/metrics/counts_all/20210216180221_templates_youtrack_active.yml
+++ b/config/metrics/counts_all/20210216180221_templates_youtrack_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180451_incident_labeled_issues.yml b/config/metrics/counts_all/20210216180451_incident_labeled_issues.yml
index 14e7c87c780..4f988259a5a 100644
--- a/config/metrics/counts_all/20210216180451_incident_labeled_issues.yml
+++ b/config/metrics/counts_all/20210216180451_incident_labeled_issues.yml
@@ -19,3 +19,4 @@ tier:
performance_indicator_type: []
milestone: "<13.9"
milestone_removed: "14.8"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml b/config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml
index bfa644092b7..cc7d6db5d97 100644
--- a/config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml
+++ b/config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180634_gitlab.yml b/config/metrics/counts_all/20210216180634_gitlab.yml
index f7f99d39208..d0a331e5510 100644
--- a/config/metrics/counts_all/20210216180634_gitlab.yml
+++ b/config/metrics/counts_all/20210216180634_gitlab.yml
@@ -18,3 +18,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180639_gitlab.yml b/config/metrics/counts_all/20210216180639_gitlab.yml
index d8622818173..59430960626 100644
--- a/config/metrics/counts_all/20210216180639_gitlab.yml
+++ b/config/metrics/counts_all/20210216180639_gitlab.yml
@@ -22,3 +22,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180705_total.yml b/config/metrics/counts_all/20210216180705_total.yml
index beac0d6acc5..0e573f05944 100644
--- a/config/metrics/counts_all/20210216180705_total.yml
+++ b/config/metrics/counts_all/20210216180705_total.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180707_gitlab_project.yml b/config/metrics/counts_all/20210216180707_gitlab_project.yml
index b6f189f2908..f994ca94cb3 100644
--- a/config/metrics/counts_all/20210216180707_gitlab_project.yml
+++ b/config/metrics/counts_all/20210216180707_gitlab_project.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180709_gitlab.yml b/config/metrics/counts_all/20210216180709_gitlab.yml
index defb43f9de3..83d2a8a5a74 100644
--- a/config/metrics/counts_all/20210216180709_gitlab.yml
+++ b/config/metrics/counts_all/20210216180709_gitlab.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180711_github.yml b/config/metrics/counts_all/20210216180711_github.yml
index fb434d09013..4c40181f136 100644
--- a/config/metrics/counts_all/20210216180711_github.yml
+++ b/config/metrics/counts_all/20210216180711_github.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180713_bitbucket.yml b/config/metrics/counts_all/20210216180713_bitbucket.yml
index c6132dd7bc3..3fde5dcc250 100644
--- a/config/metrics/counts_all/20210216180713_bitbucket.yml
+++ b/config/metrics/counts_all/20210216180713_bitbucket.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180715_bitbucket_server.yml b/config/metrics/counts_all/20210216180715_bitbucket_server.yml
index 3fff679d5c6..20b7ea74be8 100644
--- a/config/metrics/counts_all/20210216180715_bitbucket_server.yml
+++ b/config/metrics/counts_all/20210216180715_bitbucket_server.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180716_gitea.yml b/config/metrics/counts_all/20210216180716_gitea.yml
index 7d727ceab3e..1e6c6924cab 100644
--- a/config/metrics/counts_all/20210216180716_gitea.yml
+++ b/config/metrics/counts_all/20210216180716_gitea.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180718_git.yml b/config/metrics/counts_all/20210216180718_git.yml
index fccc694ba81..714264c78ac 100644
--- a/config/metrics/counts_all/20210216180718_git.yml
+++ b/config/metrics/counts_all/20210216180718_git.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180720_manifest.yml b/config/metrics/counts_all/20210216180720_manifest.yml
index 2347510d8d1..c5486138cc6 100644
--- a/config/metrics/counts_all/20210216180720_manifest.yml
+++ b/config/metrics/counts_all/20210216180720_manifest.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180722_jira.yml b/config/metrics/counts_all/20210216180722_jira.yml
index a8b10bea3ca..1bb5bff89c1 100644
--- a/config/metrics/counts_all/20210216180722_jira.yml
+++ b/config/metrics/counts_all/20210216180722_jira.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180724_fogbugz.yml b/config/metrics/counts_all/20210216180724_fogbugz.yml
index 9914a143603..3095c40a8f8 100644
--- a/config/metrics/counts_all/20210216180724_fogbugz.yml
+++ b/config/metrics/counts_all/20210216180724_fogbugz.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180726_phabricator.yml b/config/metrics/counts_all/20210216180726_phabricator.yml
index 76ac173e021..166ae62dfb6 100644
--- a/config/metrics/counts_all/20210216180726_phabricator.yml
+++ b/config/metrics/counts_all/20210216180726_phabricator.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180727_csv.yml b/config/metrics/counts_all/20210216180727_csv.yml
index 9341f5cbb0d..f1279933c39 100644
--- a/config/metrics/counts_all/20210216180727_csv.yml
+++ b/config/metrics/counts_all/20210216180727_csv.yml
@@ -18,3 +18,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180729_groups_imported.yml b/config/metrics/counts_all/20210216180729_groups_imported.yml
index 6d52117d7f0..94cb0e1d46d 100644
--- a/config/metrics/counts_all/20210216180729_groups_imported.yml
+++ b/config/metrics/counts_all/20210216180729_groups_imported.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216180934_templates_prometheus_active.yml b/config/metrics/counts_all/20210216180934_templates_prometheus_active.yml
index b8836be2107..ba06004d6ec 100644
--- a/config/metrics/counts_all/20210216180934_templates_prometheus_active.yml
+++ b/config/metrics/counts_all/20210216180934_templates_prometheus_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216180947_clusters_applications_prometheus.yml b/config/metrics/counts_all/20210216180947_clusters_applications_prometheus.yml
index 76497d1a020..212f8c21133 100644
--- a/config/metrics/counts_all/20210216180947_clusters_applications_prometheus.yml
+++ b/config/metrics/counts_all/20210216180947_clusters_applications_prometheus.yml
@@ -18,3 +18,4 @@ tier:
- ultimate
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216181949_clusters_applications_runner.yml b/config/metrics/counts_all/20210216181949_clusters_applications_runner.yml
index 8e5acdf5ce3..9baa428c72d 100644
--- a/config/metrics/counts_all/20210216181949_clusters_applications_runner.yml
+++ b/config/metrics/counts_all/20210216181949_clusters_applications_runner.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
milestone: "<13.9"
milestone_removed: "14.4"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182551_templates_datadog_active.yml b/config/metrics/counts_all/20210216182551_templates_datadog_active.yml
index 965a797a426..f45b4a93270 100644
--- a/config/metrics/counts_all/20210216182551_templates_datadog_active.yml
+++ b/config/metrics/counts_all/20210216182551_templates_datadog_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182618_templates_ewm_active.yml b/config/metrics/counts_all/20210216182618_templates_ewm_active.yml
index 0b4bd1d8bbd..1791805d8d8 100644
--- a/config/metrics/counts_all/20210216182618_templates_ewm_active.yml
+++ b/config/metrics/counts_all/20210216182618_templates_ewm_active.yml
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182722_projects_mock_ci_active.yml b/config/metrics/counts_all/20210216182722_projects_mock_ci_active.yml
index b2ca56dae60..f19e8a6526d 100644
--- a/config/metrics/counts_all/20210216182722_projects_mock_ci_active.yml
+++ b/config/metrics/counts_all/20210216182722_projects_mock_ci_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182724_groups_mock_ci_active.yml b/config/metrics/counts_all/20210216182724_groups_mock_ci_active.yml
index d9cd14d9603..32e8801c337 100644
--- a/config/metrics/counts_all/20210216182724_groups_mock_ci_active.yml
+++ b/config/metrics/counts_all/20210216182724_groups_mock_ci_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182726_templates_mock_ci_active.yml b/config/metrics/counts_all/20210216182726_templates_mock_ci_active.yml
index 3a9afd94991..296afe272e4 100644
--- a/config/metrics/counts_all/20210216182726_templates_mock_ci_active.yml
+++ b/config/metrics/counts_all/20210216182726_templates_mock_ci_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182728_instances_mock_ci_active.yml b/config/metrics/counts_all/20210216182728_instances_mock_ci_active.yml
index 1067c8b781a..35d6b38a8b3 100644
--- a/config/metrics/counts_all/20210216182728_instances_mock_ci_active.yml
+++ b/config/metrics/counts_all/20210216182728_instances_mock_ci_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182730_projects_inheriting_mock_ci_active.yml b/config/metrics/counts_all/20210216182730_projects_inheriting_mock_ci_active.yml
index c1498b0afd4..0b84bac064c 100644
--- a/config/metrics/counts_all/20210216182730_projects_inheriting_mock_ci_active.yml
+++ b/config/metrics/counts_all/20210216182730_projects_inheriting_mock_ci_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182732_groups_inheriting_mock_ci_active.yml b/config/metrics/counts_all/20210216182732_groups_inheriting_mock_ci_active.yml
index f8fb07787c3..89fb814fc94 100644
--- a/config/metrics/counts_all/20210216182732_groups_inheriting_mock_ci_active.yml
+++ b/config/metrics/counts_all/20210216182732_groups_inheriting_mock_ci_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182734_projects_mock_monitoring_active.yml b/config/metrics/counts_all/20210216182734_projects_mock_monitoring_active.yml
index 375afffabb6..21d025e3d15 100644
--- a/config/metrics/counts_all/20210216182734_projects_mock_monitoring_active.yml
+++ b/config/metrics/counts_all/20210216182734_projects_mock_monitoring_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182736_groups_mock_monitoring_active.yml b/config/metrics/counts_all/20210216182736_groups_mock_monitoring_active.yml
index e363a531363..f77c12657ff 100644
--- a/config/metrics/counts_all/20210216182736_groups_mock_monitoring_active.yml
+++ b/config/metrics/counts_all/20210216182736_groups_mock_monitoring_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182738_templates_mock_monitoring_active.yml b/config/metrics/counts_all/20210216182738_templates_mock_monitoring_active.yml
index fdd9cedf0bf..375abe3cd5a 100644
--- a/config/metrics/counts_all/20210216182738_templates_mock_monitoring_active.yml
+++ b/config/metrics/counts_all/20210216182738_templates_mock_monitoring_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182739_instances_mock_monitoring_active.yml b/config/metrics/counts_all/20210216182739_instances_mock_monitoring_active.yml
index 2bd63d7909e..79542fd6574 100644
--- a/config/metrics/counts_all/20210216182739_instances_mock_monitoring_active.yml
+++ b/config/metrics/counts_all/20210216182739_instances_mock_monitoring_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182741_projects_inheriting_mock_monitoring_active.yml b/config/metrics/counts_all/20210216182741_projects_inheriting_mock_monitoring_active.yml
index f3e55e49f18..5f9a2360034 100644
--- a/config/metrics/counts_all/20210216182741_projects_inheriting_mock_monitoring_active.yml
+++ b/config/metrics/counts_all/20210216182741_projects_inheriting_mock_monitoring_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182743_groups_inheriting_mock_monitoring_active.yml b/config/metrics/counts_all/20210216182743_groups_inheriting_mock_monitoring_active.yml
index c4798be2f30..b071cc680cc 100644
--- a/config/metrics/counts_all/20210216182743_groups_inheriting_mock_monitoring_active.yml
+++ b/config/metrics/counts_all/20210216182743_groups_inheriting_mock_monitoring_active.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182907_package_events_i_package_container_delete_package.yml b/config/metrics/counts_all/20210216182907_package_events_i_package_container_delete_package.yml
index 682ec3917ff..18c7bae85e2 100644
--- a/config/metrics/counts_all/20210216182907_package_events_i_package_container_delete_package.yml
+++ b/config/metrics/counts_all/20210216182907_package_events_i_package_container_delete_package.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182909_package_events_i_package_container_pull_package.yml b/config/metrics/counts_all/20210216182909_package_events_i_package_container_pull_package.yml
index 71b6eb6df2d..60f25e8cd60 100644
--- a/config/metrics/counts_all/20210216182909_package_events_i_package_container_pull_package.yml
+++ b/config/metrics/counts_all/20210216182909_package_events_i_package_container_pull_package.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182911_package_events_i_package_container_push_package.yml b/config/metrics/counts_all/20210216182911_package_events_i_package_container_push_package.yml
index a1a4a856bce..9093f5e9563 100644
--- a/config/metrics/counts_all/20210216182911_package_events_i_package_container_push_package.yml
+++ b/config/metrics/counts_all/20210216182911_package_events_i_package_container_push_package.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216182917_package_events_i_package_debian_push_package.yml b/config/metrics/counts_all/20210216182917_package_events_i_package_debian_push_package.yml
index fde9ada1a4c..e1264ca45a3 100644
--- a/config/metrics/counts_all/20210216182917_package_events_i_package_debian_push_package.yml
+++ b/config/metrics/counts_all/20210216182917_package_events_i_package_debian_push_package.yml
@@ -18,3 +18,4 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
diff --git a/config/metrics/counts_all/20210216183017_package_events_i_package_tag_delete_package.yml b/config/metrics/counts_all/20210216183017_package_events_i_package_tag_delete_package.yml
index 6ff3af56c3d..658451f5fd3 100644
--- a/config/metrics/counts_all/20210216183017_package_events_i_package_tag_delete_package.yml
+++ b/config/metrics/counts_all/20210216183017_package_events_i_package_tag_delete_package.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216183019_package_events_i_package_tag_pull_package.yml b/config/metrics/counts_all/20210216183019_package_events_i_package_tag_pull_package.yml
index f071e1763c0..f2523e33a66 100644
--- a/config/metrics/counts_all/20210216183019_package_events_i_package_tag_pull_package.yml
+++ b/config/metrics/counts_all/20210216183019_package_events_i_package_tag_pull_package.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/counts_all/20210216183021_package_events_i_package_tag_push_package.yml b/config/metrics/counts_all/20210216183021_package_events_i_package_tag_push_package.yml
index 2c21127d1e8..f2f7731e846 100644
--- a/config/metrics/counts_all/20210216183021_package_events_i_package_tag_push_package.yml
+++ b/config/metrics/counts_all/20210216183021_package_events_i_package_tag_push_package.yml
@@ -17,3 +17,5 @@ tier:
- premium
- ultimate
milestone: "<13.9"
+removed_by_url:
+milestone_removed: "<16.4"
diff --git a/config/metrics/license/20230228110448_installation_creation_date.yml b/config/metrics/license/20230228110448_installation_creation_date.yml
index 4e1ccea4ac4..220bf6e051c 100644
--- a/config/metrics/license/20230228110448_installation_creation_date.yml
+++ b/config/metrics/license/20230228110448_installation_creation_date.yml
@@ -21,3 +21,4 @@ tier:
- free
- premium
- ultimate
+milestone_removed: "<16.4"
diff --git a/config/metrics/schema.json b/config/metrics/schema.json
index 572c4fa4775..3d081a8bca7 100644
--- a/config/metrics/schema.json
+++ b/config/metrics/schema.json
@@ -63,10 +63,9 @@
},
"milestone_removed": {
"type": [
- "string",
- "null"
+ "string"
],
- "pattern": "^[0-9]+\\.[0-9]+$"
+ "pattern": "^<?[0-9]+\\.[0-9]+$"
},
"introduced_by_url": {
"type": [
@@ -222,6 +221,21 @@
"events"
]
}
+ },
+ {
+ "if": {
+ "properties": {
+ "status": {
+ "const": "removed"
+ }
+ }
+ },
+ "then": {
+ "required": [
+ "removed_by_url",
+ "milestone_removed"
+ ]
+ }
}
]
}
diff --git a/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml b/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
index 9f136ba3cc1..9a3efcbee97 100644
--- a/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
+++ b/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml
@@ -7,7 +7,7 @@ product_stage: protect_stage_was_removed
product_group: container_security_group_was_removed
value_type: boolean
status: removed
-milestone_removed: 14.0
+milestone_removed: "14.0"
time_frame: none
data_source: system
distribution:
@@ -19,3 +19,4 @@ tier:
- ultimate
performance_indicator_type: []
milestone: "<13.9"
+removed_by_url:
diff --git a/db/docs/p_ci_builds.yml b/db/docs/p_ci_builds.yml
index 757d609dd4b..ca01e89de09 100644
--- a/db/docs/p_ci_builds.yml
+++ b/db/docs/p_ci_builds.yml
@@ -2,15 +2,10 @@
table_name: p_ci_builds
classes:
- Ci::Bridge
-- Ci::Bridge::Partitioned
- Ci::Build
-- Ci::Build::Partitioned
- Ci::Processable
-- Ci::Processable::Partitioned
- CommitStatus
-- CommitStatus::Partitioned
- GenericCommitStatus
-- GenericCommitStatus::Partitioned
feature_categories:
- continuous_integration
description: Routing table for ci_builds
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index 1b401fef02f..bbf780907fe 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -28931,6 +28931,7 @@ Name of the feature that the callout is for.
| <a id="usercalloutfeaturenameenumsecurity_configuration_devops_alert"></a>`SECURITY_CONFIGURATION_DEVOPS_ALERT` | Callout feature name for security_configuration_devops_alert. |
| <a id="usercalloutfeaturenameenumsecurity_configuration_upgrade_banner"></a>`SECURITY_CONFIGURATION_UPGRADE_BANNER` | Callout feature name for security_configuration_upgrade_banner. |
| <a id="usercalloutfeaturenameenumsecurity_newsletter_callout"></a>`SECURITY_NEWSLETTER_CALLOUT` | Callout feature name for security_newsletter_callout. |
+| <a id="usercalloutfeaturenameenumsecurity_policy_protected_branch_modification"></a>`SECURITY_POLICY_PROTECTED_BRANCH_MODIFICATION` | Callout feature name for security_policy_protected_branch_modification. |
| <a id="usercalloutfeaturenameenumsecurity_training_feature_promotion"></a>`SECURITY_TRAINING_FEATURE_PROMOTION` | Callout feature name for security_training_feature_promotion. |
| <a id="usercalloutfeaturenameenumsubmit_license_usage_data_banner"></a>`SUBMIT_LICENSE_USAGE_DATA_BANNER` | Callout feature name for submit_license_usage_data_banner. |
| <a id="usercalloutfeaturenameenumsuggest_pipeline"></a>`SUGGEST_PIPELINE` | Callout feature name for suggest_pipeline. |
diff --git a/doc/architecture/blueprints/transfer_data/index.md b/doc/architecture/blueprints/transfer_data/index.md
new file mode 100644
index 00000000000..9eea86d91e7
--- /dev/null
+++ b/doc/architecture/blueprints/transfer_data/index.md
@@ -0,0 +1,141 @@
+---
+status: proposed
+creation-date: "2023-09-07"
+authors: [ "@vyaklushin" ]
+approvers: [ "@ofernandez2", "@sean_carroll" ]
+coach: ["@andrewn", "@grzesiek"]
+owning-stage: "~group::source_code"
+participating-stages: []
+---
+
+# Transfer data
+
+## Summary
+
+GitLab already provides users transparency on their Usage Quotas.
+
+We currently display data about:
+
+- used license seats
+- used storage
+- CI/CD minutes usage
+
+But we don't collect and present transfer data (egress traffic caused by
+various parts of the application).
+
+Collecting data about number of transferred bytes between clients, customers
+and services will allow us to discover new efficiencies and reduce the
+operational risk. We want to better understand the data transfer
+patterns across the whole application stack.
+
+The goal of this blueprint to describe steps we need to do to achieve the result.
+
+### Goals
+
+Explore various solutions to store, process and present transfer data across the
+whole application stack.
+
+## Proposal
+
+There are different types of transferred data.
+
+| Type | Description |
+| --------------- | ----------------------------------------------------------- |
+| `Repository` | Egress data related to Git `fetch` operations (pull, clone) |
+| `Artifacts` | Artifacts transfer caused by direct and proxied egress |
+| `Pages` | Pages egress (depends on Artifacts API) |
+| `Packages` | Package registry egress |
+| `Registry` | Container registry egress |
+| `Uploads` | Object store egress |
+
+Each type has different implementations and can be measured separately but
+collection of metadata / data transfer telemetry and consuming / visualizing it,
+should be built on top of the same abstraction.
+
+## Overview
+
+```mermaid
+flowchart TB
+
+ A[Applications] -->|send logs| Pub(Google Pub/Sub)
+ Pub -->JSONParser
+
+
+ subgraph DataflowPipeline
+ direction TB
+
+ JSONParser -->|selects only JSON lines| LogProcessor
+ LogProcessor -->|insert only data transfer logs|ClickHouse
+ end
+
+ClickHouse -->|query transfer logs| Rails
+```
+
+### Applications
+
+Every application produces logs in structured format. Logs related
+to transfer data requests have metadata fields that include the
+number of bytes transferred, namespace, project, and timestamp
+of the egress event.
+
+### Google Pub/Sub
+
+Application logs are collected and sent to Google Pub/Sub.
+Pub/Sub allows to subscribe to topics and read incoming logs.
+
+### Dataflow pipeline
+
+[Dataflow](https://cloud.google.com/dataflow/docs/overview) is a Google
+Cloud unified stream and batch data processing that's serverless, fast
+, and cost-effective. It's built on the open-source
+[Apache Beam](https://beam.apache.org/) project.
+
+Dataflow pipeline provides a data processing abstraction that can be written
+in Java, Python or Go.
+
+The Dataflow pipeline is a core of the processing logic. It relies on the streaming
+implementation of Dataflow. The pipeline subscribes to Pub/Sub topics,
+reads, processes logs, and inserts them into ClickHouse database.
+
+### ClickHouse
+
+ClickHouse is designed to provide a fast access to work with massive
+data sets. It will allow customers to query aggregated data for
+dynamic timeframes.
+
+ClickHouse is an abstract store for logs. The Dataflow pipeline will
+transform different input sources into consistent structure to be
+stored in ClickHouse. That allows to support various inputs and formats
+without affecting ClickHouse-stored timeseries.
+
+ClickHouse table schema
+
+```sql
+CREATE TABLE transfer_data
+(
+ created_at DateTime,
+ bytes UInt64,
+ project String,
+ namespace String,
+ type String
+)
+ENGINE = MergeTree
+PRIMARY KEY (project, namespace)
+```
+
+`created_at` - a timestamp of the event
+`bytes` - a number of transferred bytes
+`project` - a full project path
+`namespace` - a root namespace of the project
+`type` - a type of egress (`git`, `container_registry`, ...)
+
+### Rails
+
+Rails application uses [a gem to connect and query ClickHouse](../../../development/database/clickhouse/clickhouse_within_gitlab.md).
+Customers will be able see their transfer data details in their dashboard.
+They can request a transfer data report for their whole namespace or
+for particular projects.
+
+## Implementation proposals
+
+- [Repository egress](repository.md)
diff --git a/doc/architecture/blueprints/transfer_data/repository.md b/doc/architecture/blueprints/transfer_data/repository.md
new file mode 100644
index 00000000000..7d3b6be8150
--- /dev/null
+++ b/doc/architecture/blueprints/transfer_data/repository.md
@@ -0,0 +1,67 @@
+---
+status: proposed
+creation-date: "2023-09-07"
+authors: [ "@vyaklushin" ]
+approvers: [ "@ofernandez2", "@sean_carroll" ]
+coach: ["@andrewn", "@grzesiek"]
+owning-stage: "~group::source_code"
+participating-stages: []
+---
+
+# Repository egress
+
+Users generate Repository egress events for every fetch operation in Git. It
+includes commands like `git clone`, `git fetch` and `git pull`, because all of
+them request data from Gitaly that needs to be delivered to the end user.
+
+Two main clients of Gitaly traffic are
+[GitLab Shell](https://gitlab.com/gitlab-org/gitlab-shell)(for SSH traffic)
+and
+[Workhorse](https://gitlab.com/gitlab-org/gitlab/-/tree/master/workhorse)
+(for HTTP traffic).
+
+Both clients send `git-upload-pack` command to Gitaly and stream back the
+Git response that contains requested changes.
+
+## Current metrics
+
+| Service | Number of `git-upload-pack` events (per day) |
+|--------------|----------------------------------------------|
+| Workhorse | ~80 million |
+| GitLab Shell | ~85 million |
+| Gitaly | ~165 million (combined traffic) |
+
+Kibana links to see current metrics for each service:
+
+- [Workhorse](https://log.gprd.gitlab.net/goto/cf799060-e2b2-11ed-8afc-c9851e4645c0)
+- [GitLab Shell](https://log.gprd.gitlab.net/goto/bd93f5c0-e2b2-11ed-a017-0d32180b1390)
+- [Gitaly](https://log.gprd.gitlab.net/goto/9221c230-e2b4-11ed-8afc-c9851e4645c0)
+
+Total number of events:
+
+- 165 million per day
+- 7.5 million per hour
+- 120 thousand per minute
+
+## Logs structure
+
+### HTTP traffic
+
+Captured in Workhorse logs.
+
+| Fields | Description |
+|---------------|-----------------------------|
+| written_bytes | number of bytes transferred |
+| uri | namespace and project name |
+| timestamp | timestamp of Egress event |
+
+### SSH traffic
+
+Captured in GitLab Shell logs.
+
+| Fields | Description |
+|---------------|-----------------------------|
+| written_bytes | number of bytes transferred |
+| project | full project name |
+| root_namspace | root namespace |
+| timestamp | timestamp of Egress event |
diff --git a/doc/ci/runners/new_creation_workflow.md b/doc/ci/runners/new_creation_workflow.md
index 9a3886430de..c4c2fbebb12 100644
--- a/doc/ci/runners/new_creation_workflow.md
+++ b/doc/ci/runners/new_creation_workflow.md
@@ -145,31 +145,13 @@ Existing runners will continue to work as usual. This change only affects regist
## Creating runners programmatically
-In GitLab 15.11 and later, you can use the [POST /user/runners REST API](../../api/users.md#create-a-runner) to create a runner as an authenticated user. This should only be used if the runner configuration is dynamic or not reusable. If the runner configuration is static, you should
-reuse the runner authentication token of an existing runner. For more information, see [How to automate the creation of GitLab Runners](https://about.gitlab.com/blog/2023/07/06/how-to-automate-creation-of-runners/).
+In GitLab 15.11 and later, you can use the [POST /user/runners REST API](../../api/users.md#create-a-runner)
+to create a runner as an authenticated user. This should only be used if the runner configuration is dynamic
+or not reusable. If the runner configuration is static, you should reuse the runner authentication token of
+an existing runner.
-The following snippet shows how a group runner could be created and registered with a
-[Group Access Token](../../user/group/settings/group_access_tokens.md) using the new creation flow.
-The process is very similar when using [Project Access Tokens](../../user/project/settings/project_access_tokens.md)
-or [Personal Access Tokens](../../user/profile/personal_access_tokens.md):
-
-```shell
-# `GROUP_ID` contains the numerical ID of the group where the runner will be created
-# `GITLAB_TOKEN` can be a Personal Access Token for a group owner, or a Group Access Token on the respective group
-# created with `owner` access and `api` scope.
-#
-# The output will be parsed by `jq` to extract the token of the newly created runner
-RUNNER_TOKEN=$(curl --silent --request POST "https://gitlab.com/api/v4/user/runners" \
- --header "private-token: $GITLAB_TOKEN" \
- --data runner_type=group_type --data group_id=$GROUP_ID --data 'description=My runner' --data 'tag_list=java,linux' \
- | jq -r '.token')
-
-gitlab-runner register \
- --non-interactive \
- --executor "shell" \
- --url "https://gitlab.com/" \
- --token "$RUNNER_TOKEN"
-```
+For instructions about how to automate runner creation and registration, see the tutorial,
+[Automate runner creation and registration](../../tutorials/automate_runner_creation/index.md).
## Installing GitLab Runner with Helm chart
diff --git a/doc/development/ai_features/index.md b/doc/development/ai_features/index.md
index ea8e52c5271..e1d3ae36570 100644
--- a/doc/development/ai_features/index.md
+++ b/doc/development/ai_features/index.md
@@ -563,6 +563,11 @@ Gitlab::Llm::VertexAi::Client.new(user)
Gitlab::Llm::Anthropic::Client.new(user)
```
+### Monitoring Ai Actions
+
+- Error ratio and response latency apdex for each Ai action can be found on [Sidekiq Service dashboard](https://dashboards.gitlab.net/d/sidekiq-main/sidekiq-overview?orgId=1) under "SLI Detail: llm_completion".
+- Spent tokens, usage of each Ai feature and other statistics can be found on [periscope dashboard](https://app.periscopedata.com/app/gitlab/1137231/Ai-Features).
+
### Add Ai Action to GraphQL
TODO
diff --git a/doc/development/cloud_connector/code_suggestions_for_sm.md b/doc/development/cloud_connector/code_suggestions_for_sm.md
new file mode 100644
index 00000000000..bd8a39bc0d6
--- /dev/null
+++ b/doc/development/cloud_connector/code_suggestions_for_sm.md
@@ -0,0 +1,259 @@
+---
+stage: Data Stores
+group: Cloud Connector
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
+---
+
+# Cloud Connector MVC: Code Suggestions for Self-Managed/GitLab Dedicated
+
+This document presents the systems and their interactions involved in delivering
+the [Code Suggestions AI feature](../../user/project/repository/code_suggestions/index.md)
+to self-managed and GitLab Dedicated customers. It was considered the MVC
+or initial iteration toward a more extensive vision called [GitLab Cloud Connector](https://gitlab.com/groups/gitlab-org/-/epics/308)
+(formerly "GitLab Plus"), which will allow self-managed customers to benefit from
+features operated by us.
+
+In the context of this document, and any architectural discussions around Cloud Connector features,
+it is important to understand that **Cloud Connector is not a system**. It is an umbrella term
+for all the projects we engage in that make existing SaaS-only features available to
+self-managed and GitLab Dedicated customers. Some of these may be sufficiently similar to share
+solutions, including new systems that deliver these features, but this may not extend to all
+features covered by the Cloud Connector umbrella project.
+
+For the remainder of this document we do not distinguish between self-managed and GitLab Dedicated
+use cases, as at the time of this writing, they are identical. We are exploring any necessary
+deviations needed specifically for GitLab Dedicated in [issue 410394](https://gitlab.com/gitlab-org/gitlab/-/issues/410394).
+
+## Problem statement
+
+Code Suggestions for self-managed users work almost identically to GitLab SaaS:
+
+1. The user:
+ 1. Connects their IDE to a GitLab instance.
+ 1. Requests a code suggestion through their IDE.
+1. The GitLab instance:
+ 1. Authenticates the user and performs instance-local permission and configuration checks.
+ 1. Produces a [JSON Web Token](https://jwt.io/) to use with the [AI gateway](../../architecture/blueprints/ai_gateway/index.md).
+ 1. Forwards the request to the AI gateway with this access token.
+ 1. Returns the response back to the user's IDE.
+
+The unique challenge we had to solve in the context of self-managed instances is step 2b:
+For GitLab SaaS, we can make an instance-local decision about whether a user is allowed to use Code Suggestions
+(or any other feature for that matter) and contact the AI gateway, but for self-managed users we cannot.
+This is because we cannot trust a self-managed instance to produce such a token as we have no control over them.
+In the context of Cloud Connector, this means providing a system for permission delegation that takes into account
+self-managed instance billing and license data, so that once we establish that an instance is eligible
+for this feature based on its payment history, we can issue an access token to this instance.
+
+The architecture and data flow for this solution are outlined in the following section.
+
+## Architecture
+
+NOTE:
+This section covers the architectural details relevant to Code Suggestions in the context of Cloud Connector.
+A more high-level overview can be found in [AI Architecture](../ai_architecture.md).
+
+The Code Suggestions architecture for Cloud Connector serves as a blueprint to implement
+similar features in the future. As mentioned above, the primary problem to solve is verifying that a request
+coming from a self-managed instance is eligible to obtain Code Suggestions from the AI gateway. This can
+be broken down further into two smaller problems:
+
+1. **Instance eligibility.** Code suggestions are a paid feature. The source of truth for subscription state is the
+ customers portal (CustomersDot). A self-managed GitLab instance must therefore involve
+ CustomersDot in the decision for whether an instance is allowed to request code suggestions
+ on behalf of a user before it forwards this request to the AI gateway.
+1. **AI gateway authentication.** Because the AI gateway has no concept of self-managed instance or user identity,
+ the AI gateway must verify that the instance from which a request originates is legitimate.
+ This is handled almost identically to GitLab SaaS. The relevant differences are covered in later sections.
+
+Three systems are involved in the entire flow, with the following responsibilities:
+
+1. **GitLab Rails application:**
+ - Authenticates the current user requesting a code suggestion, as it would any other API request.
+ - Manages and checks instance-level configuration related to Code Suggestions for self-managed installations.
+ - [Runs a background cron job](#gitlabcustomersdot-token-synchronization) that regularly fetches an JWT access token for use with the AI gateway from CustomersDot.
+ - Calls the AI gateway with the given JWT access token, potentially enriching the call
+ with instance-local context.
+1. **CustomersDot:**
+ - Provides a user interface for customers to purchase Code Suggestions.
+ - When a GitLab instance syncs with CustomersDot, checks whether it
+ has an active Code Suggestions purchase, and issues a cryptographically signed JWT access token scoped
+ to the Code Suggestions feature. This mechanism is extensible to other Cloud Connector features.
+ - Acts as an [OIDC Provider](https://openid.net/developers/how-connect-works/) by offering discovery and configuration endpoints
+ that serve the public keys required to validate a Code Suggestions JWT. The AI gateway
+ calls these endpoints (see below.)
+1. **AI gateway:**
+ - Services Code Suggestions requests coming from the GitLab application.
+ - Synchronizes with CustomersDot OIDC endpoints to obtain token validation keys.
+ - Validates the JWT access token sent by a GitLab instance using these keys.
+ This establishes the necessary trust relationship between any GitLab instance
+ and the AI gateway, which is hosted by us.
+
+It is important to highlight that from the perspective of the AI gateway, all requests are equal.
+As long as the access token can be verified to be authentic, the request will succeed, be that
+from a GitLab SaaS or self-managed user.
+
+The following diagram shows how these systems interact at a high level:
+
+<!--
+ Component architecture sources for PlantUML diagram source code:
+ https://gitlab.com/gitlab-org/gitlab/-/snippets/3597299
+
+ The comments do not render correctly in various tested browser, so it is included as a binary image instead.
+-->
+![Code Suggestions architecture and components](img/code_suggestions_components.png)
+
+## Implementation details and data flow
+
+This section breaks down the three primary mechanisms used to deliver Code Suggestions
+to self-managed instances:
+
+1. GitLab/CustomersDot token synchronization.
+1. Proxying AI gateway requests.
+1. AI gateway access token validation.
+
+The sequence diagram below shows how a typical flow might look like.
+
+```mermaid
+sequenceDiagram
+ autonumber
+ participant U as User
+ participant VS as IDE
+ participant SM as GitLab
+ participant CD as CustomersDot
+ participant AI as AI gateway<br/>(aka Model Gateway)
+
+ Note over SM,CD: AI gateway token synchronization
+ loop Sidekiq cron job
+ SM->>CD: sync subscription seat data
+ CD->>CD: verify eligibility
+ Note over CD,SM: Token validity tied to subscription
+ CD-->>SM: seat data + AI gateway access token (JWT)
+ SM->>SM: store seat data + JWT
+ end
+ Note over U,AI: Developer persona
+ U->>SM: create PAT
+ SM-->>U: PAT
+ U->>VS: configure with PAT
+ loop Use code suggestions
+ Note over VS,AI: All requests via AI abstraction layer
+ VS->>SM: get code suggestions with PAT
+ SM->>SM: auth user with PAT
+ SM->>AI: fetch code suggestions with JWT
+ alt Validation key missing
+ AI->>CD: fetch JWKS
+ AI->>AI: cache key set in Redis
+ else
+ AI->>AI: load key set
+ end
+ AI->>AI: validate JWT with<br/>cached JWKS keys
+ AI-->>SM: code suggestions
+ SM-->>VS: code suggestions
+ end
+```
+
+### GitLab/CustomersDot token synchronization
+
+The first problem we had to solve was to determine whether any given self-managed GitLab is
+allowed to use Code Suggestions. The mechanism described below was built for Code
+Suggestions but could serve any other Cloud Connector feature tied to a Cloud License
+subscription.
+
+The source of truth for this from the perspective of the GitLab Rails application is CustomersDot,
+which itself converses with Zuora (a third party subscription service) to determine which
+subscriptions or add-ons are active for a given customer.
+
+Unlike with GitLab SaaS, CustomersDot does not call back into self-managed GitLab instances when
+subscriptions or add-ons are purchased. Instead, a daily synchronization job is scheduled in
+Sidekiq that compares purchases against actual seat usage using the `/api/v1/seat_links`
+REST endpoint on CustomersDot. An instance authenticates itself by posting
+its license key as part of the request, which CustomersDot uses to look up subscription data
+connected to this license, therefore using the license key as a form of authentication token.
+
+If CustomersDot deems the instance eligible, it embeds a Code Suggestions token in the response
+payload:
+
+```json
+"service_tokens": {
+ "code_suggestions": {
+ "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0M2FlOWI4...qmvMVhRS01YRc6a5LaBbhU_m5tw",
+ "expires_at": 1695121894
+ }
+}
+```
+
+- `token` is an [encoded JSON Web Token](https://jwt.io/) signed with RSA256, an asymmetric
+ secure signing algorithm. This allows other services who hold the corresponding public key
+ to validate the authenticity of this token. The token carries [claims](https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-token-claims#registered-claims) that receivers
+ can verify, most importantly the `aud` (audience) claim. We use the audience claim to scope
+ access to particular features, such as Code Suggestions. Each paid feature requires a separate
+ token to be issued with a corresponding claim.
+- `expires_at`: UNIX epoch timestamp of the token's expiration time. Tokens currently have
+ an expiration time of 3 days. This TTL was chosen to strike a balance between regularly
+ rolling over access tokens and some leeway in case the token sync fails.
+
+NOTE:
+To sign tokens, CustomersDot maintains a private key.
+For security reasons, we rotate this key on a regular basis. For more information, refer
+to [the key rotation process for CustomersDot](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/main/doc/architecture/add_ons/code_suggestions/authorization_for_self_managed.md#jwk-signing-key-rotation).
+
+Upon receiving a response, GitLab Rails stores this token in Postgres and removes any
+other tokens it may have previously stored. When users request a code suggestion, GitLab
+can then load this token and attach it to AI gateway requests, which is described next.
+
+### Proxying AI gateway requests
+
+Given the JWT access token described above, a GitLab instance is ready to serve Code Suggestions
+requests to users. Upon receiving a request to `/api/v4/code_suggestions/completions`, GitLab:
+
+1. Authenticates this request with a user's Personal Access Token (PAT), as it would any REST API call.
+ Users configure this token in their IDE settings.
+1. Verifies that the administrator has the Code Suggestions feature enabled and the instance
+ license tier includes this feature.
+1. Loads the JWT access token from the database.
+1. Forwards the request to the AI gateway with the token attached.
+
+As with GitLab SaaS requests, the downstream call uses Workhorse's `senddata` feature. This
+mechanism yields control to Workhorse by responding with a `send-url` header field. Workhorse
+then intercepts this response and calls into the AI gateway given the request URL, headers
+and payload provided through `send-url`. This relieves the Puma process from stalling on downstream I/O,
+removing a scalability bottleneck.
+
+This process is mostly identical to GitLab SaaS. The biggest difference is
+how GitLab Rails resolves user permissions and loads the access token. GitLab SaaS can self-issue the access token
+because billing is not handled by CustomersDot.
+
+### AI gateway access token validation
+
+The next problem we had to solve was authenticating the Code Suggestions requests that a self-managed GitLab sends
+to the AI gateway on behalf of a user. The AI gateway does not and should not have any knowledge
+of a customer's instance. Instead, the gateway verifies the request's authenticity by decoding the JWT
+access token enclosed in the request using a public key it fetches from CustomersDot, which is
+the original issuer of the token.
+
+The AI gateway accomplishes this by first requesting a [JSON Web Key Set](https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-key-sets)
+from CustomersDot. The keyset obtained from the JWKS endpoint is then cached for 24 hours and used to decode any
+JWTs attached to Code Suggestions requests. Note that token expiration is implicitly enforced
+in that expired tokens fail to decode, in which case the AI gateway rejects this request.
+
+The steps to obtain the JWKS and verify tokens are detailed in [the AI service verification sequence diagram](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/main/doc/architecture/add_ons/code_suggestions/authorization_for_self_managed.md#gitlab-hosted-ai-service-flow-to-verify-jwt-token) for CustomersDot.
+
+This process is mostly identical to GitLab SaaS. The only difference is that the AI gateway obtains validation keys
+from CustomersDot instead of GitLab SaaS, which self-issues its own tokens.
+
+## Gaps and outlook
+
+Code Suggestions was the first Cloud Connector feature we looked at, but we expect many more
+to be designed and built, some of which may require different technical approaches from what is
+documented here.
+
+Some areas that are not currently well-defined or understood include:
+
+- Support for GitLab Dedicated and regional deployments. This is currently being investigated in
+ [issue 410394](https://gitlab.com/gitlab-org/gitlab/-/issues/410394).
+- The impact on end-user experience when a GitLab instance is deployed to a geographic region that
+ has high latency overhead when connecting to a GitLab service in US-east.
+- There are some known usability issues with relying solely on a daily Sidekiq job to fetch access
+ tokens. We are exploring ways to improve this in [this epic](https://gitlab.com/groups/gitlab-org/-/epics/11289).
+- Rate-limiting requests at the GitLab instance level was out of scope for the MVC. We are exploring
+ this idea in [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/420123).
diff --git a/doc/development/cloud_connector/img/code_suggestions_components.png b/doc/development/cloud_connector/img/code_suggestions_components.png
new file mode 100644
index 00000000000..3f41d1d1a6b
--- /dev/null
+++ b/doc/development/cloud_connector/img/code_suggestions_components.png
Binary files differ
diff --git a/doc/development/fe_guide/customizable_dashboards.md b/doc/development/fe_guide/customizable_dashboards.md
index 211a5ffd5ce..476a8acabd0 100644
--- a/doc/development/fe_guide/customizable_dashboards.md
+++ b/doc/development/fe_guide/customizable_dashboards.md
@@ -74,15 +74,15 @@ export const pageViewsOverTime = {
dimensions: [],
filters: [
{
- member: 'SnowplowTrackedEvents.event',
+ member: 'TrackedEvents.event',
operator: 'equals',
values: ['page_view']
}
],
- measures: ['SnowplowTrackedEvents.pageViewsCount'],
+ measures: ['TrackedEvents.pageViewsCount'],
timeDimensions: [
{
- dimension: 'SnowplowTrackedEvents.derivedTstamp',
+ dimension: 'TrackedEvents.derivedTstamp',
granularity: 'day',
},
],
@@ -144,7 +144,7 @@ export const dashboard = {
// Here we override the Cube.js query to get page views per week instead of days.
queryOverrides: {
timeDimensions: {
- dimension: 'SnowplowTrackedEvents.derivedTstamp',
+ dimension: 'TrackedEvents.derivedTstamp',
granularity: 'week',
},
},
diff --git a/doc/development/internal_analytics/service_ping/metrics_dictionary.md b/doc/development/internal_analytics/service_ping/metrics_dictionary.md
index 468522dc0d2..e677118fff6 100644
--- a/doc/development/internal_analytics/service_ping/metrics_dictionary.md
+++ b/doc/development/internal_analytics/service_ping/metrics_dictionary.md
@@ -46,9 +46,9 @@ Each metric is defined in a separate YAML file consisting of a number of fields:
| `performance_indicator_type` | no | `array`; may be set to one of [`gmau`, `smau`, `paid_gmau`, `umau` or `customer_health_score`](https://about.gitlab.com/handbook/business-technology/data-team/data-catalog/xmau-analysis/). |
| `tier` | yes | `array`; may contain one or a combination of `free`, `premium` or `ultimate`. The [tier](https://about.gitlab.com/handbook/marketing/brand-and-product-marketing/product-and-solution-marketing/tiers/#definitions) where the tracked feature is available. This should be verbose and contain all tiers where a metric is available. |
| `milestone` | yes | The milestone when the metric is introduced and when it's available to self-managed instances with the official GitLab release. |
-| `milestone_removed` | no | The milestone when the metric is removed. |
+| `milestone_removed` | no | The milestone when the metric is removed. Required for removed metrics. |
| `introduced_by_url` | no | The URL to the merge request that introduced the metric to be available for self-managed instances. |
-| `removed_by_url` | no | The URL to the merge request that removed the metric. |
+| `removed_by_url` | no | The URL to the merge request that removed the metric. Required for removed metrics. |
| `repair_issue_url` | no | The URL of the issue that was created to repair a metric with a `broken` status. |
| `options` | no | `object`: options information needed to calculate the metric value. |
| `skip_validation` | no | This should **not** be set. [Used for imported metrics until we review, update and make them valid](https://gitlab.com/groups/gitlab-org/-/epics/5425). |
diff --git a/doc/user/application_security/vulnerabilities/index.md b/doc/user/application_security/vulnerabilities/index.md
index 6bac4e9bc90..34c57292767 100644
--- a/doc/user/application_security/vulnerabilities/index.md
+++ b/doc/user/application_security/vulnerabilities/index.md
@@ -27,7 +27,7 @@ the Vulnerability Report's [Activity filter](../vulnerability_report/index.md#ac
## Explaining a vulnerability **(ULTIMATE SAAS BETA)**
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/10368) in GitLab 16.0 as an [Experiment](../../../policy/experiment-beta-support.md#experiment) on GitLab.com.
-> - Promoted to [Beta](../../../policy/experiment-beta-support.md#beta) status in 16.2.
+> - Promoted to [Beta](../../../policy/experiment-beta-support.md#beta) status in GitLab 16.2.
GitLab can help you with a vulnerability by using a large language model to:
@@ -37,8 +37,8 @@ GitLab can help you with a vulnerability by using a large language model to:
### Explain a vulnerability
-Use the explain this vulnerability feature to better understand a vulnerability and its possible
-mitigation.
+Explain a vulnerability with GitLab Duo Vulnerability summary. Use the explanation to better
+understand a vulnerability and its possible mitigation.
Prerequisites:
@@ -46,7 +46,7 @@ Prerequisites:
- You must be a member of the project.
- The vulnerability must be a SAST finding.
-Learn more about [how to enable all AI features](../../ai_features.md#enable-aiml-features).
+Learn more about [how to enable all GitLab Duo features](../../ai_features.md#enable-aiml-features).
To explain the vulnerability:
diff --git a/doc/user/project/repository/code_suggestions/index.md b/doc/user/project/repository/code_suggestions/index.md
index fd0d99b5a84..4f0c0b2c9a6 100644
--- a/doc/user/project/repository/code_suggestions/index.md
+++ b/doc/user/project/repository/code_suggestions/index.md
@@ -16,7 +16,7 @@ Beta users should read about the [known limitations](#known-limitations). We loo
Write code more efficiently by using generative AI to suggest code while you're developing.
-Code Suggestions are available:
+GitLab Duo Code Suggestions are available:
- On [self-managed](self_managed.md) and [SaaS](saas.md).
- In VS Code, Microsoft Visual Studio, JetBrains IDEs, and Neovim. You must have the corresponding GitLab extension installed.
diff --git a/doc/user/project/repository/code_suggestions/saas.md b/doc/user/project/repository/code_suggestions/saas.md
index 3da854e417b..174c227b6fe 100644
--- a/doc/user/project/repository/code_suggestions/saas.md
+++ b/doc/user/project/repository/code_suggestions/saas.md
@@ -15,10 +15,10 @@ type: index, reference
Write code more efficiently by using generative AI to suggest code while you're developing.
-Usage of Code Suggestions is governed by the [GitLab Testing Agreement](https://about.gitlab.com/handbook/legal/testing-agreement/).
+Usage of GitLab Duo Code Suggestions is governed by the [GitLab Testing Agreement](https://about.gitlab.com/handbook/legal/testing-agreement/).
Learn about [data usage when using Code Suggestions](index.md#code-suggestions-data-usage).
-## Enable Code Suggestions
+## Enable Code Suggestions
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121079) in GitLab 16.1 as [Beta](../../../../policy/experiment-beta-support.md#beta).
diff --git a/doc/user/project/repository/code_suggestions/self_managed.md b/doc/user/project/repository/code_suggestions/self_managed.md
index 3d14ac871fe..b6de4e632b9 100644
--- a/doc/user/project/repository/code_suggestions/self_managed.md
+++ b/doc/user/project/repository/code_suggestions/self_managed.md
@@ -14,7 +14,7 @@ type: index, reference
Write code more efficiently by using generative AI to suggest code while you're developing.
-Code Suggestions are available on GitLab Enterprise Edition.
+GitLab Duo Code Suggestions are available on GitLab Enterprise Edition.
Cloud licensing is required for Premium and Ultimate subscription tiers.
Code Suggestions are not available for GitLab Community Edition.
@@ -180,7 +180,7 @@ authentication to the self-managed instance, a token is generated.
The IDE/editor then uses this token to securely transmit data directly to
GitLab.com's Code Suggestions service for processing.
-The Code Suggestion service then securely returns an AI-generated code suggestion.
+The Code Suggestions service then securely returns an AI-generated code suggestion.
Neither GitLab nor Google Vertex AI Codey APIs have any visibility into a self-managed customer's code other than
what is sent to generate the code suggestion.
diff --git a/doc/user/project/repository/code_suggestions/troubleshooting.md b/doc/user/project/repository/code_suggestions/troubleshooting.md
index f63dbac03b6..c0cdb3cc32d 100644
--- a/doc/user/project/repository/code_suggestions/troubleshooting.md
+++ b/doc/user/project/repository/code_suggestions/troubleshooting.md
@@ -7,7 +7,7 @@ type: index, reference
# Troubleshooting Code Suggestions **(FREE ALL BETA)**
-When working with Code Suggestions, you might encounter the following issues.
+When working with GitLab Duo Code Suggestions, you might encounter the following issues.
## Code Suggestions aren't displayed
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 4dcca4bdbf9..e967b88e500 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -709,8 +709,8 @@ module API
namespace_id: namespace_id,
project_id: project_id
)
- rescue StandardError => error
- Gitlab::AppLogger.warn("Internal Event tracking event failed for event: #{event_name}, message: #{error.message}")
+ rescue StandardError => e
+ Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, event_name: event_name)
end
def order_by_similarity?(allow_unauthorized: true)
diff --git a/lib/gitlab/pages.rb b/lib/gitlab/pages.rb
index 367fe7639da..700a39c6b41 100644
--- a/lib/gitlab/pages.rb
+++ b/lib/gitlab/pages.rb
@@ -24,6 +24,21 @@ module Gitlab
::Gitlab::CurrentSettings.current_application_settings.force_pages_access_control
end
+ def enabled?
+ Gitlab.config.pages.enabled
+ end
+
+ def add_unique_domain_to(project)
+ return unless enabled?
+ # If the project used a unique domain once, it'll always use the same
+ return if project.project_setting.pages_unique_domain_in_database.present?
+
+ project.project_setting.pages_unique_domain_enabled = true
+ project.project_setting.pages_unique_domain = Gitlab::Pages::RandomDomain.generate(
+ project_path: project.path,
+ namespace_path: project.parent.full_path)
+ end
+
def multiple_versions_enabled_for?(project)
return false if project.blank?
diff --git a/lib/gitlab/prometheus/queries/matched_metric_query.rb b/lib/gitlab/prometheus/queries/matched_metric_query.rb
deleted file mode 100644
index 73de5a11998..00000000000
--- a/lib/gitlab/prometheus/queries/matched_metric_query.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module Prometheus
- module Queries
- class MatchedMetricQuery < BaseQuery
- MAX_QUERY_ITEMS = 40
-
- def query
- groups_data.map do |group, data|
- {
- group: group.name,
- priority: group.priority,
- active_metrics: data[:active_metrics],
- metrics_missing_requirements: data[:metrics_missing_requirements]
- }
- end
- end
-
- private
-
- def groups_data
- metrics_groups = groups_with_active_metrics(Gitlab::Prometheus::MetricGroup.common_metrics)
- lookup = active_series_lookup(metrics_groups)
-
- groups = {}
-
- metrics_groups.each do |group|
- groups[group] ||= { active_metrics: 0, metrics_missing_requirements: 0 }
- active_metrics = group.metrics.count { |metric| metric.required_metrics.all?(&lookup.method(:has_key?)) }
-
- groups[group][:active_metrics] += active_metrics
- groups[group][:metrics_missing_requirements] += group.metrics.count - active_metrics
- end
-
- groups
- end
-
- def active_series_lookup(metric_groups)
- timeframe_start = 8.hours.ago
- timeframe_end = Time.now
-
- series = metric_groups.flat_map(&:metrics).flat_map(&:required_metrics).uniq
-
- lookup = series.each_slice(MAX_QUERY_ITEMS).flat_map do |batched_series|
- client_series(*batched_series, start_time: timeframe_start, end_time: timeframe_end)
- .select(&method(:has_matching_label?))
- .map { |series_info| [series_info['__name__'], true] }
- end
- lookup.to_h
- end
-
- def has_matching_label?(series_info)
- series_info.key?('environment')
- end
-
- def available_metrics
- @available_metrics ||= client_label_values || []
- end
-
- def filter_active_metrics(metric_group)
- metric_group.metrics.select! do |metric|
- metric.required_metrics.all?(&available_metrics.method(:include?))
- end
- metric_group
- end
-
- def groups_with_active_metrics(metric_groups)
- metric_groups.map(&method(:filter_active_metrics)).select { |group| group.metrics.any? }
- end
-
- def metrics_with_required_series(metric_groups)
- metric_groups.flat_map do |group|
- group.metrics.select do |metric|
- metric.required_metrics.all?(&available_metrics.method(:include?))
- end
- end
- end
- end
- end
- end
-end
diff --git a/lib/gitlab/prometheus/queries/validate_query.rb b/lib/gitlab/prometheus/queries/validate_query.rb
deleted file mode 100644
index 160db7d44bc..00000000000
--- a/lib/gitlab/prometheus/queries/validate_query.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module Prometheus
- module Queries
- class ValidateQuery < BaseQuery
- def query(query)
- client_query(query)
- { valid: true }
- rescue Gitlab::PrometheusClient::QueryError, Gitlab::PrometheusClient::ConnectionError => ex
- { valid: false, error: ex.message }
- end
-
- def self.transform_reactive_result(result)
- result[:query] = result.delete :data
- result
- end
- end
- end
- end
-end
diff --git a/lib/gitlab/usage/metric_definition.rb b/lib/gitlab/usage/metric_definition.rb
index 5a321eb7a1a..450575b7223 100644
--- a/lib/gitlab/usage/metric_definition.rb
+++ b/lib/gitlab/usage/metric_definition.rb
@@ -4,7 +4,6 @@ module Gitlab
module Usage
class MetricDefinition
METRIC_SCHEMA_PATH = Rails.root.join('config', 'metrics', 'schema.json')
- SKIP_VALIDATION_STATUS = 'removed'
AVAILABLE_STATUSES = %w[active broken].to_set.freeze
VALID_SERVICE_PING_STATUSES = %w[active broken].to_set.freeze
@@ -177,7 +176,7 @@ module Gitlab
end
def skip_validation?
- !!attributes[:skip_validation] || @skip_validation || attributes[:status] == SKIP_VALIDATION_STATUS
+ !!attributes[:skip_validation] || @skip_validation
end
def events_from_new_structure
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index b24799d4d88..9957b040482 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -41460,9 +41460,6 @@ msgstr ""
msgid "ScanResultPolicy|Attributes are automatically applied by the scanners"
msgstr ""
-msgid "ScanResultPolicy|Block users from modifying protected branches"
-msgstr ""
-
msgid "ScanResultPolicy|Choose criteria type"
msgstr ""
@@ -41472,6 +41469,9 @@ msgstr ""
msgid "ScanResultPolicy|Customized CI Variables"
msgstr ""
+msgid "ScanResultPolicy|Don't show me this again"
+msgstr ""
+
msgid "ScanResultPolicy|Except"
msgstr ""
@@ -41541,9 +41541,15 @@ msgstr ""
msgid "ScanResultPolicy|Prevent approval by merge request's author"
msgstr ""
+msgid "ScanResultPolicy|Prevent branch protection modification"
+msgstr ""
+
msgid "ScanResultPolicy|Protected branch settings"
msgstr ""
+msgid "ScanResultPolicy|Recommended setting"
+msgstr ""
+
msgid "ScanResultPolicy|Remove all approvals when commit is added"
msgstr ""
@@ -41586,6 +41592,9 @@ msgstr ""
msgid "ScanResultPolicy|When enabled, two person approval will be required on all MRs as merge request authors cannot approve their own MRs and merge them unilaterally"
msgstr ""
+msgid "ScanResultPolicy|You have selected any protected branch option as a condition. To better protect your project, it is recommended to enable the protect branch settings. %{linkStart}Learn more.%{linkEnd}"
+msgstr ""
+
msgid "ScanResultPolicy|any commits"
msgstr ""
@@ -47343,9 +47352,6 @@ msgstr[1] ""
msgid "The form contains the following warning:"
msgstr ""
-msgid "The full package metadata sync can add up to 30 GB to GitLab PostgreSQL database. Ensure you have provisioned enough disk space for the database before enabling this feature. We are actively working on reducing this data size in %{link_start}epic 10415%{link_end}."
-msgstr ""
-
msgid "The git server, Gitaly, is not available at this time. Please contact your administrator."
msgstr ""
diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb
index fbd9c4d32cc..cfd6bbf3094 100644
--- a/spec/db/schema_spec.rb
+++ b/spec/db/schema_spec.rb
@@ -234,23 +234,18 @@ RSpec.describe 'Database schema', feature_category: :database do
IGNORED_LIMIT_ENUMS = {
'Analytics::CycleAnalytics::Stage' => %w[start_event_identifier end_event_identifier],
'Ci::Bridge' => %w[failure_reason],
- 'Ci::Bridge::Partitioned' => %w[failure_reason],
'Ci::Build' => %w[failure_reason],
- 'Ci::Build::Partitioned' => %w[failure_reason],
'Ci::BuildMetadata' => %w[timeout_source],
'Ci::BuildTraceChunk' => %w[data_store],
'Ci::DailyReportResult' => %w[param_type],
'Ci::JobArtifact' => %w[file_type],
'Ci::Pipeline' => %w[source config_source failure_reason],
'Ci::Processable' => %w[failure_reason],
- 'Ci::Processable::Partitioned' => %w[failure_reason],
'Ci::Runner' => %w[access_level],
'Ci::Stage' => %w[status],
'Clusters::Cluster' => %w[platform_type provider_type],
'CommitStatus' => %w[failure_reason],
- 'CommitStatus::Partitioned' => %w[failure_reason],
'GenericCommitStatus' => %w[failure_reason],
- 'GenericCommitStatus::Partitioned' => %w[failure_reason],
'InternalId' => %w[usage],
'List' => %w[list_type],
'NotificationSetting' => %w[level],
@@ -282,7 +277,6 @@ RSpec.describe 'Database schema', feature_category: :database do
"ApplicationSetting" => %w[repository_storages_weighted],
"AlertManagement::Alert" => %w[payload],
"Ci::BuildMetadata" => %w[config_options config_variables],
- "Ci::BuildMetadata::Partitioned" => %w[config_options config_variables id_tokens runtime_runner_features secrets],
"ExperimentSubject" => %w[context],
"ExperimentUser" => %w[context],
"Geo::Event" => %w[payload],
diff --git a/spec/lib/api/helpers_spec.rb b/spec/lib/api/helpers_spec.rb
index 2017288b19d..dd62343890e 100644
--- a/spec/lib/api/helpers_spec.rb
+++ b/spec/lib/api/helpers_spec.rb
@@ -791,10 +791,12 @@ RSpec.describe API::Helpers, feature_category: :shared do
end
it 'logs an exception for unknown event' do
- expect(Gitlab::AppLogger).to receive(:warn).with(
- "Internal Event tracking event failed for event: #{unknown_event}, message: Unknown event: #{unknown_event}"
- )
-
+ expect(Gitlab::InternalEvents).to receive(:track_event).and_raise(Gitlab::InternalEvents::UnknownEventError, "Unknown event: #{unknown_event}")
+ expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
+ .with(
+ instance_of(Gitlab::InternalEvents::UnknownEventError),
+ event_name: unknown_event
+ )
helper.track_event(unknown_event, user_id: user_id, namespace_id: namespace_id, project_id: project_id)
end
diff --git a/spec/lib/gitlab/pages_spec.rb b/spec/lib/gitlab/pages_spec.rb
index 20b7821f4d2..c20956788ac 100644
--- a/spec/lib/gitlab/pages_spec.rb
+++ b/spec/lib/gitlab/pages_spec.rb
@@ -86,4 +86,51 @@ RSpec.describe Gitlab::Pages, feature_category: :pages do
end
end
end
+
+ describe '#add_unique_domain_to' do
+ let(:project) { build(:project) }
+
+ context 'when pages is not enabled' do
+ before do
+ stub_pages_setting(enabled: false)
+ end
+
+ it 'does not set pages unique domain' do
+ expect(Gitlab::Pages::RandomDomain).not_to receive(:generate)
+
+ described_class.add_unique_domain_to(project)
+
+ expect(project.project_setting.pages_unique_domain_enabled).to eq(false)
+ expect(project.project_setting.pages_unique_domain).to eq(nil)
+ end
+ end
+
+ context 'when pages is enabled' do
+ before do
+ stub_pages_setting(enabled: true)
+ end
+
+ it 'enables unique domain by default' do
+ allow(Gitlab::Pages::RandomDomain)
+ .to receive(:generate)
+ .and_return('unique-domain')
+
+ described_class.add_unique_domain_to(project)
+
+ expect(project.project_setting.pages_unique_domain_enabled).to eq(true)
+ expect(project.project_setting.pages_unique_domain).to eq('unique-domain')
+ end
+
+ context 'when project already have a unique domain' do
+ it 'does not changes the original unique domain' do
+ expect(Gitlab::Pages::RandomDomain).not_to receive(:generate)
+ project.project_setting.update!(pages_unique_domain: 'unique-domain')
+
+ described_class.add_unique_domain_to(project.reload)
+
+ expect(project.project_setting.pages_unique_domain).to eq('unique-domain')
+ end
+ end
+ end
+ end
end
diff --git a/spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb b/spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb
deleted file mode 100644
index 60449aeef7d..00000000000
--- a/spec/lib/gitlab/prometheus/queries/matched_metric_query_spec.rb
+++ /dev/null
@@ -1,137 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Gitlab::Prometheus::Queries::MatchedMetricQuery do
- include Prometheus::MetricBuilders
-
- let(:metric_group_class) { Gitlab::Prometheus::MetricGroup }
- let(:metric_class) { Gitlab::Prometheus::Metric }
-
- def series_info_with_environment(*more_metrics)
- %w{metric_a metric_b}.concat(more_metrics).map { |metric_name| { '__name__' => metric_name, 'environment' => '' } }
- end
-
- let(:metric_names) { %w{metric_a metric_b} }
- let(:series_info_without_environment) do
- [{ '__name__' => 'metric_a' },
- { '__name__' => 'metric_b' }]
- end
-
- let(:partially_empty_series_info) { [{ '__name__' => 'metric_a', 'environment' => '' }] }
- let(:empty_series_info) { [] }
-
- let(:client) { double('prometheus_client') }
-
- subject { described_class.new(client) }
-
- context 'with one group where two metrics is found' do
- before do
- allow(metric_group_class).to receive(:common_metrics).and_return([simple_metric_group])
- allow(client).to receive(:label_values).and_return(metric_names)
- end
-
- context 'both metrics in the group pass requirements' do
- before do
- allow(client).to receive(:series).and_return(series_info_with_environment)
- end
-
- it 'responds with both metrics as actve' do
- expect(subject.query).to eq([{ group: 'name', priority: 1, active_metrics: 2, metrics_missing_requirements: 0 }])
- end
- end
-
- context 'none of the metrics pass requirements' do
- before do
- allow(client).to receive(:series).and_return(series_info_without_environment)
- end
-
- it 'responds with both metrics missing requirements' do
- expect(subject.query).to eq([{ group: 'name', priority: 1, active_metrics: 0, metrics_missing_requirements: 2 }])
- end
- end
-
- context 'no series information found about the metrics' do
- before do
- allow(client).to receive(:series).and_return(empty_series_info)
- end
-
- it 'responds with both metrics missing requirements' do
- expect(subject.query).to eq([{ group: 'name', priority: 1, active_metrics: 0, metrics_missing_requirements: 2 }])
- end
- end
-
- context 'one of the series info was not found' do
- before do
- allow(client).to receive(:series).and_return(partially_empty_series_info)
- end
- it 'responds with one active and one missing metric' do
- expect(subject.query).to eq([{ group: 'name', priority: 1, active_metrics: 1, metrics_missing_requirements: 1 }])
- end
- end
- end
-
- context 'with one group where only one metric is found' do
- before do
- allow(metric_group_class).to receive(:common_metrics).and_return([simple_metric_group])
- allow(client).to receive(:label_values).and_return('metric_a')
- end
-
- context 'both metrics in the group pass requirements' do
- before do
- allow(client).to receive(:series).and_return(series_info_with_environment)
- end
-
- it 'responds with one metrics as active and no missing requiremens' do
- expect(subject.query).to eq([{ group: 'name', priority: 1, active_metrics: 1, metrics_missing_requirements: 0 }])
- end
- end
-
- context 'no metrics in group pass requirements' do
- before do
- allow(client).to receive(:series).and_return(series_info_without_environment)
- end
-
- it 'responds with one metrics as active and no missing requiremens' do
- expect(subject.query).to eq([{ group: 'name', priority: 1, active_metrics: 0, metrics_missing_requirements: 1 }])
- end
- end
- end
-
- context 'with two groups where metrics are found in each group' do
- let(:second_metric_group) { simple_metric_group(name: 'nameb', metrics: simple_metrics(added_metric_name: 'metric_c')) }
-
- before do
- allow(metric_group_class).to receive(:common_metrics).and_return([simple_metric_group, second_metric_group])
- allow(client).to receive(:label_values).and_return('metric_c')
- end
-
- context 'all metrics in both groups pass requirements' do
- before do
- allow(client).to receive(:series).and_return(series_info_with_environment('metric_c'))
- end
-
- it 'responds with one metrics as active and no missing requiremens' do
- expect(subject.query).to eq([
- { group: 'name', priority: 1, active_metrics: 1, metrics_missing_requirements: 0 },
- { group: 'nameb', priority: 1, active_metrics: 2, metrics_missing_requirements: 0 }
- ]
- )
- end
- end
-
- context 'no metrics in groups pass requirements' do
- before do
- allow(client).to receive(:series).and_return(series_info_without_environment)
- end
-
- it 'responds with one metrics as active and no missing requiremens' do
- expect(subject.query).to eq([
- { group: 'name', priority: 1, active_metrics: 0, metrics_missing_requirements: 1 },
- { group: 'nameb', priority: 1, active_metrics: 0, metrics_missing_requirements: 2 }
- ]
- )
- end
- end
- end
-end
diff --git a/spec/lib/gitlab/prometheus/queries/validate_query_spec.rb b/spec/lib/gitlab/prometheus/queries/validate_query_spec.rb
deleted file mode 100644
index f09fa3548f8..00000000000
--- a/spec/lib/gitlab/prometheus/queries/validate_query_spec.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Gitlab::Prometheus::Queries::ValidateQuery do
- include PrometheusHelpers
-
- let(:api_url) { 'https://prometheus.example.com' }
- let(:client) { Gitlab::PrometheusClient.new(api_url) }
- let(:query) { 'avg(metric)' }
-
- subject { described_class.new(client) }
-
- context 'valid query' do
- before do
- allow(client).to receive(:query).with(query)
- end
-
- it 'passess query to prometheus' do
- expect(subject.query(query)).to eq(valid: true)
-
- expect(client).to have_received(:query).with(query)
- end
- end
-
- context 'invalid query' do
- let(:query) { 'invalid query' }
- let(:error_message) { "invalid parameter 'query': 1:9: parse error: unexpected identifier \"query\"" }
-
- it 'returns invalid' do
- freeze_time do
- stub_prometheus_query_error(
- prometheus_query_with_time_url(query, Time.now),
- error_message
- )
-
- expect(subject.query(query)).to eq(valid: false, error: error_message)
- end
- end
- end
-
- context 'when exceptions occur' do
- context 'Gitlab::HTTP::BlockedUrlError' do
- let(:api_url) { 'http://192.168.1.1' }
-
- let(:message) { "URL is blocked: Requests to the local network are not allowed" }
-
- before do
- stub_application_setting(allow_local_requests_from_web_hooks_and_services: false)
- end
-
- it 'catches exception and returns invalid' do
- freeze_time do
- expect(subject.query(query)).to eq(valid: false, error: message)
- end
- end
- end
- end
-end
diff --git a/spec/lib/gitlab/usage/metric_definition_spec.rb b/spec/lib/gitlab/usage/metric_definition_spec.rb
index 283d76d731f..6695736e54c 100644
--- a/spec/lib/gitlab/usage/metric_definition_spec.rb
+++ b/spec/lib/gitlab/usage/metric_definition_spec.rb
@@ -153,7 +153,7 @@ RSpec.describe Gitlab::Usage::MetricDefinition, feature_category: :service_ping
:value_type | nil
:value_type | 'test'
:status | nil
- :milestone | nil
+ :milestone | 10.0
:data_category | nil
:key_path | nil
:product_group | nil
@@ -269,26 +269,6 @@ RSpec.describe Gitlab::Usage::MetricDefinition, feature_category: :service_ping
end
end
- describe 'statuses' do
- using RSpec::Parameterized::TableSyntax
-
- where(:status, :skip_validation?) do
- 'active' | false
- 'broken' | false
- 'removed' | true
- end
-
- with_them do
- subject(:validation) do
- described_class.new(path, attributes.merge( { status: status } )).send(:skip_validation?)
- end
-
- it 'returns true/false for skip_validation' do
- expect(validation).to eq(skip_validation?)
- end
- end
- end
-
describe '.load_all!' do
let(:metric1) { Dir.mktmpdir('metric1') }
let(:metric2) { Dir.mktmpdir('metric2') }
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index 149c0609799..2a5d781edc7 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -5605,26 +5605,4 @@ RSpec.describe Ci::Build, feature_category: :continuous_integration, factory_def
end
end
end
-
- describe 'routing table switch' do
- context 'with ff disabled' do
- before do
- stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: false)
- end
-
- it 'uses the legacy table' do
- expect(described_class.table_name).to eq('ci_builds')
- end
- end
-
- context 'with ff enabled' do
- before do
- stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: true)
- end
-
- it 'uses the routing table' do
- expect(described_class.table_name).to eq('p_ci_builds')
- end
- end
- end
end
diff --git a/spec/models/commit_status_spec.rb b/spec/models/commit_status_spec.rb
index 9ce9f0e13b5..e9257b08bca 100644
--- a/spec/models/commit_status_spec.rb
+++ b/spec/models/commit_status_spec.rb
@@ -44,6 +44,24 @@ RSpec.describe CommitStatus, feature_category: :continuous_integration do
it { is_expected.not_to be_retried }
it { expect(described_class.primary_key).to eq('id') }
+ describe '.switch_table_names' do
+ before do
+ stub_env('USE_CI_BUILDS_ROUTING_TABLE', flag_value)
+ end
+
+ context 'with the env flag disabled' do
+ let(:flag_value) { 'false' }
+
+ it { expect(described_class.switch_table_names).to eq(:ci_builds) }
+ end
+
+ context 'with the env flag enabled' do
+ let(:flag_value) { 'true' }
+
+ it { expect(described_class.switch_table_names).to eq(:p_ci_builds) }
+ end
+ end
+
describe '#author' do
subject { commit_status.author }
@@ -1067,26 +1085,4 @@ RSpec.describe CommitStatus, feature_category: :continuous_integration do
it_behaves_like 'having enum with nil value'
end
-
- describe 'routing table switch' do
- context 'with ff disabled' do
- before do
- stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: false)
- end
-
- it 'uses the legacy table' do
- expect(described_class.table_name).to eq('ci_builds')
- end
- end
-
- context 'with ff enabled' do
- before do
- stub_feature_flags(ci_partitioning_use_ci_builds_routing_table: true)
- end
-
- it 'uses the routing table' do
- expect(described_class.table_name).to eq('p_ci_builds')
- end
- end
- end
end
diff --git a/spec/models/concerns/prometheus_adapter_spec.rb b/spec/models/concerns/prometheus_adapter_spec.rb
index a3f2e99f3da..abb89832174 100644
--- a/spec/models/concerns/prometheus_adapter_spec.rb
+++ b/spec/models/concerns/prometheus_adapter_spec.rb
@@ -18,29 +18,6 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do
let(:environment_query) { Gitlab::Prometheus::Queries::EnvironmentQuery }
describe '#query' do
- describe 'validate_query' do
- let(:environment) { build_stubbed(:environment, slug: 'env-slug') }
- let(:validation_query) { Gitlab::Prometheus::Queries::ValidateQuery.name }
- let(:query) { 'avg(response)' }
- let(:validation_respone) { { data: { valid: true } } }
-
- around do |example|
- freeze_time { example.run }
- end
-
- context 'with valid data' do
- subject { integration.query(:validate, query) }
-
- before do
- stub_reactive_cache(integration, validation_respone, validation_query, query)
- end
-
- it 'returns query data' do
- is_expected.to eq(query: { valid: true })
- end
- end
- end
-
describe 'environment' do
let(:environment) { build_stubbed(:environment, slug: 'env-slug') }
@@ -61,25 +38,6 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do
end
end
- describe 'matched_metrics' do
- let(:matched_metrics_query) { Gitlab::Prometheus::Queries::MatchedMetricQuery }
- let(:prometheus_client) { double(:prometheus_client, label_values: nil) }
-
- context 'with valid data' do
- subject { integration.query(:matched_metrics) }
-
- before do
- allow(integration).to receive(:prometheus_client).and_return(prometheus_client)
- synchronous_reactive_cache(integration)
- end
-
- it 'returns reactive data' do
- expect(subject[:success]).to be_truthy
- expect(subject[:data]).to eq([])
- end
- end
- end
-
describe 'deployment' do
let(:deployment) { build_stubbed(:deployment) }
let(:deployment_query) { Gitlab::Prometheus::Queries::DeploymentQuery }
diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb
index 24b81d78758..ce7e5188c7b 100644
--- a/spec/services/projects/create_service_spec.rb
+++ b/spec/services/projects/create_service_spec.rb
@@ -1169,4 +1169,17 @@ RSpec.describe Projects::CreateService, '#execute', feature_category: :groups_an
expect_not_disabled_features(project, exclude: [:repository, :builds, :merge_requests])
end
end
+
+ it 'adds pages unique domain', feature_category: :pages do
+ stub_pages_setting(enabled: true)
+
+ expect(Gitlab::Pages)
+ .to receive(:add_unique_domain_to)
+ .and_call_original
+
+ project = create_project(user, opts)
+
+ expect(project.project_setting.pages_unique_domain_enabled).to eq(true)
+ expect(project.project_setting.pages_unique_domain).to be_present
+ end
end
diff --git a/spec/services/projects/update_service_spec.rb b/spec/services/projects/update_service_spec.rb
index d9090b87514..195cfe78b3f 100644
--- a/spec/services/projects/update_service_spec.rb
+++ b/spec/services/projects/update_service_spec.rb
@@ -791,72 +791,26 @@ RSpec.describe Projects::UpdateService, feature_category: :groups_and_projects d
end
describe 'when updating pages unique domain', feature_category: :pages do
- let(:group) { create(:group, path: 'group') }
- let(:project) { create(:project, path: 'project', group: group) }
-
- it 'updates project pages unique domain' do
- expect do
- update_project(project, user, project_setting_attributes: {
- pages_unique_domain_enabled: true
- })
- end.to change { project.project_setting.pages_unique_domain_enabled }
-
- expect(project.project_setting.pages_unique_domain_enabled).to eq true
- expect(project.project_setting.pages_unique_domain).to match %r{project-group-\w+}
- end
-
- it 'does not changes unique domain when it already exists' do
- project.project_setting.update!(
- pages_unique_domain_enabled: false,
- pages_unique_domain: 'unique-domain'
- )
-
- expect do
- update_project(project, user, project_setting_attributes: {
- pages_unique_domain_enabled: true
- })
- end.to change { project.project_setting.pages_unique_domain_enabled }
-
- expect(project.project_setting.pages_unique_domain_enabled).to eq true
- expect(project.project_setting.pages_unique_domain).to eq 'unique-domain'
+ before do
+ stub_pages_setting(enabled: true)
end
- it 'does not changes unique domain when it disabling unique domain' do
- project.project_setting.update!(
- pages_unique_domain_enabled: true,
- pages_unique_domain: 'unique-domain'
- )
-
- expect do
- update_project(project, user, project_setting_attributes: {
- pages_unique_domain_enabled: false
- })
- end.not_to change { project.project_setting.pages_unique_domain }
+ context 'when turning it on' do
+ it 'adds pages unique domain' do
+ expect(Gitlab::Pages).to receive(:add_unique_domain_to)
- expect(project.project_setting.pages_unique_domain_enabled).to eq false
- expect(project.project_setting.pages_unique_domain).to eq 'unique-domain'
+ expect { update_project(project, user, project_setting_attributes: { pages_unique_domain_enabled: true }) }
+ .to change { project.project_setting.pages_unique_domain_enabled }
+ .from(false).to(true)
+ end
end
- context 'when there is another project with the unique domain' do
- it 'fails pages unique domain already exists' do
- create(
- :project_setting,
- pages_unique_domain_enabled: true,
- pages_unique_domain: 'unique-domain'
- )
-
- allow(Gitlab::Pages::RandomDomain)
- .to receive(:generate)
- .and_return('unique-domain')
+ context 'when turning it off' do
+ it 'adds pages unique domain' do
+ expect(Gitlab::Pages).not_to receive(:add_unique_domain_to)
- result = update_project(project, user, project_setting_attributes: {
- pages_unique_domain_enabled: true
- })
-
- expect(result).to eq(
- status: :error,
- message: 'Project setting pages unique domain has already been taken'
- )
+ expect { update_project(project, user, project_setting_attributes: { pages_unique_domain_enabled: false }) }
+ .not_to change { project.project_setting.pages_unique_domain_enabled }
end
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 6c4589b7a5f..af013830109 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -24,6 +24,7 @@ CrystalballEnv.start!
ENV["RAILS_ENV"] = 'test'
ENV["IN_MEMORY_APPLICATION_SETTINGS"] = 'true'
ENV["RSPEC_ALLOW_INVALID_URLS"] = 'true'
+ENV['USE_CI_BUILDS_ROUTING_TABLE'] = 'true'
require_relative '../config/environment'