Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
		
							parent
							
								
									0daacd8353
								
							
						
					
					
						commit
						74ad68a3c4
					
				|  | @ -20,8 +20,8 @@ FactoryBot/ExcessiveCreateList: | |||
|     - 'spec/features/issues/user_edits_issue_spec.rb' | ||||
|     - 'spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb' | ||||
|     - 'spec/features/projects/container_registry_spec.rb' | ||||
|     - 'spec/features/projects/work_items/work_item_spec.rb' | ||||
|     - 'spec/features/users/overview_spec.rb' | ||||
|     - 'spec/features/work_items/work_item_spec.rb' | ||||
|     - 'spec/frontend/fixtures/timelogs.rb' | ||||
|     - 'spec/lib/gitlab/database/background_migration/batched_migration_spec.rb' | ||||
|     - 'spec/lib/gitlab/database/consistency_checker_spec.rb' | ||||
|  |  | |||
|  | @ -808,8 +808,6 @@ RSpec/BeforeAllRoleAssignment: | |||
|     - 'spec/features/projects/terraform_spec.rb' | ||||
|     - 'spec/features/projects/user_sees_user_popover_spec.rb' | ||||
|     - 'spec/features/projects/user_views_empty_project_spec.rb' | ||||
|     - 'spec/features/projects/work_items/work_item_children_spec.rb' | ||||
|     - 'spec/features/projects/work_items/work_item_spec.rb' | ||||
|     - 'spec/features/promotion_spec.rb' | ||||
|     - 'spec/features/registrations/oauth_registration_spec.rb' | ||||
|     - 'spec/features/reportable_note/snippets_spec.rb' | ||||
|  | @ -824,6 +822,8 @@ RSpec/BeforeAllRoleAssignment: | |||
|     - 'spec/features/search/user_uses_header_search_field_spec.rb' | ||||
|     - 'spec/features/user_can_display_performance_bar_spec.rb' | ||||
|     - 'spec/features/user_sorts_things_spec.rb' | ||||
|     - 'spec/features/work_items/work_item_children_spec.rb' | ||||
|     - 'spec/features/work_items/work_item_spec.rb' | ||||
|     - 'spec/finders/alert_management/alerts_finder_spec.rb' | ||||
|     - 'spec/finders/autocomplete/deploy_keys_with_write_access_finder_spec.rb' | ||||
|     - 'spec/finders/autocomplete/routes_finder_spec.rb' | ||||
|  |  | |||
|  | @ -2135,7 +2135,6 @@ RSpec/FeatureCategory: | |||
|     - 'spec/lib/gitlab/ci/badge/coverage/report_spec.rb' | ||||
|     - 'spec/lib/gitlab/ci/badge/coverage/template_spec.rb' | ||||
|     - 'spec/lib/gitlab/ci/badge/pipeline/metadata_spec.rb' | ||||
|     - 'spec/lib/gitlab/ci/badge/pipeline/status_spec.rb' | ||||
|     - 'spec/lib/gitlab/ci/badge/pipeline/template_spec.rb' | ||||
|     - 'spec/lib/gitlab/ci/badge/release/latest_release_spec.rb' | ||||
|     - 'spec/lib/gitlab/ci/badge/release/metadata_spec.rb' | ||||
|  | @ -4155,7 +4154,6 @@ RSpec/FeatureCategory: | |||
|     - 'spec/views/projects/imports/new.html.haml_spec.rb' | ||||
|     - 'spec/views/projects/issues/_related_branches.html.haml_spec.rb' | ||||
|     - 'spec/views/projects/issues/show.html.haml_spec.rb' | ||||
|     - 'spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb' | ||||
|     - 'spec/views/projects/jobs/show.html.haml_spec.rb' | ||||
|     - 'spec/views/projects/merge_requests/_commits.html.haml_spec.rb' | ||||
|     - 'spec/views/projects/merge_requests/edit.html.haml_spec.rb' | ||||
|  |  | |||
|  | @ -85,9 +85,9 @@ RSpec/NoExpectationExample: | |||
|     - 'spec/features/projects/environments/environment_spec.rb' | ||||
|     - 'spec/features/projects/files/template_selector_menu_spec.rb' | ||||
|     - 'spec/features/projects/files/undo_template_spec.rb' | ||||
|     - 'spec/features/projects/work_items/linked_work_items_spec.rb' | ||||
|     - 'spec/features/user_settings/ssh_keys_spec.rb' | ||||
|     - 'spec/features/users/login_spec.rb' | ||||
|     - 'spec/features/work_items/linked_work_items_spec.rb' | ||||
|     - 'spec/frontend/fixtures/issues.rb' | ||||
|     - 'spec/frontend/fixtures/listbox.rb' | ||||
|     - 'spec/frontend/fixtures/merge_requests.rb' | ||||
|  |  | |||
|  | @ -5,7 +5,6 @@ SidekiqLoadBalancing/WorkerDataConsistency: | |||
|     - 'app/workers/bulk_imports/pipeline_batch_worker.rb' | ||||
|     - 'app/workers/bulk_imports/relation_batch_export_worker.rb' | ||||
|     - 'app/workers/bulk_imports/stale_import_worker.rb' | ||||
|     - 'app/workers/chat_notification_worker.rb' | ||||
|     - 'app/workers/ci/archive_traces_cron_worker.rb' | ||||
|     - 'app/workers/ci/build_prepare_worker.rb' | ||||
|     - 'app/workers/ci/build_schedule_worker.rb' | ||||
|  | @ -124,8 +123,6 @@ SidekiqLoadBalancing/WorkerDataConsistency: | |||
|     - 'app/workers/incident_management/close_incident_worker.rb' | ||||
|     - 'app/workers/incident_management/pager_duty/process_incident_worker.rb' | ||||
|     - 'app/workers/incident_management/process_alert_worker_v2.rb' | ||||
|     - 'app/workers/integrations/execute_worker.rb' | ||||
|     - 'app/workers/integrations/irker_worker.rb' | ||||
|     - 'app/workers/integrations/propagate_integration_descendant_worker.rb' | ||||
|     - 'app/workers/invalid_gpg_signature_update_worker.rb' | ||||
|     - 'app/workers/issuable/label_links_destroy_worker.rb' | ||||
|  | @ -135,8 +132,6 @@ SidekiqLoadBalancing/WorkerDataConsistency: | |||
|     - 'app/workers/issues/close_worker.rb' | ||||
|     - 'app/workers/issues/placement_worker.rb' | ||||
|     - 'app/workers/issues/rebalancing_worker.rb' | ||||
|     - 'app/workers/jira_connect/forward_event_worker.rb' | ||||
|     - 'app/workers/jira_connect/retry_request_worker.rb' | ||||
|     - 'app/workers/loose_foreign_keys/cleanup_worker.rb' | ||||
|     - 'app/workers/mail_scheduler/issue_due_worker.rb' | ||||
|     - 'app/workers/mail_scheduler/notification_service_worker.rb' | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| e39eef132f47d2c679e0cc5d199406084135540b | ||||
| a3bc04233c29d8368ac509e8c360bf82f104a2ce | ||||
|  |  | |||
|  | @ -127,6 +127,7 @@ function mountBoardApp(el) { | |||
|       hasIssueWeightsFeature: parseBoolean(el.dataset.weightFeatureAvailable), | ||||
|       hasIssuableHealthStatusFeature: parseBoolean(el.dataset.healthStatusFeatureAvailable), | ||||
|       hasSubepicsFeature: parseBoolean(el.dataset.subEpicsFeatureAvailable), | ||||
|       hasLinkedItemsEpicsFeature: parseBoolean(el.dataset.hasLinkedItemsEpicsFeature), | ||||
|     }, | ||||
|     render: (createComponent) => createComponent(BoardApp), | ||||
|   }); | ||||
|  |  | |||
|  | @ -118,6 +118,7 @@ export async function mountIssuesListApp() { | |||
|     wiIssuesListPath, | ||||
|     wiLabelsManagePath, | ||||
|     wiReportAbusePath, | ||||
|     hasLinkedItemsEpicsFeature, | ||||
|   } = el.dataset; | ||||
| 
 | ||||
|   return new Vue({ | ||||
|  | @ -202,6 +203,7 @@ export async function mountIssuesListApp() { | |||
|       labelsManagePath: wiLabelsManagePath, | ||||
|       reportAbusePath: wiReportAbusePath, | ||||
|       hasSubepicsFeature: false, | ||||
|       hasLinkedItemsEpicsFeature: parseBoolean(hasLinkedItemsEpicsFeature), | ||||
|     }, | ||||
|     render: (createComponent) => createComponent(IssuesListApp), | ||||
|   }); | ||||
|  |  | |||
|  | @ -104,7 +104,13 @@ export default { | |||
|     WorkItemAbuseModal, | ||||
|   }, | ||||
|   mixins: [glFeatureFlagMixin()], | ||||
|   inject: ['fullPath', 'reportAbusePath', 'groupPath', 'hasSubepicsFeature'], | ||||
|   inject: [ | ||||
|     'fullPath', | ||||
|     'reportAbusePath', | ||||
|     'groupPath', | ||||
|     'hasSubepicsFeature', | ||||
|     'hasLinkedItemsEpicsFeature', | ||||
|   ], | ||||
|   props: { | ||||
|     isModal: { | ||||
|       type: Boolean, | ||||
|  | @ -374,7 +380,9 @@ export default { | |||
|       return !this.isModal && !this.editMode && !this.isDrawer; | ||||
|     }, | ||||
|     workItemLinkedItems() { | ||||
|       return this.isWidgetPresent(WIDGET_TYPE_LINKED_ITEMS); | ||||
|       return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC | ||||
|         ? this.isWidgetPresent(WIDGET_TYPE_LINKED_ITEMS) && this.hasLinkedItemsEpicsFeature | ||||
|         : this.isWidgetPresent(WIDGET_TYPE_LINKED_ITEMS); | ||||
|     }, | ||||
|     showWorkItemTree() { | ||||
|       return this.isWidgetPresent(WIDGET_TYPE_HIERARCHY) && this.allowedChildTypes?.length > 0; | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| import Vue from 'vue'; | ||||
| import { GlToast } from '@gitlab/ui'; | ||||
| import { apolloProvider } from '~/graphql_shared/issuable_client'; | ||||
| import { parseBoolean } from '~/lib/utils/common_utils'; | ||||
| import WorkItemLinks from './work_item_links.vue'; | ||||
| 
 | ||||
| Vue.use(GlToast); | ||||
|  | @ -25,6 +26,7 @@ export default function initWorkItemLinks() { | |||
|     wiLabelsManagePath, | ||||
|     wiNewCommentTemplatePaths, | ||||
|     wiReportAbusePath, | ||||
|     hasLinkedItemsEpicsFeature, | ||||
|   } = workItemLinksRoot.dataset; | ||||
| 
 | ||||
|   return new Vue({ | ||||
|  | @ -45,6 +47,7 @@ export default function initWorkItemLinks() { | |||
|       labelsManagePath: wiLabelsManagePath, | ||||
|       newCommentTemplatePaths: JSON.parse(wiNewCommentTemplatePaths), | ||||
|       reportAbusePath: wiReportAbusePath, | ||||
|       hasLinkedItemsEpicsFeature: parseBoolean(hasLinkedItemsEpicsFeature), | ||||
|     }, | ||||
|     render: (createElement) => | ||||
|       createElement(WorkItemLinks, { | ||||
|  |  | |||
|  | @ -132,6 +132,7 @@ export default { | |||
|           v-gl-modal="'time-tracking-report'" | ||||
|           v-gl-tooltip="s__('TimeTracking|View time tracking report')" | ||||
|           variant="link" | ||||
|           class="!gl-text-sm" | ||||
|           data-testid="view-time-spent-button" | ||||
|         > | ||||
|           {{ humanTotalTimeSpent }} | ||||
|  | @ -152,6 +153,7 @@ export default { | |||
|             v-gl-modal="$options.setTimeEstimateModalId" | ||||
|             v-gl-tooltip="s__('TimeTracking|Set estimate')" | ||||
|             variant="link" | ||||
|             class="!gl-text-sm" | ||||
|             data-testid="set-estimate-button" | ||||
|           > | ||||
|             {{ humanTimeEstimate }} | ||||
|  | @ -163,7 +165,7 @@ export default { | |||
|         <gl-button | ||||
|           v-else-if="canUpdate" | ||||
|           v-gl-modal="$options.setTimeEstimateModalId" | ||||
|           class="gl-ml-auto" | ||||
|           class="gl-ml-auto !gl-text-sm" | ||||
|           variant="link" | ||||
|           data-testid="add-estimate-button" | ||||
|         > | ||||
|  |  | |||
|  | @ -56,6 +56,7 @@ export const initWorkItemsRoot = ({ workItemType, workspaceType } = {}) => { | |||
|     canBulkEditEpics, | ||||
|     groupIssuesPath, | ||||
|     labelsFetchPath, | ||||
|     hasLinkedItemsEpicsFeature, | ||||
|   } = el.dataset; | ||||
| 
 | ||||
|   const isGroup = workspaceType === WORKSPACE_GROUP; | ||||
|  | @ -125,6 +126,7 @@ export const initWorkItemsRoot = ({ workItemType, workspaceType } = {}) => { | |||
|       canBulkEditEpics: parseBoolean(canBulkEditEpics), | ||||
|       groupIssuesPath, | ||||
|       labelsFetchPath, | ||||
|       hasLinkedItemsEpicsFeature: parseBoolean(hasLinkedItemsEpicsFeature), | ||||
|     }, | ||||
|     mounted() { | ||||
|       performanceMarkAndMeasure({ | ||||
|  |  | |||
|  | @ -20,6 +20,14 @@ module StreamDiffs | |||
|     response.stream.close | ||||
|   end | ||||
| 
 | ||||
|   def request | ||||
|     # We only need to do this in rapid diffs streaming endpoints | ||||
|     # as calling `request.format` (which can happen when rendering view components | ||||
|     # but can possibly happen in other places as well) can raise an exception | ||||
|     # while streaming diffs. | ||||
|     Request.new(super) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def rapid_diffs_enabled? | ||||
|  | @ -50,4 +58,10 @@ module StreamDiffs | |||
|       layout: false | ||||
|     ) | ||||
|   end | ||||
| 
 | ||||
|   class Request < SimpleDelegator | ||||
|     def format | ||||
|       Mime::Type.lookup("text/html") | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -270,11 +270,7 @@ module EventsHelper | |||
|   end | ||||
| 
 | ||||
|   def event_wiki_page_target_url(event) | ||||
|     if event.project_id.present? | ||||
|       project_wiki_url(event.project, event.target&.canonical_slug || Wiki::HOMEPAGE) | ||||
|     elsif event.group_id.present? | ||||
|       group_wiki_url(event.group, event.target&.canonical_slug || Wiki::HOMEPAGE) | ||||
|     end | ||||
|     project_wiki_url(event.project, event.target&.canonical_slug || Wiki::HOMEPAGE) if event.project_id.present? | ||||
|   end | ||||
| 
 | ||||
|   def event_note_title_html(event) | ||||
|  |  | |||
|  | @ -44,7 +44,7 @@ module CommitSignature | |||
| 
 | ||||
|   def reverified_status | ||||
|     return verification_status unless Feature.enabled?(:check_for_mailmapped_commit_emails, project) | ||||
|     return verification_status unless verified? && ssh? | ||||
|     return verification_status unless verified_ssh? || verified_system? | ||||
| 
 | ||||
|     verified_emails = signed_by_user&.verified_emails | ||||
|     if verified_emails&.exclude?(commit.author_email) | ||||
|  | @ -53,4 +53,10 @@ module CommitSignature | |||
|       verification_status | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def verified_ssh? | ||||
|     verified? && ssh? | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -24,4 +24,4 @@ | |||
|             %th | ||||
|       %tbody= yield | ||||
| 
 | ||||
|     = paginate @protected_tags, theme: 'gitlab' | ||||
|     = paginate @protected_tags, theme: 'gitlab', params: { anchor: 'js-protected-tags-settings' } | ||||
|  |  | |||
|  | @ -34,4 +34,4 @@ | |||
|           = content_for :create_protected_branch | ||||
| 
 | ||||
|       - c.with_pagination do | ||||
|         = paginate @protected_branches, theme: 'gitlab' | ||||
|         = paginate @protected_branches, theme: 'gitlab', params: { anchor: 'js-protected-branches-settings' } | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ | |||
| class ChatNotificationWorker # rubocop:disable Scalability/IdempotentWorker | ||||
|   include ApplicationWorker | ||||
| 
 | ||||
|   data_consistency :always | ||||
|   data_consistency :sticky | ||||
| 
 | ||||
|   TimeoutExceeded = Class.new(StandardError) | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ module Integrations | |||
|   class ExecuteWorker # rubocop:disable Scalability/IdempotentWorker | ||||
|     include ApplicationWorker | ||||
| 
 | ||||
|     data_consistency :always | ||||
|     data_consistency :delayed | ||||
|     sidekiq_options retry: 3 | ||||
|     sidekiq_options dead: false | ||||
|     feature_category :integrations | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ module Integrations | |||
|   class IrkerWorker # rubocop:disable Scalability/IdempotentWorker | ||||
|     include ApplicationWorker | ||||
| 
 | ||||
|     data_consistency :always | ||||
|     data_consistency :sticky | ||||
|     sidekiq_options retry: 3 | ||||
|     feature_category :integrations | ||||
|     urgency :low | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ module JiraConnect | |||
|   class ForwardEventWorker # rubocop:disable Scalability/IdempotentWorker | ||||
|     include ApplicationWorker | ||||
| 
 | ||||
|     data_consistency :always | ||||
|     data_consistency :delayed | ||||
|     queue_namespace :jira_connect | ||||
|     feature_category :integrations | ||||
|     urgency :low | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ module JiraConnect | |||
|   class RetryRequestWorker # rubocop:disable Scalability/IdempotentWorker | ||||
|     include ApplicationWorker | ||||
| 
 | ||||
|     data_consistency :always | ||||
|     data_consistency :delayed | ||||
|     queue_namespace :jira_connect | ||||
|     feature_category :integrations | ||||
|     urgency :low | ||||
|  |  | |||
|  | @ -136,6 +136,13 @@ | |||
|     "product_group": { | ||||
|       "$ref": "../metrics/schema/product_groups.json" | ||||
|     }, | ||||
|     "product_categories": { | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "string", | ||||
|         "format": "known_product_category" | ||||
|       } | ||||
|     }, | ||||
|     "introduced_by_url": { | ||||
|       "type": [ | ||||
|         "string", | ||||
|  |  | |||
|  | @ -0,0 +1,10 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| JSONSchemer.configure do |config| | ||||
|   categories_filepath = Rails.root.join('config/feature_categories.yml') | ||||
|   feature_categories = YAML.load_file(categories_filepath) | ||||
| 
 | ||||
|   config.formats['known_product_category'] = proc do |category, _format| | ||||
|     feature_categories.include?(category) | ||||
|   end | ||||
| end | ||||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_applications_cert_managers | ||||
| description: Count user ids from GitLab Managed clusters with Cert Manager enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_applications_helm | ||||
| description: Count user ids from GitLab Managed clusters with Helm enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_applications_ingress | ||||
| description: Count user ids from GitLab Managed clusters with Ingress enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_applications_knative | ||||
| description: Count user ids from GitLab Managed clusters with Knative enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -4,7 +4,8 @@ key_path: usage_activity_by_stage_monthly.configure.clusters_management_project | |||
| description: Number of Kubernetes clusters with clusters management project being | ||||
|   set | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_disabled | ||||
| description: Number of user ids from GitLab Managed disabled clusters | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_enabled | ||||
| description: Number of distict user ids from GitLab Managed clusters currently enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_platforms_gke | ||||
| description: Number of user ids from GitLab Managed clusters provisioned with GitLab on GCE GKE | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_platforms_eks | ||||
| description: Number of user ids from GitLab Managed clusters provisioned with GitLab on AWS EKS | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.clusters_platforms_user | ||||
| description: Number of user ids from GitLab Managed clusters that are user provisioned | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.instance_clusters_disabled | ||||
| description: Number of users from GitLab Managed disabled clusters attached to the instance | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.instance_clusters_enabled | ||||
| description: Number of user ids from GitLab Managed enabled clusters attached to the instance | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.group_clusters_disabled | ||||
| description: Number of user ids GitLab Managed disabled clusters attached to groups | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.group_clusters_enabled | ||||
| description: Count disctinct user ids from GitLab Managed enabled clusters attached to groups | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage_monthly.configure.project_clusters_disabled | ||||
| description: Number of user ids from GitLab Managed disabled clusters attached to projects | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: operational | |||
| key_path: usage_activity_by_stage_monthly.configure.project_clusters_enabled | ||||
| description: Number of user ids from GitLab Managed enabled clusters attached to projects | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: 28d | ||||
|  |  | |||
|  | @ -2,7 +2,8 @@ | |||
| key_path: redis_hll_counters.kubernetes_agent.agent_users_using_ci_tunnel_monthly | ||||
| description: MAU of the Agent for Kubernetes CI/CD Tunnel | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| milestone: "15.3" | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters | ||||
| description: Total GitLab Managed clusters both enabled and disabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_enabled | ||||
| description: Number of Kubernetes clusters attached to GitLab currently enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.project_clusters_enabled | ||||
| description: Total GitLab Managed clusters attached to projects | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.group_clusters_enabled | ||||
| description: Total GitLab Managed clusters attached to groups | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.instance_clusters_enabled | ||||
| description: Total GitLab Managed clusters attached to the instance | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_disabled | ||||
| description: Number of Kubernetes clusters attached to GitLab currently disabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.project_clusters_disabled | ||||
| description: Total GitLab Managed disabled clusters previously attached to projects | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.group_clusters_disabled | ||||
| description: Total GitLab Managed disabled clusters previously attached to groups | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.instance_clusters_disabled | ||||
| description: Total GitLab Managed disabled clusters previously attached to the instance | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_platforms_eks | ||||
| description: Total GitLab Managed clusters provisioned with GitLab on AWS EKS | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_platforms_gke | ||||
| description: Total GitLab Managed clusters provisioned with GitLab on GCE GKE | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_platforms_user | ||||
| description: Total GitLab Managed clusters that are user provisioned | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_helm | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Helm enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_ingress | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Ingress installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_cert_managers | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Cert Manager installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_crossplane | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Crossplane installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_prometheus | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Prometheus installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_runner | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Runner installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_knative | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Knative installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_elastic_stack | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Elastic Stack installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_applications_jupyter | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Jupyter installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: operational | |||
| key_path: counts.clusters_applications_cilium | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Cilium installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_management_project | ||||
| description: Total GitLab Managed clusters with defined cluster management project | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.kubernetes_agents | ||||
| description: Count of Kubernetes registered agents | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.kubernetes_agents_with_token | ||||
| description: Count of Kubernetes agents with at least one token | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_applications_cert_managers | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Cert Manager installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_applications_helm | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Helm enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_applications_ingress | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Ingress installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_applications_knative | ||||
| description: Total GitLab Managed clusters with GitLab Managed App:Knative installed | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_management_project | ||||
| description: Total GitLab Managed clusters with defined cluster management project | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_disabled | ||||
| description: Total GitLab Managed disabled clusters | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_enabled | ||||
| description: Total GitLab Managed clusters currently enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_platforms_gke | ||||
| description: Total GitLab Managed clusters provisioned with GitLab on GCE GKE | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_platforms_eks | ||||
| description: Total GitLab Managed clusters provisioned with GitLab on AWS EKS | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.clusters_platforms_user | ||||
| description: Total GitLab Managed clusters that are user provisioned | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.instance_clusters_disabled | ||||
| description: Total GitLab Managed disabled clusters attached to the instance | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.instance_clusters_enabled | ||||
| description: Total GitLab Managed enabled clusters attached to the instance | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.group_clusters_disabled | ||||
| description: Total GitLab Managed disabled clusters attached to groups | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.group_clusters_enabled | ||||
| description: Total GitLab Managed enabled clusters attached to groups | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.project_clusters_disabled | ||||
| description: Total GitLab Managed disabled clusters attached to projects | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.project_clusters_enabled | ||||
| description: Total GitLab Managed enabled clusters attached to projects | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.configure.projects_with_prometheus_alerts | ||||
| description: Projects with Prometheus alerting enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| milestone_removed: '14.0' | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: usage_activity_by_stage.verify.clusters_applications_runner | ||||
| description: Count of users creating managed clusters with Runner enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.kubernetes_agent_k8s_api_proxy_request | ||||
| description: Count of Kubernetes API proxy requests | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| milestone: '13.12' | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_integrations_prometheus | ||||
| description: Total clusters with Clusters::Integrations::Prometheus enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: active | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ data_category: optional | |||
| key_path: counts.clusters_integrations_elastic_stack | ||||
| description: Total clusters with Clusters::Integrations::ElasticStack enabled | ||||
| product_group: environments | ||||
| product_category: deployment_management | ||||
| product_categories: | ||||
| - deployment_management | ||||
| value_type: number | ||||
| status: removed | ||||
| time_frame: all | ||||
|  |  | |||
|  | @ -25,6 +25,13 @@ | |||
|     "product_group": { | ||||
|       "$ref": "product_groups.json" | ||||
|     }, | ||||
|     "product_categories": { | ||||
|       "type": "array", | ||||
|       "items": { | ||||
|         "type": "string", | ||||
|         "format": "known_product_category" | ||||
|       } | ||||
|     }, | ||||
|     "value_type": { | ||||
|       "type": "string", | ||||
|       "enum": [ | ||||
|  | @ -161,9 +168,6 @@ | |||
|     "value_json_schema": { | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "product_category": { | ||||
|       "type": "string" | ||||
|     }, | ||||
|     "name": { | ||||
|       "type": "string" | ||||
|     }, | ||||
|  |  | |||
|  | @ -3,7 +3,8 @@ key_path: database.mode | |||
| description: What PostgreSQL database mode is used. Possible values are | ||||
|   "single-database", "single-database-ci-connection", or "multiple-databases" | ||||
| product_group: database | ||||
| product_category: database | ||||
| product_categories: | ||||
| - database | ||||
| value_type: string | ||||
| status: active | ||||
| milestone: "15.11" | ||||
|  |  | |||
|  | @ -0,0 +1,18 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class EnsureIdUniquenessForPCiPipelines < Gitlab::Database::Migration[2.2] | ||||
|   include Gitlab::Database::PartitioningMigrationHelpers::UniquenessHelpers | ||||
| 
 | ||||
|   milestone '17.6' | ||||
| 
 | ||||
|   TABLE_NAME = :p_ci_pipelines | ||||
|   SEQ_NAME = :ci_pipelines_id_seq | ||||
| 
 | ||||
|   def up | ||||
|     ensure_unique_id(TABLE_NAME, seq: SEQ_NAME) | ||||
|   end | ||||
| 
 | ||||
|   def down | ||||
|     revert_ensure_unique_id(TABLE_NAME, seq: SEQ_NAME) | ||||
|   end | ||||
| end | ||||
|  | @ -0,0 +1 @@ | |||
| a4a3e3193389ae202c53d321d613fabde0c849da2c75d7676e661190e9a246de | ||||
|  | @ -88,6 +88,19 @@ RETURN NEW; | |||
| END | ||||
| $$; | ||||
| 
 | ||||
| CREATE FUNCTION assign_p_ci_pipelines_id_value() RETURNS trigger | ||||
|     LANGUAGE plpgsql | ||||
|     AS $$ | ||||
| BEGIN | ||||
| IF NEW."id" IS NOT NULL THEN | ||||
|   RAISE WARNING 'Manually assigning ids is not allowed, the value will be ignored'; | ||||
| END IF; | ||||
| NEW."id" := nextval('ci_pipelines_id_seq'::regclass); | ||||
| RETURN NEW; | ||||
| 
 | ||||
| END | ||||
| $$; | ||||
| 
 | ||||
| CREATE FUNCTION assign_p_ci_stages_id_value() RETURNS trigger | ||||
|     LANGUAGE plpgsql | ||||
|     AS $$ | ||||
|  | @ -9243,15 +9256,6 @@ CREATE TABLE p_ci_pipelines ( | |||
| ) | ||||
| PARTITION BY LIST (partition_id); | ||||
| 
 | ||||
| CREATE SEQUENCE ci_pipelines_id_seq | ||||
|     START WITH 1 | ||||
|     INCREMENT BY 1 | ||||
|     NO MINVALUE | ||||
|     NO MAXVALUE | ||||
|     CACHE 1; | ||||
| 
 | ||||
| ALTER SEQUENCE ci_pipelines_id_seq OWNED BY p_ci_pipelines.id; | ||||
| 
 | ||||
| CREATE TABLE ci_pipelines ( | ||||
|     ref character varying, | ||||
|     sha character varying, | ||||
|  | @ -9281,13 +9285,22 @@ CREATE TABLE ci_pipelines ( | |||
|     ci_ref_id bigint, | ||||
|     locked smallint DEFAULT 1 NOT NULL, | ||||
|     partition_id bigint NOT NULL, | ||||
|     id bigint DEFAULT nextval('ci_pipelines_id_seq'::regclass) NOT NULL, | ||||
|     id bigint NOT NULL, | ||||
|     auto_canceled_by_id bigint, | ||||
|     auto_canceled_by_partition_id bigint, | ||||
|     CONSTRAINT check_2ba2a044b9 CHECK ((project_id IS NOT NULL)), | ||||
|     CONSTRAINT check_d7e99a025e CHECK ((lock_version IS NOT NULL)) | ||||
| ); | ||||
| 
 | ||||
| CREATE SEQUENCE ci_pipelines_id_seq | ||||
|     START WITH 1 | ||||
|     INCREMENT BY 1 | ||||
|     NO MINVALUE | ||||
|     NO MAXVALUE | ||||
|     CACHE 1; | ||||
| 
 | ||||
| ALTER SEQUENCE ci_pipelines_id_seq OWNED BY p_ci_pipelines.id; | ||||
| 
 | ||||
| CREATE TABLE ci_project_mirrors ( | ||||
|     id bigint NOT NULL, | ||||
|     project_id bigint NOT NULL, | ||||
|  | @ -23364,8 +23377,6 @@ ALTER TABLE ONLY p_catalog_resource_sync_events ALTER COLUMN id SET DEFAULT next | |||
| 
 | ||||
| ALTER TABLE ONLY p_ci_builds_metadata ALTER COLUMN id SET DEFAULT nextval('ci_builds_metadata_id_seq'::regclass); | ||||
| 
 | ||||
| ALTER TABLE ONLY p_ci_pipelines ALTER COLUMN id SET DEFAULT nextval('ci_pipelines_id_seq'::regclass); | ||||
| 
 | ||||
| ALTER TABLE ONLY packages_build_infos ALTER COLUMN id SET DEFAULT nextval('packages_build_infos_id_seq'::regclass); | ||||
| 
 | ||||
| ALTER TABLE ONLY packages_conan_file_metadata ALTER COLUMN id SET DEFAULT nextval('packages_conan_file_metadata_id_seq'::regclass); | ||||
|  | @ -34722,6 +34733,8 @@ CREATE TRIGGER assign_p_ci_job_artifacts_id_trigger BEFORE INSERT ON p_ci_job_ar | |||
| 
 | ||||
| CREATE TRIGGER assign_p_ci_pipeline_variables_id_trigger BEFORE INSERT ON p_ci_pipeline_variables FOR EACH ROW EXECUTE FUNCTION assign_p_ci_pipeline_variables_id_value(); | ||||
| 
 | ||||
| CREATE TRIGGER assign_p_ci_pipelines_id_trigger BEFORE INSERT ON p_ci_pipelines FOR EACH ROW EXECUTE FUNCTION assign_p_ci_pipelines_id_value(); | ||||
| 
 | ||||
| CREATE TRIGGER assign_p_ci_stages_id_trigger BEFORE INSERT ON p_ci_stages FOR EACH ROW EXECUTE FUNCTION assign_p_ci_stages_id_value(); | ||||
| 
 | ||||
| CREATE TRIGGER assign_zoekt_tasks_id_trigger BEFORE INSERT ON zoekt_tasks FOR EACH ROW EXECUTE FUNCTION assign_zoekt_tasks_id_value(); | ||||
|  |  | |||
|  | @ -31,7 +31,7 @@ across GitLab releases. Use the | |||
| Every API call to vulnerabilities must be [authenticated](rest/index.md#authentication). | ||||
| 
 | ||||
| If an authenticated user does not have permission to | ||||
| [view vulnerabilities](../user/permissions.md#project-members-permissions), | ||||
| [view vulnerability report](../user/permissions.md#application-security), | ||||
| this request returns a `403 Forbidden` status code. | ||||
| 
 | ||||
| ## Single vulnerability | ||||
|  | @ -80,7 +80,7 @@ Example response: | |||
| Confirms a given vulnerability. Returns status code `304` if the vulnerability is already confirmed. | ||||
| 
 | ||||
| If an authenticated user does not have permission to | ||||
| [confirm vulnerabilities](../user/permissions.md#project-members-permissions), | ||||
| [change vulnerability status](../user/permissions.md#application-security), | ||||
| this request results in a `403` status code. | ||||
| 
 | ||||
| ```plaintext | ||||
|  | @ -125,7 +125,7 @@ Example response: | |||
| Resolves a given vulnerability. Returns status code `304` if the vulnerability is already resolved. | ||||
| 
 | ||||
| If an authenticated user does not have permission to | ||||
| [resolve vulnerabilities](../user/permissions.md#project-members-permissions), | ||||
| [change vulnerability status](../user/permissions.md#application-security), | ||||
| this request results in a `403` status code. | ||||
| 
 | ||||
| ```plaintext | ||||
|  | @ -170,7 +170,7 @@ Example response: | |||
| Dismisses a given vulnerability. Returns status code `304` if the vulnerability is already dismissed. | ||||
| 
 | ||||
| If an authenticated user does not have permission to | ||||
| [dismiss vulnerabilities](../user/permissions.md#project-members-permissions), | ||||
| [change vulnerability status](../user/permissions.md#application-security), | ||||
| this request results in a `403` status code. | ||||
| 
 | ||||
| ```plaintext | ||||
|  | @ -215,7 +215,7 @@ Example response: | |||
| Reverts a given vulnerability to detected state. Returns status code `304` if the vulnerability is already in detected state. | ||||
| 
 | ||||
| If an authenticated user does not have permission to | ||||
| [revert vulnerability to detected state](../user/permissions.md#project-members-permissions), | ||||
| [change vulnerability status](../user/permissions.md#application-security), | ||||
| this request results in a `403` status code. | ||||
| 
 | ||||
| ```plaintext | ||||
|  |  | |||
|  | @ -154,7 +154,7 @@ Now you can update tests for existing files and write tests for the new files: | |||
| 1. `spec/frontend/work_items/components/work_item_attributes_wrapper_spec.js` or `ee/spec/frontend/work_items/components/work_item_attributes_wrapper_spec.js`. | ||||
| 1. `spec/frontend/work_items/components/work_item_<widget_name>_spec.js` or `ee/spec/frontend/work_items/components/work_item_<widget_name>_spec.js`. | ||||
| 1. `spec/frontend/work_items/graphql/resolvers_spec.js` or `ee/spec/frontend/work_items/graphql/resolvers_spec.js`. | ||||
| 1. `spec/features/projects/work_items/work_item_spec.rb` or `ee/spec/features/projects/work_items/work_item_spec.rb`. | ||||
| 1. `spec/features/work_items/work_item_spec.rb` or `ee/spec/features/work_items/work_item_spec.rb`. | ||||
| 
 | ||||
| NOTE: | ||||
| You may find some feature specs failing because of excessive SQL queries. | ||||
|  |  | |||
|  | @ -69,7 +69,7 @@ The [`gitmailmap`](https://git-scm.com/docs/gitmailmap) feature allows users to | |||
| GitLab uses these email addresses to provide links to the commit author. | ||||
| When using a `mailmap` author mapping, it's possible to have a verified commit with an unverified author email. | ||||
| 
 | ||||
| For SSH signatures with `mailmap` author mappings, GitLab displays an orange verified label with a warning sign. | ||||
| For SSH and UI signatures with `mailmap` author mappings, GitLab displays an orange verified label with a warning sign. | ||||
| To restore the green verified label, verify the mapped email address, or remove the `mailmap` entry. | ||||
| 
 | ||||
| ## Troubleshooting | ||||
|  |  | |||
|  | @ -4,7 +4,10 @@ module Gitlab | |||
|   module Tracking | ||||
|     class EventDefinitionValidator | ||||
|       EVENT_SCHEMA_PATH = Rails.root.join('config/events/schema.json') | ||||
|       SCHEMA = ::JSONSchemer.schema(EVENT_SCHEMA_PATH) | ||||
| 
 | ||||
|       def self.definition_schema | ||||
|         @definition_schema ||= ::JSONSchemer.schema(EVENT_SCHEMA_PATH) | ||||
|       end | ||||
| 
 | ||||
|       def initialize(definition) | ||||
|         @attributes = definition.attributes | ||||
|  | @ -12,7 +15,7 @@ module Gitlab | |||
|       end | ||||
| 
 | ||||
|       def validation_errors | ||||
|         SCHEMA.validate(attributes.deep_stringify_keys).map do |error| | ||||
|         self.class.definition_schema.validate(attributes.deep_stringify_keys).map do |error| | ||||
|           <<~ERROR_MSG | ||||
|             --------------- VALIDATION ERROR --------------- | ||||
|             Definition file: #{path} | ||||
|  |  | |||
|  | @ -4,7 +4,6 @@ module Gitlab | |||
|   module Usage | ||||
|     class MetricDefinition | ||||
|       METRIC_SCHEMA_PATH = Rails.root.join('config', 'metrics', 'schema', 'base.json') | ||||
|       SCHEMA = ::JSONSchemer.schema(METRIC_SCHEMA_PATH) | ||||
|       AVAILABLE_STATUSES = %w[active broken].to_set.freeze | ||||
|       VALID_SERVICE_PING_STATUSES = %w[active broken].to_set.freeze | ||||
| 
 | ||||
|  | @ -91,14 +90,14 @@ module Gitlab | |||
|       end | ||||
| 
 | ||||
|       def validation_errors | ||||
|         SCHEMA.validate(@attributes.deep_stringify_keys).map do |error| | ||||
|         self.class.definition_schema.validate(@attributes.deep_stringify_keys).map do |error| | ||||
|           <<~ERROR_MSG | ||||
|             --------------- VALIDATION ERROR --------------- | ||||
|             Metric file: #{path} | ||||
|             Error type: #{error['type']} | ||||
|             Data: #{error['data']} | ||||
|             Path: #{error['data_pointer']} | ||||
|             Details: #{error['details']} | ||||
|             Details: #{error['details'] || error['error']} | ||||
|           ERROR_MSG | ||||
|         end | ||||
|       end | ||||
|  | @ -188,6 +187,10 @@ module Gitlab | |||
|           end | ||||
|         end | ||||
| 
 | ||||
|         def definition_schema | ||||
|           @definition_schema ||= ::JSONSchemer.schema(METRIC_SCHEMA_PATH) | ||||
|         end | ||||
| 
 | ||||
|         private | ||||
| 
 | ||||
|         def load_all! | ||||
|  |  | |||
|  | @ -49776,6 +49776,9 @@ msgstr "" | |||
| msgid "SecurityOrchestration|Edit merge request approval policy" | ||||
| msgstr "" | ||||
| 
 | ||||
| msgid "SecurityOrchestration|Edit pipeline execution policy" | ||||
| msgstr "" | ||||
| 
 | ||||
| msgid "SecurityOrchestration|Edit policy" | ||||
| msgstr "" | ||||
| 
 | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ module InternalEventsCli | |||
|     :time_frame, | ||||
|     :data_source, | ||||
|     :data_category, | ||||
|     :product_category, | ||||
|     :product_categories, | ||||
|     :distribution, | ||||
|     :tier, | ||||
|     :tiers, | ||||
|  |  | |||
|  | @ -42,4 +42,10 @@ RSpec.describe StreamDiffs, type: :controller, feature_category: :source_code_ma | |||
|       }) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe '#request' do | ||||
|     it 'forces format as HTML' do | ||||
|       expect(controller.new.request.format.to_s).to eq('text/html') | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue