mirror of
https://github.com/gitlabhq/gitlabhq.git
synced 2025-07-21 23:37:47 +00:00
Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import {
|
||||
GlDropdown,
|
||||
GlDropdownItem,
|
||||
GlDisclosureDropdown,
|
||||
GlDisclosureDropdownItem,
|
||||
GlFormCheckbox,
|
||||
GlIcon,
|
||||
GlSprintf,
|
||||
@ -28,8 +28,8 @@ import TimeagoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
|
||||
export default {
|
||||
name: 'PackageListRow',
|
||||
components: {
|
||||
GlDropdown,
|
||||
GlDropdownItem,
|
||||
GlDisclosureDropdown,
|
||||
GlDisclosureDropdownItem,
|
||||
GlFormCheckbox,
|
||||
GlIcon,
|
||||
GlSprintf,
|
||||
@ -194,18 +194,22 @@ export default {
|
||||
</template>
|
||||
|
||||
<template v-if="packageEntity.canDestroy" #right-action>
|
||||
<gl-dropdown
|
||||
<gl-disclosure-dropdown
|
||||
category="tertiary"
|
||||
data-testid="delete-dropdown"
|
||||
icon="ellipsis_v"
|
||||
:text="$options.i18n.moreActions"
|
||||
:text-sr-only="true"
|
||||
category="tertiary"
|
||||
:toggle-text="$options.i18n.moreActions"
|
||||
text-sr-only
|
||||
no-caret
|
||||
>
|
||||
<gl-dropdown-item data-testid="action-delete" variant="danger" @click="$emit('delete')">{{
|
||||
$options.i18n.deletePackage
|
||||
}}</gl-dropdown-item>
|
||||
</gl-dropdown>
|
||||
<gl-disclosure-dropdown-item data-testid="action-delete" @action="$emit('delete')">
|
||||
<template #list-item>
|
||||
<span class="gl-text-red-500">
|
||||
{{ $options.i18n.deletePackage }}
|
||||
</span>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
</gl-disclosure-dropdown>
|
||||
</template>
|
||||
</list-item>
|
||||
</template>
|
||||
|
@ -86,7 +86,7 @@ export const confidentialityInfoText = (workspaceType, issuableType) =>
|
||||
),
|
||||
{
|
||||
workspaceType: workspaceType === WORKSPACE_PROJECT ? __('project') : __('group'),
|
||||
issuableType: issuableType === TYPE_ISSUE ? __('issue') : __('epic'),
|
||||
issuableType: issuableType.toLowerCase(),
|
||||
permissions:
|
||||
issuableType === TYPE_ISSUE
|
||||
? __('at least the Reporter role, the author, and assignees')
|
||||
|
@ -1,8 +1,10 @@
|
||||
<script>
|
||||
import { GlAvatarLink, GlSprintf } from '@gitlab/ui';
|
||||
import { GlAvatarLink, GlSprintf, GlLoadingIcon } from '@gitlab/ui';
|
||||
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
|
||||
import { WORKSPACE_PROJECT } from '~/issues/constants';
|
||||
import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
|
||||
import WorkItemStateBadge from '~/work_items/components/work_item_state_badge.vue';
|
||||
import ConfidentialityBadge from '~/vue_shared/components/confidentiality_badge.vue';
|
||||
import WorkItemTypeIcon from '~/work_items/components/work_item_type_icon.vue';
|
||||
import workItemByIidQuery from '../graphql/work_item_by_iid.query.graphql';
|
||||
|
||||
@ -13,6 +15,8 @@ export default {
|
||||
TimeAgoTooltip,
|
||||
WorkItemStateBadge,
|
||||
WorkItemTypeIcon,
|
||||
ConfidentialityBadge,
|
||||
GlLoadingIcon,
|
||||
},
|
||||
inject: ['fullPath'],
|
||||
props: {
|
||||
@ -21,6 +25,11 @@ export default {
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
updateInProgress: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
createdAt() {
|
||||
@ -44,6 +53,9 @@ export default {
|
||||
workItemIconName() {
|
||||
return this.workItem?.workItemType?.iconName;
|
||||
},
|
||||
isWorkItemConfidential() {
|
||||
return this.workItem?.confidential;
|
||||
},
|
||||
},
|
||||
apollo: {
|
||||
workItem: {
|
||||
@ -62,12 +74,21 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
WORKSPACE_PROJECT,
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-mb-3 gl-text-gray-700">
|
||||
<work-item-state-badge v-if="workItemState" :work-item-state="workItemState" />
|
||||
<gl-loading-icon v-if="updateInProgress" :inline="true" class="gl-mr-3" />
|
||||
<confidentiality-badge
|
||||
v-if="isWorkItemConfidential"
|
||||
class="gl-vertical-align-middle gl-display-inline-flex!"
|
||||
data-testid="confidential"
|
||||
:workspace-type="$options.WORKSPACE_PROJECT"
|
||||
:issuable-type="workItemType"
|
||||
/>
|
||||
<work-item-type-icon
|
||||
class="gl-vertical-align-middle gl-mr-0!"
|
||||
:work-item-icon-name="workItemIconName"
|
||||
|
@ -5,7 +5,6 @@ import {
|
||||
GlSkeletonLoader,
|
||||
GlLoadingIcon,
|
||||
GlIcon,
|
||||
GlBadge,
|
||||
GlButton,
|
||||
GlTooltipDirective,
|
||||
GlEmptyState,
|
||||
@ -19,8 +18,9 @@ import { getIdFromGraphQLId } from '~/graphql_shared/utils';
|
||||
import { isLoggedIn } from '~/lib/utils/common_utils';
|
||||
import WorkItemTypeIcon from '~/work_items/components/work_item_type_icon.vue';
|
||||
import AbuseCategorySelector from '~/abuse_reports/components/abuse_category_selector.vue';
|
||||
import ConfidentialityBadge from '~/vue_shared/components/confidentiality_badge.vue';
|
||||
import { WORKSPACE_PROJECT } from '~/issues/constants';
|
||||
import {
|
||||
sprintfWorkItem,
|
||||
i18n,
|
||||
WIDGET_TYPE_ASSIGNEES,
|
||||
WIDGET_TYPE_NOTIFICATIONS,
|
||||
@ -60,7 +60,6 @@ export default {
|
||||
components: {
|
||||
WorkItemStateToggleButton,
|
||||
GlAlert,
|
||||
GlBadge,
|
||||
GlButton,
|
||||
GlLoadingIcon,
|
||||
GlSkeletonLoader,
|
||||
@ -79,6 +78,7 @@ export default {
|
||||
WorkItemDetailModal,
|
||||
AbuseCategorySelector,
|
||||
GlIntersectionObserver,
|
||||
ConfidentialityBadge,
|
||||
},
|
||||
mixins: [glFeatureFlagMixin()],
|
||||
inject: ['fullPath', 'reportAbusePath'],
|
||||
@ -186,9 +186,6 @@ export default {
|
||||
canAssignUnassignUser() {
|
||||
return this.workItemAssignees && this.canSetWorkItemMetadata;
|
||||
},
|
||||
confidentialTooltip() {
|
||||
return sprintfWorkItem(this.$options.i18n.confidentialTooltip, this.workItemType);
|
||||
},
|
||||
fullPath() {
|
||||
return this.workItem?.project.fullPath;
|
||||
},
|
||||
@ -377,8 +374,8 @@ export default {
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORKSPACE_PROJECT,
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -439,16 +436,6 @@ export default {
|
||||
/>
|
||||
{{ workItemBreadcrumbReference }}
|
||||
</div>
|
||||
<gl-loading-icon v-if="updateInProgress" :inline="true" class="gl-mr-3" />
|
||||
<gl-badge
|
||||
v-if="workItem.confidential"
|
||||
v-gl-tooltip.bottom
|
||||
:title="confidentialTooltip"
|
||||
variant="warning"
|
||||
icon="eye-slash"
|
||||
class="gl-mr-3 gl-cursor-help"
|
||||
>{{ __('Confidential') }}</gl-badge
|
||||
>
|
||||
<work-item-state-toggle-button
|
||||
v-if="canUpdate"
|
||||
:work-item-id="workItem.id"
|
||||
@ -503,7 +490,10 @@ export default {
|
||||
:can-update="canUpdate"
|
||||
@error="updateError = $event"
|
||||
/>
|
||||
<work-item-created-updated :work-item-iid="workItemIid" />
|
||||
<work-item-created-updated
|
||||
:work-item-iid="workItemIid"
|
||||
:update-in-progress="updateInProgress"
|
||||
/>
|
||||
</div>
|
||||
<gl-intersection-observer
|
||||
v-if="showIntersectionObserver"
|
||||
@ -523,15 +513,12 @@ export default {
|
||||
{{ workItem.title }}
|
||||
</span>
|
||||
<gl-loading-icon v-if="updateInProgress" class="gl-mr-3" />
|
||||
<gl-badge
|
||||
<confidentiality-badge
|
||||
v-if="workItem.confidential"
|
||||
v-gl-tooltip.bottom
|
||||
:title="confidentialTooltip"
|
||||
variant="warning"
|
||||
icon="eye-slash"
|
||||
class="gl-mr-3 gl-cursor-help"
|
||||
>{{ __('Confidential') }}</gl-badge
|
||||
>
|
||||
data-testid="confidential"
|
||||
:workspace-type="$options.WORKSPACE_PROJECT"
|
||||
:issuable-type="workItemType"
|
||||
/>
|
||||
<work-item-todos
|
||||
v-if="showWorkItemCurrentUserTodos"
|
||||
:work-item-id="workItem.id"
|
||||
|
@ -341,16 +341,10 @@ module Ci
|
||||
end
|
||||
|
||||
def to_deleted_object_attrs(pick_up_at = nil)
|
||||
final_path_store_dir, final_path_filename = nil
|
||||
if file_final_path.present?
|
||||
final_path_store_dir = File.dirname(file_final_path)
|
||||
final_path_filename = File.basename(file_final_path)
|
||||
end
|
||||
|
||||
{
|
||||
file_store: file_store,
|
||||
store_dir: final_path_store_dir || file.store_dir.to_s,
|
||||
file: final_path_filename || file_identifier,
|
||||
store_dir: file.store_dir.to_s,
|
||||
file: file_identifier,
|
||||
pick_up_at: pick_up_at || expire_at || Time.current
|
||||
}
|
||||
end
|
||||
|
@ -87,19 +87,23 @@ module Ci
|
||||
|
||||
scope :active, -> (value = true) { where(active: value) }
|
||||
scope :paused, -> { active(false) }
|
||||
scope :online, -> { where('contacted_at > ?', online_contact_time_deadline) }
|
||||
scope :online, -> { where(arel_table[:contacted_at].gt(online_contact_time_deadline)) }
|
||||
scope :recent, -> do
|
||||
where('ci_runners.created_at >= :datetime OR ci_runners.contacted_at >= :datetime', datetime: stale_deadline)
|
||||
timestamp = stale_deadline
|
||||
|
||||
where(arel_table[:created_at].gteq(timestamp).or(arel_table[:contacted_at].gteq(timestamp)))
|
||||
end
|
||||
scope :stale, -> do
|
||||
where('ci_runners.created_at <= :datetime AND ' \
|
||||
'(ci_runners.contacted_at IS NULL OR ci_runners.contacted_at <= :datetime)', datetime: stale_deadline)
|
||||
timestamp = stale_deadline
|
||||
|
||||
where(arel_table[:created_at].lteq(timestamp))
|
||||
.where(arel_table[:contacted_at].eq(nil).or(arel_table[:contacted_at].lteq(timestamp)))
|
||||
end
|
||||
scope :offline, -> { where(arel_table[:contacted_at].lteq(online_contact_time_deadline)) }
|
||||
scope :never_contacted, -> { where(contacted_at: nil) }
|
||||
scope :ordered, -> { order(id: :desc) }
|
||||
|
||||
scope :with_recent_runner_queue, -> { where('contacted_at > ?', recent_queue_deadline) }
|
||||
scope :with_recent_runner_queue, -> { where(arel_table[:contacted_at].gt(recent_queue_deadline)) }
|
||||
scope :with_running_builds, -> do
|
||||
where('EXISTS(?)',
|
||||
::Ci::Build.running.select(1)
|
||||
@ -513,7 +517,10 @@ module Ci
|
||||
private
|
||||
|
||||
scope :with_upgrade_status, ->(upgrade_status) do
|
||||
joins(:runner_version).where(runner_version: { status: upgrade_status })
|
||||
joins(:runner_managers)
|
||||
.joins("INNER JOIN #{RunnerVersion.quoted_table_name} runner_version " \
|
||||
"ON runner_version.version = #{RunnerManager.quoted_table_name}.version")
|
||||
.where(runner_version: { status: upgrade_status })
|
||||
end
|
||||
|
||||
EXECUTOR_NAME_TO_TYPES = {
|
||||
|
@ -9,10 +9,16 @@ class CommitStatus < Ci::ApplicationRecord
|
||||
include BulkInsertableAssociations
|
||||
include TaggableQueries
|
||||
|
||||
ROUTING_FEATURE_FLAG = :ci_partitioning_use_ci_builds_routing_table
|
||||
|
||||
self.table_name = 'ci_builds'
|
||||
self.sequence_name = 'ci_builds_id_seq'
|
||||
self.primary_key = :id
|
||||
partitionable scope: :pipeline
|
||||
|
||||
partitionable scope: :pipeline, through: {
|
||||
table: :p_ci_builds,
|
||||
flag: ROUTING_FEATURE_FLAG
|
||||
}
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :project
|
||||
|
@ -80,6 +80,7 @@ module Ci
|
||||
|
||||
def handle_partitionable_through(options)
|
||||
return unless options
|
||||
return if Gitlab::Utils.to_boolean(ENV['DISABLE_PARTITIONABLE_SWITCH'], default: false)
|
||||
|
||||
define_singleton_method(:routing_table_name) { options[:table] }
|
||||
define_singleton_method(:routing_table_name_flag) { options[:flag] }
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
module Ci
|
||||
module Partitionable
|
||||
MUTEX = Mutex.new
|
||||
|
||||
module Switch
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
@ -14,18 +16,39 @@ module Ci
|
||||
predicate_builder cached_find_by_statement].freeze
|
||||
|
||||
included do |base|
|
||||
partitioned = Class.new(base) do
|
||||
self.table_name = base.routing_table_name
|
||||
|
||||
def self.routing_class?
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
base.const_set(:Partitioned, partitioned)
|
||||
install_partitioned_class(base)
|
||||
end
|
||||
|
||||
class_methods do
|
||||
# `Class.new(partitionable_model)` triggers `partitionable_model.inherited`
|
||||
# and we need the mutex to break the recursion without adding extra accessors
|
||||
# on the model. This will be used during code loading, not runtime.
|
||||
#
|
||||
def install_partitioned_class(partitionable_model)
|
||||
Partitionable::MUTEX.synchronize do
|
||||
partitioned = Class.new(partitionable_model) do
|
||||
self.table_name = partitionable_model.routing_table_name
|
||||
|
||||
def self.routing_class?
|
||||
true
|
||||
end
|
||||
|
||||
def self.sti_name
|
||||
superclass.sti_name
|
||||
end
|
||||
end
|
||||
|
||||
partitionable_model.const_set(:Partitioned, partitioned)
|
||||
end
|
||||
end
|
||||
|
||||
def inherited(child_class)
|
||||
super
|
||||
return if Partitionable::MUTEX.owned?
|
||||
|
||||
install_partitioned_class(child_class)
|
||||
end
|
||||
|
||||
def routing_class?
|
||||
false
|
||||
end
|
||||
@ -51,6 +74,13 @@ module Ci
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def type_condition(table = arel_table)
|
||||
sti_column = table[inheritance_column]
|
||||
sti_names = ([self] + descendants).map(&:sti_name).uniq
|
||||
|
||||
predicate_builder.build(sti_column, sti_names)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1248,6 +1248,10 @@ class Repository
|
||||
prohibited_branches.each { |name| raw_repository.delete_branch(name) }
|
||||
end
|
||||
|
||||
def get_patch_id(old_revision, new_revision)
|
||||
raw_repository.get_patch_id(old_revision, new_revision)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def ancestor_cache_key(ancestor_id, descendant_id)
|
||||
|
@ -1,76 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Create Metrics::UsersStarredDashboard entry for given user based on matched dashboard_path, project
|
||||
module Metrics
|
||||
module UsersStarredDashboards
|
||||
class CreateService < ::BaseService
|
||||
include Stepable
|
||||
|
||||
steps :authorize_create_action,
|
||||
:parse_dashboard_path,
|
||||
:create
|
||||
|
||||
def initialize(user, project, dashboard_path)
|
||||
@user = user
|
||||
@project = project
|
||||
@dashboard_path = dashboard_path
|
||||
end
|
||||
|
||||
def execute
|
||||
keys = %i[status message starred_dashboard]
|
||||
status, message, dashboards = execute_steps.values_at(*keys)
|
||||
|
||||
if status != :success
|
||||
ServiceResponse.error(message: message)
|
||||
else
|
||||
ServiceResponse.success(payload: dashboards)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :user, :project, :dashboard_path
|
||||
|
||||
def authorize_create_action(_options)
|
||||
if Ability.allowed?(user, :create_metrics_user_starred_dashboard, project)
|
||||
success(user: user, project: project)
|
||||
else
|
||||
error(s_('MetricsUsersStarredDashboards|You are not authorized to add star to this dashboard'))
|
||||
end
|
||||
end
|
||||
|
||||
def parse_dashboard_path(options)
|
||||
if dashboard_path_exists?
|
||||
options[:dashboard_path] = dashboard_path
|
||||
success(options)
|
||||
else
|
||||
error(s_('MetricsUsersStarredDashboards|Dashboard with requested path can not be found'))
|
||||
end
|
||||
end
|
||||
|
||||
def create(options)
|
||||
starred_dashboard = build_starred_dashboard_from(options)
|
||||
|
||||
if starred_dashboard.save
|
||||
success(starred_dashboard: starred_dashboard)
|
||||
else
|
||||
error(starred_dashboard.errors.messages)
|
||||
end
|
||||
end
|
||||
|
||||
def build_starred_dashboard_from(options)
|
||||
Metrics::UsersStarredDashboard.new(
|
||||
user: options.fetch(:user),
|
||||
project: options.fetch(:project),
|
||||
dashboard_path: options.fetch(:dashboard_path)
|
||||
)
|
||||
end
|
||||
|
||||
def dashboard_path_exists?
|
||||
Gitlab::Metrics::Dashboard::Finder
|
||||
.find_all_paths(project)
|
||||
.any? { |dashboard| dashboard[:path] == dashboard_path }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -1,35 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Delete all matching Metrics::UsersStarredDashboard entries for given user based on matched dashboard_path, project
|
||||
module Metrics
|
||||
module UsersStarredDashboards
|
||||
class DeleteService < ::BaseService
|
||||
def initialize(user, project, dashboard_path = nil)
|
||||
@user = user
|
||||
@project = project
|
||||
@dashboard_path = dashboard_path
|
||||
end
|
||||
|
||||
def execute
|
||||
ServiceResponse.success(payload: { deleted_rows: starred_dashboards.delete_all })
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :user, :project, :dashboard_path
|
||||
|
||||
def starred_dashboards
|
||||
# since deleted records are scoped to their owner there is no need to
|
||||
# check if that user can delete them, also if user lost access to
|
||||
# project it shouldn't block that user from removing them
|
||||
dashboards = user.metrics_users_starred_dashboards
|
||||
|
||||
if dashboard_path.present?
|
||||
dashboards.for_project_dashboard(project, dashboard_path)
|
||||
else
|
||||
dashboards.for_project(project)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
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
|
@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/417762
|
||||
milestone: '16.3'
|
||||
type: development
|
||||
group: group::application performance
|
||||
default_enabled: false
|
||||
default_enabled: true
|
||||
|
@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/418795
|
||||
milestone: '16.3'
|
||||
type: development
|
||||
group: group::application performance
|
||||
default_enabled: false
|
||||
default_enabled: true
|
||||
|
@ -22,16 +22,6 @@ ci_build_report_results:
|
||||
- table: projects
|
||||
column: project_id
|
||||
on_delete: async_delete
|
||||
ci_builds:
|
||||
- table: users
|
||||
column: user_id
|
||||
on_delete: async_nullify
|
||||
- table: projects
|
||||
column: project_id
|
||||
on_delete: async_delete
|
||||
- table: ci_runners
|
||||
column: runner_id
|
||||
on_delete: async_nullify
|
||||
ci_daily_build_group_report_results:
|
||||
- table: namespaces
|
||||
column: group_id
|
||||
@ -260,6 +250,16 @@ namespaces:
|
||||
- table: organizations
|
||||
column: organization_id
|
||||
on_delete: async_nullify
|
||||
p_ci_builds:
|
||||
- table: users
|
||||
column: user_id
|
||||
on_delete: async_nullify
|
||||
- table: projects
|
||||
column: project_id
|
||||
on_delete: async_delete
|
||||
- table: ci_runners
|
||||
column: runner_id
|
||||
on_delete: async_nullify
|
||||
p_ci_builds_metadata:
|
||||
- table: projects
|
||||
column: project_id
|
||||
|
@ -17,7 +17,6 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_clusters_applications_cert_managers'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
milestone_removed: "14.4"
|
||||
|
@ -17,7 +17,6 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_clusters_applications_helm'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
milestone_removed: "14.4"
|
||||
|
@ -17,7 +17,6 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_clusters_applications_ingress'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
milestone_removed: "14.4"
|
||||
|
@ -17,7 +17,6 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_clusters_applications_knative'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
milestone_removed: "14.4"
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: usage_activity_by_stage_monthly.configure.clusters_management_project
|
||||
name: count_distinct_user_id_from_management_project_clusters
|
||||
description: Number of Kubernetes clusters with clusters management project being
|
||||
set
|
||||
product_section: ops
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_disabled_clusters'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_enabled_clusters'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_cluster_providers_gcp'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_cluster_providers_aws'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_user_provisioned_clusters'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_disabled_clusters_attached_to_instance'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_enabaled_clusters_attached_to_instance'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_clusters_attached_to_groups'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_enabled_clusters_attached_to_groups'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,6 +17,5 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_disabled_clusters_attached_to_projects'
|
||||
performance_indicator_type: []
|
||||
milestone: "<13.9"
|
||||
|
@ -17,7 +17,6 @@ tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
name: 'count_distinct_user_id_from_enabled_clusters_attached_to_projects'
|
||||
performance_indicator_type:
|
||||
- customer_health_score
|
||||
milestone: "<13.9"
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: usage_activity_by_stage_monthly.create.snippets
|
||||
name: count_distinct_author_id_from_snippets
|
||||
description: Count of distinct author_id from snippets for last 28 days
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: redis_hll_counters.code_review.i_code_review_user_resolve_conflict_monthly
|
||||
name: resolve_conflict
|
||||
description: Count of unique users per week who attempt to resolve a conflict through the ui
|
||||
product_stage: create
|
||||
product_group: code_review
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: redis_hll_counters.code_review.i_code_review_user_load_conflict_ui_monthly
|
||||
name: load_conflict_ui
|
||||
description: Count of unique users per week who load the conflict resolution page
|
||||
product_stage: create
|
||||
product_group: code_review
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_total_suggestions_added_monthly
|
||||
name: "count_notes_with_suggestions_monthly"
|
||||
description: Total number of monthly suggestions
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_total_suggestions_applied_monthly
|
||||
name: "count_notes_with_applied_suggestions_monthly"
|
||||
description: Total number of monthly suggestions applied
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_user_resolve_thread_in_issue_monthly
|
||||
name: resolve_thread_in_issue
|
||||
description: The number of users who resolve a thread in a new issue through the MR page monthly
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: usage_activity_by_stage_monthly.manage.user_auth_by_provider
|
||||
name: count_distinct_users_using_two_factor_authentication
|
||||
description: Number of unique user logins using two factor authentication for available providers
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: counts_monthly.promoted_issues
|
||||
name: count_promoted_issues
|
||||
description: Count of issues promoted to epics
|
||||
product_section: analytics
|
||||
product_stage: analytics
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.ci_templates.p_ci_templates_security_dast_on_demand_api_scan_monthly
|
||||
name: "dast_on_demand_api_scan"
|
||||
description: Count of pipelines using the latest DAST API template
|
||||
product_section: sec
|
||||
product_stage: secure
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_commit_monthly
|
||||
name: "count_notes_in_ipynb_diff_commit_monthly"
|
||||
description: Monthly notes on ipynb commit diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_monthly
|
||||
name: "count_notes_in_ipynb_diff_monthly"
|
||||
description: Monthly notes on ipynb diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_mr_monthly
|
||||
name: "count_notes_in_ipynb_diff_mr_monthly"
|
||||
description: Monthly notes on ipynb MR diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_commit_monthly
|
||||
name: "count_users_with_notes_in_ipynb_diff_commit_monthly"
|
||||
description: Monthly unique users with notes on ipynb commit diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_monthly
|
||||
name: "count_users_with_notes_in_ipynb_diff_monthly"
|
||||
description: Monthly unique users with notes on ipynb diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_mr_monthly
|
||||
name: "count_users_with_notes_in_ipynb_diff_mr_monthly"
|
||||
description: Monthly unique users with notes on ipynb MR diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: counts_monthly.unique_active_users
|
||||
name:
|
||||
description: Users that have a last_activity_on date within the past 28 days
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.incident_management.timeline_event_total_unique_counts_monthly
|
||||
name: count_unique_users_interacting_with_timeline_events_monthly
|
||||
description: Counts unique users for timeline events create, edit and delete events per month
|
||||
product_section: ops
|
||||
product_stage: monitor
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.analytics.p_analytics_ci_cd_time_to_restore_service_monthly
|
||||
name: p_analytics_ci_cd_time_to_restore_service_monthly
|
||||
description: Count of unique visits to the project level CI/CD Analytics Time to restore service tab
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.work_items.users_updating_weight_estimate_monthly
|
||||
name: users_updating_weight_estimate_monthly
|
||||
description: Unique users updating a work item's weight estimate
|
||||
product_section: dev
|
||||
product_stage: plan
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.analytics.p_analytics_ci_cd_change_failure_rate_monthly
|
||||
name: p_analytics_ci_cd_change_failure_rate_monthly
|
||||
description: Count of unique visits to the project level CI/CD Analytics Change failure rate tab
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.quickactions.i_quickactions_timeline_monthly
|
||||
name: quickactions_timeline_monthly
|
||||
description: Count of MAU using the `/timeline` quick action
|
||||
product_section: ops
|
||||
product_stage: monitor
|
||||
|
@ -1,5 +1,4 @@
|
||||
key_path: redis_hll_counters.quickactions.i_quickactions_link_monthly
|
||||
name: quickactions_timeline_monthly
|
||||
description: Count of MAU using the `/link` quick action
|
||||
product_section: ops
|
||||
product_stage: monitor
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.runner.g_runner_fleet_read_jobs_statistics_monthly
|
||||
name: g_runner_fleet_read_jobs_statistics_monthly
|
||||
description: Count of unique users (monthly) who read runner job statistics
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: analytics_unique_visits.users_viewing_analytics_group_devops_adoption
|
||||
name: unique_users_viewing_analytics_group_devops_adoption
|
||||
description: Unique users viewing analytics group devops adoption
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: redis_hll_counters.code_review.i_code_review_user_load_conflict_ui_weekly
|
||||
name: load_conflict_ui
|
||||
description: Count of unique users per week who load the conflict resolution page
|
||||
product_section: 'TBD'
|
||||
product_stage: create
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: redis_hll_counters.code_review.i_code_review_user_resolve_conflict_weekly
|
||||
name: resolve_conflict
|
||||
description: Count of unique users per week who attempt to resolve a conflict through the ui
|
||||
product_section: 'TBD'
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_total_suggestions_added_weekly
|
||||
name: "count_notes_with_suggestions_weekly"
|
||||
description: Total number of weekly suggestions
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_total_suggestions_applied_weekly
|
||||
name: "count_notes_with_applied_suggestions_weekly"
|
||||
description: Total number of weekly suggestions applied
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_user_resolve_thread_in_issue_weekly
|
||||
name: resolve_thread_in_issue
|
||||
description: The number of users who resolve a thread in a new issue through the MR page weekly
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: counts.templates_gitlab_slack_application_active
|
||||
name: count_templates_gitlab_slack_application_active
|
||||
description: Count templates with active slack application
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.ci_templates.p_ci_templates_security_dast_on_demand_api_scan_weekly
|
||||
name: "dast_on_demand_api_scan"
|
||||
description: Count of pipelines using the latest DAST API template
|
||||
product_section: sec
|
||||
product_stage: secure
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_commit_weekly
|
||||
name: "count_notes_in_ipynb_diff_commit_weekly"
|
||||
description: Weekly notes on ipynb commit diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_mr_weekly
|
||||
name: "count_notes_in_ipynb_diff_mr_weekly"
|
||||
description: Weekly notes on ipynb MR diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_weekly
|
||||
name: "count_notes_in_ipynb_diff_weekly"
|
||||
description: Weekly notes on ipynb diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_commit_weekly
|
||||
name: "count_users_with_notes_in_ipynb_diff_commit_weekly"
|
||||
description: Weekly unique users with notes on ipynb commit diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_mr_weekly
|
||||
name: "count_users_with_notes_in_ipynb_diff_mr_weekly"
|
||||
description: Weekly unique users with notes on ipynb MR diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_weekly
|
||||
name: "count_users_with_notes_in_ipynb_diff_weekly"
|
||||
description: Weekly unique users with notes on ipynb diffs
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.incident_management.timeline_event_total_unique_counts_weekly
|
||||
name: count_unique_users_interacting_with_timeline_events_weekly
|
||||
description: Counts unique users for timeline events create, edit and delete events per month
|
||||
product_section: ops
|
||||
product_stage: monitor
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.analytics.p_analytics_ci_cd_time_to_restore_service_weekly
|
||||
name: p_analytics_ci_cd_time_to_restore_service_weekly
|
||||
description: Count of unique visits to the project level CI/CD Analytics Time to restore service tab
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.work_items.users_updating_weight_estimate_weekly
|
||||
name: users_updating_weight_estimate_weekly
|
||||
description: Unique users updating a work item's weight estimate
|
||||
product_section: dev
|
||||
product_stage: plan
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.analytics.p_analytics_ci_cd_change_failure_rate_weekly
|
||||
name: p_analytics_ci_cd_change_failure_rate_weekly
|
||||
description: Count of unique visits to the project level CI/CD Analytics Change failure rate tab
|
||||
product_section: dev
|
||||
product_stage: manage
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.quickactions.i_quickactions_timeline_weekly
|
||||
name: quickactions_timeline_weekly
|
||||
description: Count of WAU using the `/timeline` quick action
|
||||
product_section: ops
|
||||
product_stage: monitor
|
||||
|
@ -1,5 +1,4 @@
|
||||
key_path: redis_hll_counters.quickactions.i_quickactions_link_weekly
|
||||
name: quickactions_timeline_weekly
|
||||
description: Count of WAU using the `/link` quick action
|
||||
product_section: ops
|
||||
product_stage: monitor
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.runner.g_runner_fleet_read_jobs_statistics_weekly
|
||||
name: g_runner_fleet_read_jobs_statistics_weekly
|
||||
description: Count of unique users (weekly) who read runner job statistics
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.quickactions.i_quickactions_blocked_by_weekly
|
||||
name: quickactions_blocked_by_weekly
|
||||
description: Count of MAU using the `/blocked_by` quick action
|
||||
product_section: dev
|
||||
product_stage: plan
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.quickactions.i_quickactions_blocks_weekly
|
||||
name: quickactions_blocks_weekly
|
||||
description: Count of MAU using the `/blocks` quick action
|
||||
product_section: dev
|
||||
product_stage: plan
|
||||
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
key_path: redis_hll_counters.quickactions.i_quickactions_promote_to_weekly
|
||||
name: quickactions_promote_to_weekly
|
||||
description: Count of WAU using the `/promote_to` quick action
|
||||
product_section: dev
|
||||
product_stage: plan
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: usage_activity_by_stage.create.snippets
|
||||
name: count_distinct_author_id_from_snippets
|
||||
description: Count of distinct author_id from snippets
|
||||
product_section: dev
|
||||
product_stage: create
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: operational
|
||||
key_path: counts.ci_runners_instance_type_active
|
||||
name: "count_active_instance_ci_runners"
|
||||
description: Total active Shared (Instance) Runners
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: operational
|
||||
key_path: counts.ci_runners_group_type_active
|
||||
name: "count_active_group_ci_runners"
|
||||
description: Total active Group Runners
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: operational
|
||||
key_path: counts.ci_runners_project_type_active
|
||||
name: "count_active_project_ci_runners"
|
||||
description: Total active Specific (Project) Runners
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.ci_runners_online
|
||||
name: "counts_online_runners"
|
||||
description: Total online Runners of all types
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.ci_runners_instance_type_active_online
|
||||
name: "count_instance_active_online_ci_runners"
|
||||
description: Total active and online Shared (Instance) Runners
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.ci_runners_group_type_active_online
|
||||
name: "count_group_active_online_ci_runners"
|
||||
description: Total active and online Group Runners
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.ci_runners_project_type_active_online
|
||||
name: "count_project_active_online_ci_runners"
|
||||
description: Total active and online Specific (Project) Runners
|
||||
product_section: ops
|
||||
product_stage: verify
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_create_0_sent
|
||||
name: "count_sent_first_email_of_the_create_track_for_in_product_marketing_emails"
|
||||
description: Total sent emails of the create track's first email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_create_0_cta_clicked
|
||||
name: "count_clicks_on_the_first_email_of_the_create_track_for_in_product_marketing_emails"
|
||||
description: Total clicks on the create track's first email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_create_1_sent
|
||||
name: "count_sent_second_email_of_the_create_track_for_in_product_marketing_emails"
|
||||
description: Total sent emails of the create track's second email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_create_1_cta_clicked
|
||||
name: "count_clicks_on_the_second_email_of_the_create_track_for_in_product_marketing_emails"
|
||||
description: Total clicks on the create track's second email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_create_2_sent
|
||||
name: "count_sent_third_email_of_the_create_track_for_in_product_marketing_emails"
|
||||
description: Total sent emails of the create track's third email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_create_2_cta_clicked
|
||||
name: "count_clicks_on_the_third_email_of_the_create_track_for_in_product_marketing_emails"
|
||||
description: Total clicks on the create track's third email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_verify_0_sent
|
||||
name: "count_sent_first_email_of_the_verify_track_for_in_product_marketing_emails"
|
||||
description: Total sent emails of the verify track's first email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_verify_0_cta_clicked
|
||||
name: "count_clicks_on_the_first_email_of_the_verify_track_for_in_product_marketing_emails"
|
||||
description: Total clicks on the verify track's first email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_verify_1_sent
|
||||
name: "count_sent_second_email_of_the_verify_track_for_in_product_marketing_emails"
|
||||
description: Total sent emails of the verify track's second email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_verify_1_cta_clicked
|
||||
name: "count_clicks_on_the_second_email_of_the_verify_track_for_in_product_marketing_emails"
|
||||
description: Total clicks on the verify track's second email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_verify_2_sent
|
||||
name: "count_sent_third_email_of_the_verify_track_for_in_product_marketing_emails"
|
||||
description: Total sent emails of the verify track's third email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_verify_2_cta_clicked
|
||||
name: "count_clicks_on_the_third_email_of_the_verify_track_for_in_product_marketing_emails"
|
||||
description: Total clicks on the verify track's third email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
data_category: optional
|
||||
key_path: counts.in_product_marketing_email_trial_0_sent
|
||||
name: "count_sent_first_email_of_the_trial_track_for_in_product_marketing_emails"
|
||||
description: Total sent emails of the trial track's first email
|
||||
product_section: 'TBD'
|
||||
product_stage: growth
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user