Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
f830a15de6
commit
debd8f45f8
|
|
@ -1,13 +1,45 @@
|
|||
<script>
|
||||
import { __ } from '~/locale';
|
||||
import { DISPLAY_QUERY_GROUPS, DISPLAY_QUERY_PROJECTS } from '../constants';
|
||||
import { GlCollapsibleListbox, GlSorting, GlSortingItem } from '@gitlab/ui';
|
||||
import { isEqual } from 'lodash';
|
||||
import { s__, __ } from '~/locale';
|
||||
import FilteredSearchBar from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue';
|
||||
import {
|
||||
filterToQueryObject,
|
||||
processFilters,
|
||||
urlQueryToFilter,
|
||||
prepareTokens,
|
||||
} from '~/vue_shared/components/filtered_search_bar/filtered_search_utils';
|
||||
import {
|
||||
FILTERED_SEARCH_TERM,
|
||||
TOKEN_EMPTY_SEARCH_TERM,
|
||||
} from '~/vue_shared/components/filtered_search_bar/constants';
|
||||
import {
|
||||
DISPLAY_QUERY_GROUPS,
|
||||
DISPLAY_QUERY_PROJECTS,
|
||||
DISPLAY_LISTBOX_ITEMS,
|
||||
SORT_DIRECTION_ASC,
|
||||
SORT_DIRECTION_DESC,
|
||||
SORT_ITEMS,
|
||||
SORT_ITEM_CREATED,
|
||||
FILTERED_SEARCH_TERM_KEY,
|
||||
} from '../constants';
|
||||
import GroupsPage from './groups_page.vue';
|
||||
import ProjectsPage from './projects_page.vue';
|
||||
|
||||
export default {
|
||||
i18n: {
|
||||
pageTitle: __('Groups and projects'),
|
||||
searchInputPlaceholder: s__('Organization|Search or filter list'),
|
||||
displayListboxHeaderText: __('Display'),
|
||||
},
|
||||
components: { FilteredSearchBar, GlCollapsibleListbox, GlSorting, GlSortingItem },
|
||||
filteredSearch: {
|
||||
tokens: [],
|
||||
namespace: 'organization_groups_and_projects',
|
||||
recentSearchesStorageKey: 'organization_groups_and_projects',
|
||||
},
|
||||
displayListboxItems: DISPLAY_LISTBOX_ITEMS,
|
||||
sortItems: SORT_ITEMS,
|
||||
computed: {
|
||||
routerView() {
|
||||
const { display } = this.$route.query;
|
||||
|
|
@ -23,6 +55,74 @@ export default {
|
|||
return GroupsPage;
|
||||
}
|
||||
},
|
||||
activeSortItem() {
|
||||
return this.$options.sortItems.find((sortItem) => sortItem.name === this.sortName);
|
||||
},
|
||||
sortName() {
|
||||
return this.$route.query.sort_name || SORT_ITEM_CREATED.name;
|
||||
},
|
||||
isAscending() {
|
||||
return this.$route.query.sort_direction !== SORT_DIRECTION_DESC;
|
||||
},
|
||||
sortText() {
|
||||
return this.activeSortItem.text;
|
||||
},
|
||||
filteredSearchValue() {
|
||||
const tokens = prepareTokens(
|
||||
urlQueryToFilter(this.$route.query, {
|
||||
filteredSearchTermKey: FILTERED_SEARCH_TERM_KEY,
|
||||
filterNamesAllowList: [FILTERED_SEARCH_TERM],
|
||||
}),
|
||||
);
|
||||
|
||||
return tokens.length ? tokens : [TOKEN_EMPTY_SEARCH_TERM];
|
||||
},
|
||||
displayListboxSelected() {
|
||||
const { display } = this.$route.query;
|
||||
|
||||
return [DISPLAY_QUERY_GROUPS, DISPLAY_QUERY_PROJECTS].includes(display)
|
||||
? display
|
||||
: DISPLAY_QUERY_GROUPS;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
pushQuery(query) {
|
||||
const currentQuery = this.$route.query;
|
||||
|
||||
if (isEqual(currentQuery, query)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.$router.push({ query });
|
||||
},
|
||||
onDisplayListboxSelect(display) {
|
||||
this.pushQuery({ display });
|
||||
},
|
||||
onSortItemClick(sortItem) {
|
||||
if (this.$route.query.sort_name === sortItem.name) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.pushQuery({ ...this.$route.query, sort_name: sortItem.name });
|
||||
},
|
||||
onSortDirectionChange(isAscending) {
|
||||
this.pushQuery({
|
||||
...this.$route.query,
|
||||
sort_direction: isAscending ? SORT_DIRECTION_ASC : SORT_DIRECTION_DESC,
|
||||
});
|
||||
},
|
||||
onFilter(filters) {
|
||||
const { display, sort_name, sort_direction } = this.$route.query;
|
||||
|
||||
this.pushQuery({
|
||||
display,
|
||||
sort_name,
|
||||
sort_direction,
|
||||
...filterToQueryObject(processFilters(filters), {
|
||||
filteredSearchTermKey: FILTERED_SEARCH_TERM_KEY,
|
||||
}),
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
@ -30,6 +130,49 @@ export default {
|
|||
<template>
|
||||
<div>
|
||||
<h1 class="gl-font-size-h-display">{{ $options.i18n.pageTitle }}</h1>
|
||||
<div class="gl-p-5 gl-bg-gray-10 gl-border-t gl-border-b">
|
||||
<div class="gl-mx-n2 gl-my-n2 gl-md-display-flex">
|
||||
<div class="gl-p-2 gl-flex-grow-1">
|
||||
<filtered-search-bar
|
||||
:namespace="$options.filteredSearch.namespace"
|
||||
:tokens="$options.filteredSearch.tokens"
|
||||
:initial-filter-value="filteredSearchValue"
|
||||
sync-filter-and-sort
|
||||
:recent-searches-storage-key="$options.filteredSearch.recentSearchesStorageKey"
|
||||
:search-input-placeholder="$options.i18n.searchInputPlaceholder"
|
||||
@onFilter="onFilter"
|
||||
/>
|
||||
</div>
|
||||
<div class="gl-p-2">
|
||||
<gl-collapsible-listbox
|
||||
:selected="displayListboxSelected"
|
||||
:items="$options.displayListboxItems"
|
||||
:header-text="$options.i18n.displayListboxHeaderText"
|
||||
block
|
||||
toggle-class="gl-md-w-30"
|
||||
@select="onDisplayListboxSelect"
|
||||
/>
|
||||
</div>
|
||||
<div class="gl-p-2">
|
||||
<gl-sorting
|
||||
class="gl-display-flex"
|
||||
dropdown-class="gl-w-full"
|
||||
:text="sortText"
|
||||
:is-ascending="isAscending"
|
||||
@sortDirectionChange="onSortDirectionChange"
|
||||
>
|
||||
<gl-sorting-item
|
||||
v-for="sortItem in $options.sortItems"
|
||||
:key="sortItem.name"
|
||||
:active="activeSortItem.name === sortItem.name"
|
||||
@click="onSortItemClick(sortItem)"
|
||||
>
|
||||
{{ sortItem.text }}
|
||||
</gl-sorting-item>
|
||||
</gl-sorting>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<component :is="routerView" />
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,29 @@
|
|||
import { __ } from '~/locale';
|
||||
|
||||
export const DISPLAY_QUERY_GROUPS = 'groups';
|
||||
export const DISPLAY_QUERY_PROJECTS = 'projects';
|
||||
|
||||
export const ORGANIZATION_ROOT_ROUTE_NAME = 'root';
|
||||
|
||||
export const FILTERED_SEARCH_TERM_KEY = 'search';
|
||||
|
||||
export const DISPLAY_LISTBOX_ITEMS = [
|
||||
{
|
||||
value: DISPLAY_QUERY_GROUPS,
|
||||
text: __('Groups'),
|
||||
},
|
||||
{
|
||||
value: DISPLAY_QUERY_PROJECTS,
|
||||
text: __('Projects'),
|
||||
},
|
||||
];
|
||||
|
||||
export const SORT_DIRECTION_ASC = 'asc';
|
||||
export const SORT_DIRECTION_DESC = 'desc';
|
||||
|
||||
export const SORT_ITEM_CREATED = {
|
||||
name: 'created',
|
||||
text: __('Created'),
|
||||
};
|
||||
|
||||
export const SORT_ITEMS = [SORT_ITEM_CREATED];
|
||||
|
|
|
|||
|
|
@ -52,6 +52,13 @@ export const SORT_DIRECTION = {
|
|||
|
||||
export const FILTERED_SEARCH_TERM = 'filtered-search-term';
|
||||
|
||||
export const TOKEN_EMPTY_SEARCH_TERM = {
|
||||
type: FILTERED_SEARCH_TERM,
|
||||
value: {
|
||||
data: '',
|
||||
},
|
||||
};
|
||||
|
||||
export const TOKEN_TITLE_APPROVED_BY = __('Approved-By');
|
||||
export const TOKEN_TITLE_ASSIGNEE = s__('SearchToken|Assignee');
|
||||
export const TOKEN_TITLE_AUTHOR = __('Author');
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { isEmpty, uniqWith, isEqual } from 'lodash';
|
||||
import { isEmpty, uniqWith, isEqual, isString } from 'lodash';
|
||||
import AccessorUtilities from '~/lib/utils/accessor';
|
||||
import { queryToObject } from '~/lib/utils/url_utility';
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ function filteredSearchTermValue(value) {
|
|||
* '?myFilterName=foo'
|
||||
* gets translated into:
|
||||
* { myFilterName: { value: 'foo', operator: '=' } }
|
||||
* @param {String} query URL query string, e.g. from `window.location.search`
|
||||
* @param {String|Object} query URL query string or object, e.g. from `window.location.search` or `this.$route.query`
|
||||
* @param {Object} options
|
||||
* @param {Object} options
|
||||
* @param {String} [options.filteredSearchTermKey] if set, a FILTERED_SEARCH_TERM filter is created to this parameter. `'search'` is suggested
|
||||
|
|
@ -167,7 +167,7 @@ function filteredSearchTermValue(value) {
|
|||
* @return {Object} filter object with filter names and their values
|
||||
*/
|
||||
export function urlQueryToFilter(query = '', { filteredSearchTermKey, filterNamesAllowList } = {}) {
|
||||
const filters = queryToObject(query, { gatherArrays: true });
|
||||
const filters = isString(query) ? queryToObject(query, { gatherArrays: true }) : query;
|
||||
return Object.keys(filters).reduce((memo, key) => {
|
||||
const value = filters[key];
|
||||
if (!value) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class BackfillDefaultBranchProtectionApplicationSetting < Gitlab::Database::Migration[2.1]
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
class ApplicationSetting < MigrationRecord
|
||||
self.table_name = 'application_settings'
|
||||
end
|
||||
|
||||
BRANCH_PROTECTION = [
|
||||
{ "allow_force_push" => true,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 30 }] },
|
||||
{ "allow_force_push" => false,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 30 }] },
|
||||
{ "allow_force_push" => false,
|
||||
"allowed_to_merge" => [{ "access_level" => 40 }],
|
||||
"allowed_to_push" => [{ "access_level" => 40 }] },
|
||||
{ "allow_force_push" => true,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 40 }] },
|
||||
{ "allow_force_push" => true,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 40 }],
|
||||
"developer_can_initial_push" => true }
|
||||
]
|
||||
|
||||
def up
|
||||
ApplicationSetting.reset_column_information
|
||||
|
||||
ApplicationSetting.find_each do |application_setting|
|
||||
level = application_setting.default_branch_protection.to_i
|
||||
protection_hash = BRANCH_PROTECTION[level]
|
||||
application_setting.update!(default_branch_protection_defaults: protection_hash)
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
ApplicationSetting.reset_column_information
|
||||
|
||||
ApplicationSetting.update_all(default_branch_protection_defaults: {})
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
2fbe6ccc23b398419e52a599b9c748a9d592d53369569e8b865d0ec1f4d99b0d
|
||||
|
|
@ -351,10 +351,7 @@ To generate these known events for a single widget:
|
|||
```
|
||||
|
||||
1. Repeat step 6, but change the `data_source` to `redis_hll`.
|
||||
1. Add each of the HLL metrics to `lib/gitlab/usage_data_counters/known_events/code_review_events.yml`:
|
||||
1. `name` = (the event)
|
||||
1. `category` = `code_review`
|
||||
1. `aggregation` = `weekly`
|
||||
|
||||
1. Add each event (those listed in the command in step 7, replacing `test_reports`
|
||||
with the appropriate name slug) to the aggregate files:
|
||||
1. `config/metrics/counts_7d/{timestamp}_code_review_category_monthly_active_users.yml`
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ module Integrations
|
|||
end
|
||||
```
|
||||
|
||||
### Customize the frontend form
|
||||
## Customize the frontend form
|
||||
|
||||
The frontend form is generated dynamically based on metadata defined in the model.
|
||||
|
||||
|
|
@ -182,26 +182,26 @@ This method should return an array of hashes for each field, where the keys can
|
|||
| `help:` | string | false | | A help text that displays below the form field.
|
||||
| `api_only:` | boolean | false | `false` | Specify if the field should only be available through the API, and excluded from the frontend form.
|
||||
|
||||
#### Additional keys for `type: 'checkbox'`
|
||||
### Additional keys for `type: 'checkbox'`
|
||||
|
||||
| Key | Type | Required | Default | Description
|
||||
|:------------------|:-------|:---------|:------------------|:--
|
||||
| `checkbox_label:` | string | false | Value of `title:` | A custom label that displays next to the checkbox.
|
||||
|
||||
#### Additional keys for `type: 'select'`
|
||||
### Additional keys for `type: 'select'`
|
||||
|
||||
| Key | Type | Required | Default | Description
|
||||
|:-----------|:------|:---------|:--------|:--
|
||||
| `choices:` | array | true | | A nested array of `[label, value]` tuples.
|
||||
|
||||
#### Additional keys for `type: 'password'`
|
||||
### Additional keys for `type: 'password'`
|
||||
|
||||
| Key | Type | Required | Default | Description
|
||||
|:----------------------------|:-------|:---------|:------------------|:--
|
||||
| `non_empty_password_title:` | string | false | Value of `title:` | An alternative label that displays when a value is already stored.
|
||||
| `non_empty_password_help:` | string | false | Value of `help:` | An alternative help text that displays when a value is already stored.
|
||||
|
||||
#### Frontend form examples
|
||||
### Frontend form examples
|
||||
|
||||
This example defines a required `url` field, and optional `username` and `password` fields:
|
||||
|
||||
|
|
@ -236,7 +236,7 @@ module Integrations
|
|||
end
|
||||
```
|
||||
|
||||
### Expose the integration in the REST API
|
||||
## Expose the integration in the REST API
|
||||
|
||||
To expose the integration in the [REST API](../../api/integrations.md):
|
||||
|
||||
|
|
|
|||
|
|
@ -323,25 +323,7 @@ Implemented using Redis methods [PFADD](https://redis.io/commands/pfadd/) and [P
|
|||
|
||||
##### Add new events
|
||||
|
||||
1. Define events in [`known_events`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/).
|
||||
|
||||
Example event:
|
||||
|
||||
```yaml
|
||||
- name: users_creating_epics
|
||||
aggregation: weekly
|
||||
```
|
||||
|
||||
Keys:
|
||||
|
||||
- `name`: unique event name.
|
||||
|
||||
Name format for Redis HLL events `{hll_counters}_<name>`
|
||||
|
||||
Example names: `users_creating_epics`, `users_triggering_security_scans`.
|
||||
|
||||
- `aggregation`: may be set to a `:daily` or `:weekly` key. Defines how counting data is stored in Redis.
|
||||
Aggregation on a `daily` basis does not pull more fine grained data.
|
||||
1. Add an event to the required metric ([see example](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20230210200054_i_ee_code_review_merge_request_widget_license_compliance_expand_weekly.yml#L17-17)) or create a metric.
|
||||
|
||||
1. Use one of the following methods to track the event:
|
||||
|
||||
|
|
@ -446,7 +428,7 @@ Implemented using Redis methods [PFADD](https://redis.io/commands/pfadd/) and [P
|
|||
|
||||
- Using the JavaScript/Vue API helper, which calls the [`UsageData` API](#usagedata-api).
|
||||
|
||||
Example for an existing event already defined in [known events](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/):
|
||||
Example for an existing event already defined in [metric fields](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20220407125907_p_ci_templates_themekit_monthly.yml#L17-17):
|
||||
|
||||
```javascript
|
||||
import api from '~/api';
|
||||
|
|
@ -484,7 +466,6 @@ Next, get the unique events for the current week.
|
|||
|
||||
We have the following recommendations for [adding new events](#add-new-events):
|
||||
|
||||
- Event aggregation: weekly.
|
||||
- When adding new metrics, use a [feature flag](../../../operations/feature_flags.md) to control the impact.
|
||||
It's recommended to disable the new feature flag by default (set `default_enabled: false`).
|
||||
- Events can be triggered using the `UsageData` API, which helps when there are > 10 events per change
|
||||
|
|
@ -500,7 +481,7 @@ We can disable tracking completely by using the global flag:
|
|||
|
||||
##### Known events are added automatically in Service Data payload
|
||||
|
||||
Service Ping adds all events [`known_events/*.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events) to Service Data generation under the `redis_hll_counters` key. This column is stored in [version-app as a JSON](https://gitlab.com/gitlab-org/gitlab-services/version.gitlab.com/-/blob/main/db/schema.rb#L213).
|
||||
Service Ping adds all events to Service Data generation under the `redis_hll_counters` key. This column is stored in [version-app as a JSON](https://gitlab.com/gitlab-org/gitlab-services/version.gitlab.com/-/blob/main/db/schema.rb#L213).
|
||||
For each event we add metrics for the weekly and monthly time frames, and totals for each where applicable:
|
||||
|
||||
- `#{event_name}_weekly`: Data for 7 days for daily [aggregation](#add-new-events) events and data for the last complete week for weekly [aggregation](#add-new-events) events.
|
||||
|
|
@ -539,8 +520,6 @@ Example:
|
|||
# Redis Counters
|
||||
redis_usage_data(Gitlab::UsageDataCounters::WikiPageCounter)
|
||||
|
||||
# Define events in common.yml https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml
|
||||
|
||||
# Tracking events
|
||||
Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_expanding_vulnerabilities', values: visitor_id)
|
||||
|
||||
|
|
@ -804,13 +783,7 @@ create metric YAML definition file following [Aggregated metric instrumentation
|
|||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45979) in GitLab 13.6.
|
||||
|
||||
To declare the aggregate of events collected with [Redis HLL Counters](#redis-hll-counters),
|
||||
you must fulfill the following requirements:
|
||||
|
||||
1. All events listed at `events` attribute must come from
|
||||
[`known_events/*.yml`](#known-events-are-added-automatically-in-service-data-payload) files.
|
||||
1. All events listed at `events` attribute must have the same `aggregation` attribute.
|
||||
1. `time_frame` does not include `all` value, which is unavailable for Redis sourced aggregated metrics.
|
||||
To declare the aggregate of events collected with [Redis HLL Counters](#redis-hll-counters), make sure `time_frame` does not include the `all` value, which is unavailable for Redis-sourced aggregated metrics.
|
||||
|
||||
While it is possible to aggregate EE-only events together with events that occur in all GitLab editions, it's important to remember that doing so may produce high variance between data collected from EE and CE GitLab instances.
|
||||
|
||||
|
|
|
|||
|
|
@ -130,20 +130,16 @@ which has a related schema in `/config/metrics/objects_schemas/topology_schema.j
|
|||
### Metric `time_frame`
|
||||
|
||||
A metric's time frame is calculated based on the `time_frame` field and the `data_source` of the metric.
|
||||
For `redis_hll` metrics, the type of aggregation is also taken into consideration. In this context, the term "aggregation" refers to [chosen events data storage interval](implement.md#add-new-events), and is **NOT** related to the Aggregated Metrics feature.
|
||||
For more information about the aggregation type of each feature, see the [`common.yml` file](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml). Weeks run from Monday to Sunday.
|
||||
|
||||
| data_source | time_frame | aggregation | Description |
|
||||
|------------------------|------------|----------------|-------------------------------------------------|
|
||||
| any | `none` | not applicable | A type of data that's not tracked over time, such as settings and configuration information |
|
||||
| `database` | `all` | not applicable | The whole time the metric has been active (all-time interval) |
|
||||
| `database` | `7d` | not applicable | 9 days ago to 2 days ago |
|
||||
| `database` | `28d` | not applicable | 30 days ago to 2 days ago |
|
||||
| `redis` | `all` | not applicable | The whole time the metric has been active (all-time interval) |
|
||||
| `redis_hll` | `7d` | `daily` | Most recent 7 complete days |
|
||||
| `redis_hll` | `7d` | `weekly` | Most recent complete week |
|
||||
| `redis_hll` | `28d` | `daily` | Most recent 28 complete days |
|
||||
| `redis_hll` | `28d` | `weekly` | Most recent 4 complete weeks |
|
||||
| data_source | time_frame | Description |
|
||||
|------------------------|------------|-------------------------------------------------|
|
||||
| any | `none` | A type of data that's not tracked over time, such as settings and configuration information |
|
||||
| `database` | `all` | The whole time the metric has been active (all-time interval) |
|
||||
| `database` | `7d` | 9 days ago to 2 days ago |
|
||||
| `database` | `28d` | 30 days ago to 2 days ago |
|
||||
| `redis` | `all` | The whole time the metric has been active (all-time interval) |
|
||||
| `redis_hll` | `7d` | Most recent complete week |
|
||||
| `redis_hll` | `28d` | Most recent 4 complete weeks |
|
||||
|
||||
### Data category
|
||||
|
||||
|
|
|
|||
|
|
@ -103,4 +103,3 @@ To remove a metric:
|
|||
|
||||
1. Remove any other records related to the metric:
|
||||
- The feature flag YAML file at [`config/feature_flags/*/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/feature_flags).
|
||||
- The entry in the known events YAML file at [`lib/gitlab/usage_data_counters/known_events/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/usage_data_counters/known_events).
|
||||
|
|
|
|||
|
|
@ -31,8 +31,6 @@ module Gitlab
|
|||
TOP_LEVEL_DIR = 'config'
|
||||
TOP_LEVEL_DIR_EE = 'ee'
|
||||
DESCRIPTION_MIN_LENGTH = 50
|
||||
KNOWN_EVENTS_PATH = 'lib/gitlab/usage_data_counters/known_events/common.yml'
|
||||
KNOWN_EVENTS_PATH_EE = 'ee/lib/ee/gitlab/usage_data_counters/known_events/common.yml'
|
||||
|
||||
DESCRIPTION_INQUIRY = %(
|
||||
Please describe in at least #{DESCRIPTION_MIN_LENGTH} characters
|
||||
|
|
@ -43,7 +41,7 @@ module Gitlab
|
|||
|
||||
source_root File.expand_path('../../../../generator_templates/gitlab_internal_events', __dir__)
|
||||
|
||||
desc 'Generates metric definitions, event definition yml files and known events entries'
|
||||
desc 'Generates metric definitions and event definition yml files'
|
||||
|
||||
class_option :skip_namespace,
|
||||
hide: true
|
||||
|
|
@ -104,9 +102,6 @@ module Gitlab
|
|||
"events, and event attributes in the description"
|
||||
)
|
||||
end
|
||||
|
||||
# ToDo: Delete during https://gitlab.com/groups/gitlab-org/-/epics/9542 cleanup
|
||||
append_file known_events_file_name, known_event_entry
|
||||
end
|
||||
|
||||
private
|
||||
|
|
@ -194,12 +189,7 @@ module Gitlab
|
|||
path
|
||||
end
|
||||
|
||||
def known_events_file_name
|
||||
(free? ? KNOWN_EVENTS_PATH : KNOWN_EVENTS_PATH_EE)
|
||||
end
|
||||
|
||||
def validate!
|
||||
raise "Required file: #{known_events_file_name} does not exists." unless File.exist?(known_events_file_name)
|
||||
raise "An event '#{event}' already exists" if event_exists?
|
||||
|
||||
validate_tiers!
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
module Gitlab::UsageDataCounters
|
||||
class CiTemplateUniqueCounter
|
||||
PREFIX = 'ci_templates'
|
||||
KNOWN_EVENTS_FILE_PATH = File.expand_path('known_events/ci_templates.yml', __dir__)
|
||||
|
||||
class << self
|
||||
def track_unique_project_event(project:, template:, config_source:, user:)
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
- name: users_viewing_analytics_group_devops_adoption
|
||||
aggregation: weekly
|
||||
- name: i_analytics_dev_ops_adoption
|
||||
aggregation: weekly
|
||||
- name: i_analytics_dev_ops_score
|
||||
aggregation: weekly
|
||||
- name: i_analytics_instance_statistics
|
||||
aggregation: weekly
|
||||
- name: p_analytics_pipelines
|
||||
aggregation: weekly
|
||||
- name: p_analytics_valuestream
|
||||
aggregation: weekly
|
||||
- name: p_analytics_repo
|
||||
aggregation: weekly
|
||||
- name: i_analytics_cohorts
|
||||
aggregation: weekly
|
||||
- name: p_analytics_ci_cd_pipelines
|
||||
aggregation: weekly
|
||||
- name: p_analytics_ci_cd_deployment_frequency
|
||||
aggregation: weekly
|
||||
- name: p_analytics_ci_cd_lead_time
|
||||
aggregation: weekly
|
||||
- name: p_analytics_ci_cd_time_to_restore_service
|
||||
aggregation: weekly
|
||||
- name: p_analytics_ci_cd_change_failure_rate
|
||||
aggregation: weekly
|
||||
|
|
@ -1,311 +0,0 @@
|
|||
# This file is generated automatically by
|
||||
# bin/rake gitlab:usage_data:generate_ci_template_events
|
||||
#
|
||||
# Do not edit it manually!
|
||||
---
|
||||
- name: p_ci_templates_terraform_base_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_terraform_base
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_dotnet
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_nodejs
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_openshift
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_auto_devops
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_bash
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_rust
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_elixir
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_clojure
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_crystal
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_getting_started
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_code_quality
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_verify_load_performance_testing
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_verify_accessibility
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_verify_failfast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_verify_browser_performance
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_verify_browser_performance_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_grails
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_sast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dast_runner_validation
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dast_on_demand_scan
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_secret_detection
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_license_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_coverage_fuzzing_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dast_on_demand_api_scan
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_coverage_fuzzing
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_api_fuzzing_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_secure_binaries
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dast_api
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_container_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dast_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_sast_iac
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dependency_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dast_api_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_container_scanning_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_api_fuzzing
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_dast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_api_discovery
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_fortify_fod_sast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_sast_iac_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_security_bas_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_qualys_iac_security
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_ios_fastlane
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_composer
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_c
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_python
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_android_fastlane
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_android_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_django
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_maven
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_liquibase
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_flutter
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_workflows_branch_pipelines
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_workflows_mergerequest_pipelines
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_laravel
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_kaniko
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_php
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_packer
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_themekit
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_terraform
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_katalon
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_mono
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_go
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_scala
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_latex
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_android
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_indeni_cloudrail
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_matlab
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_deploy_ecs
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_aws_cf_provision_and_deploy_ec2
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_aws_deploy_ecs
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_gradle
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_chef
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_dast_default_branch_deploy
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_load_performance_testing
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_helm_2to3
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_sast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_secret_detection
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_license_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_code_intelligence
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_code_quality
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_deploy_ecs
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_deploy_ec2
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_license_scanning_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_deploy
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_build
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_browser_performance_testing
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_container_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_container_scanning_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_dependency_scanning_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_test
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_sast_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_sast_iac
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_secret_detection_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_dependency_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_deploy_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_browser_performance_testing_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_cf_provision
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_build_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_jobs_sast_iac_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_terraform_latest
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_swift
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_jekyll
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_harp
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_octopress
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_brunch
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_doxygen
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_hyde
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_lektor
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_jbake
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_hexo
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_middleman
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_hugo
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_pelican
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_nanoc
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_swaggerui
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_jigsaw
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_metalsmith
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_gatsby
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_html
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_dart
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_docker
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_julia
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_npm
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_dotnet_core
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_5_minute_production_app
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_ruby
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_auto_devops
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_browser_performance_testing
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_build
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_code_intelligence
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_code_quality
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_container_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_dast_default_branch_deploy
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_dependency_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_deploy
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_deploy_ec2
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_deploy_ecs
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_helm_2to3
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_license_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_sast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_secret_detection
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_jobs_test
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_security_container_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_security_dast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_security_dependency_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_security_license_scanning
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_security_sast
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_implicit_security_secret_detection
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_terraform_module_base
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_terraform_module
|
||||
aggregation: weekly
|
||||
- name: p_ci_templates_pages_zola
|
||||
aggregation: weekly
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
- name: ci_users_executing_deployment_job
|
||||
aggregation: weekly
|
||||
- name: ci_users_executing_verify_environment_job
|
||||
aggregation: weekly
|
||||
|
|
@ -1,239 +0,0 @@
|
|||
---
|
||||
- name: i_code_review_create_note_in_ipynb_diff
|
||||
aggregation: weekly
|
||||
- name: i_code_review_create_note_in_ipynb_diff_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_create_note_in_ipynb_diff_commit
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_note_in_ipynb_diff
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_note_in_ipynb_diff_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_note_in_ipynb_diff_commit
|
||||
aggregation: weekly
|
||||
- name: i_code_review_mr_diffs
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_single_file_diffs
|
||||
aggregation: weekly
|
||||
- name: i_code_review_mr_single_file_diffs
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_toggled_task_item_status
|
||||
aggregation: weekly
|
||||
- name: i_code_review_create_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_close_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_reopen_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_approve_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_unapprove_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_resolve_thread
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_unresolve_thread
|
||||
aggregation: weekly
|
||||
- name: i_code_review_edit_mr_title
|
||||
aggregation: weekly
|
||||
- name: i_code_review_edit_mr_desc
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_merge_mr
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_mr_comment
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_edit_mr_comment
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_remove_mr_comment
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_review_note
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_publish_review
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_multiline_mr_comment
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_edit_multiline_mr_comment
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_remove_multiline_mr_comment
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_add_suggestion
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_apply_suggestion
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_assigned
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_marked_as_draft
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_unmarked_as_draft
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_review_requested
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_approval_rule_added
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_approval_rule_deleted
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_approval_rule_edited
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_vs_code_api_request
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_jetbrains_api_request
|
||||
aggregation: weekly
|
||||
- name: i_editor_extensions_user_jetbrains_bundled_api_request
|
||||
aggregation: weekly
|
||||
- name: i_editor_extensions_user_visual_studio_api_request
|
||||
aggregation: weekly
|
||||
- name: i_editor_extensions_user_neovim_plugin_api_request
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_gitlab_cli_api_request
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_create_mr_from_issue
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_mr_discussion_locked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_mr_discussion_unlocked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_time_estimate_changed
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_time_spent_changed
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_assignees_changed
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_reviewers_changed
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_milestone_changed
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_labels_changed
|
||||
aggregation: weekly
|
||||
# Diff settings events
|
||||
- name: i_code_review_click_diff_view_setting
|
||||
aggregation: weekly
|
||||
- name: i_code_review_click_single_file_mode_setting
|
||||
aggregation: weekly
|
||||
- name: i_code_review_click_file_browser_setting
|
||||
aggregation: weekly
|
||||
- name: i_code_review_click_whitespace_setting
|
||||
aggregation: weekly
|
||||
- name: i_code_review_diff_view_inline
|
||||
aggregation: weekly
|
||||
- name: i_code_review_diff_view_parallel
|
||||
aggregation: weekly
|
||||
- name: i_code_review_file_browser_tree_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_file_browser_list_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_diff_show_whitespace
|
||||
aggregation: weekly
|
||||
- name: i_code_review_diff_hide_whitespace
|
||||
aggregation: weekly
|
||||
- name: i_code_review_diff_single_file
|
||||
aggregation: weekly
|
||||
- name: i_code_review_diff_multiple_files
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_load_conflict_ui
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_resolve_conflict
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_searches_diff
|
||||
aggregation: weekly
|
||||
- name: i_code_review_total_suggestions_applied
|
||||
aggregation: weekly
|
||||
- name: i_code_review_total_suggestions_added
|
||||
aggregation: weekly
|
||||
- name: i_code_review_user_resolve_thread_in_issue
|
||||
aggregation: weekly
|
||||
- name: i_code_review_widget_nothing_merge_click_new_file
|
||||
aggregation: weekly
|
||||
- name: i_code_review_post_merge_delete_branch
|
||||
aggregation: weekly
|
||||
- name: i_code_review_post_merge_click_revert
|
||||
aggregation: weekly
|
||||
- name: i_code_review_post_merge_click_cherry_pick
|
||||
aggregation: weekly
|
||||
- name: i_code_review_post_merge_submit_revert_modal
|
||||
aggregation: weekly
|
||||
- name: i_code_review_post_merge_submit_cherry_pick_modal
|
||||
aggregation: weekly
|
||||
# MR Widget Extensions
|
||||
## Test Summary
|
||||
- name: i_code_review_merge_request_widget_test_summary_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_test_summary_full_report_clicked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_test_summary_expand
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_test_summary_expand_success
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_test_summary_expand_warning
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_test_summary_expand_failed
|
||||
aggregation: weekly
|
||||
## Accessibility
|
||||
- name: i_code_review_merge_request_widget_accessibility_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_accessibility_full_report_clicked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_accessibility_expand
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_accessibility_expand_success
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_accessibility_expand_warning
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_accessibility_expand_failed
|
||||
aggregation: weekly
|
||||
## Code Quality
|
||||
- name: i_code_review_merge_request_widget_code_quality_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_code_quality_full_report_clicked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_code_quality_expand
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_code_quality_expand_success
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_code_quality_expand_warning
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_code_quality_expand_failed
|
||||
aggregation: weekly
|
||||
## Terraform
|
||||
- name: i_code_review_merge_request_widget_terraform_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_terraform_full_report_clicked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_terraform_expand
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_terraform_expand_success
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_terraform_expand_warning
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_terraform_expand_failed
|
||||
aggregation: weekly
|
||||
- name: i_code_review_submit_review_approve
|
||||
aggregation: weekly
|
||||
- name: i_code_review_submit_review_comment
|
||||
aggregation: weekly
|
||||
## License Compliance
|
||||
- name: i_code_review_merge_request_widget_license_compliance_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_license_compliance_full_report_clicked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_license_compliance_expand
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_license_compliance_expand_success
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_license_compliance_expand_warning
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_license_compliance_expand_failed
|
||||
aggregation: weekly
|
||||
## Security Reports
|
||||
- name: i_code_review_merge_request_widget_security_reports_view
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_security_reports_full_report_clicked
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_security_reports_expand
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_security_reports_expand_success
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_security_reports_expand_warning
|
||||
aggregation: weekly
|
||||
- name: i_code_review_merge_request_widget_security_reports_expand_failed
|
||||
aggregation: weekly
|
||||
|
|
@ -1,167 +0,0 @@
|
|||
---
|
||||
# Compliance category
|
||||
- name: g_edit_by_web_ide
|
||||
aggregation: daily
|
||||
- name: g_edit_by_sfe
|
||||
aggregation: daily
|
||||
- name: g_edit_by_snippet_ide
|
||||
aggregation: daily
|
||||
- name: g_edit_by_live_preview
|
||||
aggregation: daily
|
||||
- name: i_search_total
|
||||
aggregation: weekly
|
||||
- name: wiki_action
|
||||
aggregation: daily
|
||||
- name: design_action
|
||||
aggregation: daily
|
||||
- name: project_action
|
||||
aggregation: daily
|
||||
- name: git_write_action
|
||||
aggregation: daily
|
||||
- name: merge_request_action
|
||||
aggregation: daily
|
||||
- name: i_source_code_code_intelligence
|
||||
aggregation: daily
|
||||
# Incident management
|
||||
- name: incident_management_alert_status_changed
|
||||
aggregation: weekly
|
||||
- name: incident_management_alert_assigned
|
||||
aggregation: weekly
|
||||
- name: incident_management_alert_todo
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_created
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_reopened
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_closed
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_assigned
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_todo
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_comment
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_zoom_meeting
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_relate
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_unrelate
|
||||
aggregation: weekly
|
||||
- name: incident_management_incident_change_confidential
|
||||
aggregation: weekly
|
||||
# Incident management timeline events
|
||||
- name: incident_management_timeline_event_created
|
||||
aggregation: weekly
|
||||
- name: incident_management_timeline_event_edited
|
||||
aggregation: weekly
|
||||
- name: incident_management_timeline_event_deleted
|
||||
aggregation: weekly
|
||||
# Incident management alerts
|
||||
- name: incident_management_alert_create_incident
|
||||
aggregation: weekly
|
||||
# Testing category
|
||||
- name: i_testing_test_case_parsed
|
||||
aggregation: weekly
|
||||
- name: i_testing_test_report_uploaded
|
||||
aggregation: weekly
|
||||
- name: i_testing_coverage_report_uploaded
|
||||
aggregation: weekly
|
||||
# Project Management group
|
||||
- name: g_project_management_issue_title_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_description_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_assignee_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_made_confidential
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_made_visible
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_created
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_closed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_reopened
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_label_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_milestone_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_cross_referenced
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_moved
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_related
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_unrelated
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_marked_as_duplicate
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_locked
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_unlocked
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_designs_added
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_designs_modified
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_designs_removed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_due_date_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_design_comments_removed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_time_estimate_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_time_spent_changed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_comment_added
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_comment_edited
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_comment_removed
|
||||
aggregation: daily
|
||||
- name: g_project_management_issue_cloned
|
||||
aggregation: daily
|
||||
# Runner group
|
||||
- name: g_runner_fleet_read_jobs_statistics
|
||||
aggregation: weekly
|
||||
# Secrets Management
|
||||
- name: i_snippets_show
|
||||
aggregation: weekly
|
||||
# Terraform
|
||||
- name: p_terraform_state_api_unique_users
|
||||
aggregation: weekly
|
||||
# Pipeline Authoring group
|
||||
- name: ci_interpolation_users
|
||||
aggregation: weekly
|
||||
- name: o_pipeline_authoring_unique_users_committing_ciconfigfile
|
||||
aggregation: weekly
|
||||
- name: o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile
|
||||
aggregation: weekly
|
||||
- name: i_ci_secrets_management_id_tokens_build_created
|
||||
aggregation: weekly
|
||||
# Merge request widgets
|
||||
- name: users_expanding_secure_security_report
|
||||
aggregation: weekly
|
||||
- name: users_expanding_testing_code_quality_report
|
||||
aggregation: weekly
|
||||
- name: users_expanding_testing_accessibility_report
|
||||
aggregation: weekly
|
||||
- name: users_expanding_testing_license_compliance_report
|
||||
aggregation: weekly
|
||||
- name: users_visiting_testing_license_compliance_full_report
|
||||
aggregation: weekly
|
||||
- name: users_visiting_testing_manage_license_compliance
|
||||
aggregation: weekly
|
||||
- name: users_clicking_license_testing_visiting_external_website
|
||||
aggregation: weekly
|
||||
# Geo group
|
||||
- name: g_geo_proxied_requests
|
||||
aggregation: daily
|
||||
# Manage
|
||||
- name: unique_active_user
|
||||
aggregation: weekly
|
||||
# Environments page
|
||||
- name: users_visiting_environments_pages
|
||||
aggregation: weekly
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
- name: i_container_registry_push_tag_user
|
||||
aggregation: weekly
|
||||
- name: i_container_registry_delete_tag_user
|
||||
aggregation: weekly
|
||||
- name: i_container_registry_push_repository_user
|
||||
aggregation: weekly
|
||||
- name: i_container_registry_delete_repository_user
|
||||
aggregation: weekly
|
||||
- name: i_container_registry_create_repository_user
|
||||
aggregation: weekly
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
# Ecosystem category
|
||||
- name: i_ecosystem_jira_service_close_issue
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_jira_service_cross_reference
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_issue_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_push_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_deployment_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_wiki_page_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_merge_request_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_note_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_tag_push_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_confidential_note_notification
|
||||
aggregation: weekly
|
||||
- name: i_ecosystem_slack_service_confidential_issue_notification
|
||||
aggregation: weekly
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
- name: error_tracking_view_details
|
||||
aggregation: weekly
|
||||
- name: error_tracking_view_list
|
||||
aggregation: weekly
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
# Importer events
|
||||
- name: github_import_project_start
|
||||
aggregation: weekly
|
||||
- name: github_import_project_success
|
||||
aggregation: weekly
|
||||
- name: github_import_project_failure
|
||||
aggregation: weekly
|
||||
- name: github_import_project_cancelled
|
||||
aggregation: weekly
|
||||
- name: github_import_project_partially_completed
|
||||
aggregation: weekly
|
||||
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
- name: i_integrations_gitlab_for_slack_app_issue_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_push_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_deployment_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_wiki_page_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_merge_request_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_note_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_tag_push_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_confidential_note_notification
|
||||
aggregation: weekly
|
||||
- name: i_integrations_gitlab_for_slack_app_confidential_issue_notification
|
||||
aggregation: weekly
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
- name: agent_users_using_ci_tunnel
|
||||
aggregation: weekly
|
||||
- name: k8s_api_proxy_requests_unique_users_via_ci_access
|
||||
aggregation: weekly
|
||||
- name: k8s_api_proxy_requests_unique_users_via_ci_access
|
||||
aggregation: monthly
|
||||
- name: k8s_api_proxy_requests_unique_agents_via_ci_access
|
||||
aggregation: weekly
|
||||
- name: k8s_api_proxy_requests_unique_agents_via_ci_access
|
||||
aggregation: monthly
|
||||
- name: k8s_api_proxy_requests_unique_users_via_user_access
|
||||
aggregation: weekly
|
||||
- name: k8s_api_proxy_requests_unique_users_via_user_access
|
||||
aggregation: monthly
|
||||
- name: k8s_api_proxy_requests_unique_agents_via_user_access
|
||||
aggregation: weekly
|
||||
- name: k8s_api_proxy_requests_unique_agents_via_user_access
|
||||
aggregation: monthly
|
||||
- name: flux_git_push_notified_unique_projects
|
||||
aggregation: weekly
|
||||
- name: flux_git_push_notified_unique_projects
|
||||
aggregation: monthly
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
---
|
||||
- name: i_package_composer_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_composer_user
|
||||
aggregation: weekly
|
||||
- name: i_package_conan_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_conan_user
|
||||
aggregation: weekly
|
||||
- name: i_package_debian_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_debian_user
|
||||
aggregation: weekly
|
||||
- name: i_package_generic_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_generic_user
|
||||
aggregation: weekly
|
||||
- name: i_package_helm_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_helm_user
|
||||
aggregation: weekly
|
||||
- name: i_package_maven_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_maven_user
|
||||
aggregation: weekly
|
||||
- name: i_package_npm_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_npm_user
|
||||
aggregation: weekly
|
||||
- name: i_package_nuget_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_nuget_user
|
||||
aggregation: weekly
|
||||
- name: i_package_pypi_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_pypi_user
|
||||
aggregation: weekly
|
||||
- name: i_package_rubygems_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_rubygems_user
|
||||
aggregation: weekly
|
||||
- name: i_package_terraform_module_deploy_token
|
||||
aggregation: weekly
|
||||
- name: i_package_terraform_module_user
|
||||
aggregation: weekly
|
||||
- name: i_package_rpm_user
|
||||
aggregation: weekly
|
||||
- name: i_package_rpm_deploy_token
|
||||
aggregation: weekly
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
- name: project_created_analytics_dashboard
|
||||
aggregation: weekly
|
||||
- name: project_initialized_product_analytics
|
||||
aggregation: weekly
|
||||
- name: user_created_analytics_dashboard
|
||||
aggregation: weekly
|
||||
- name: user_visited_dashboard
|
||||
aggregation: weekly
|
||||
|
|
@ -1,139 +0,0 @@
|
|||
---
|
||||
- name: i_quickactions_assign_multiple
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_approve
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unapprove
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_assign_single
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_assign_self
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_assign_reviewer
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_award
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_board_move
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_clone
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_close
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_confidential
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_copy_metadata_merge_request
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_copy_metadata_issue
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_create_merge_request
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_done
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_draft
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_due
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_duplicate
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_estimate
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_label
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_lock
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_merge
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_milestone
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_move
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_promote_to_incident
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_timeline
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_ready
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_reassign
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_reassign_reviewer
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_rebase
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_relabel
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_relate
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_remove_due_date
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_remove_estimate
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_remove_milestone
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_remove_time_spent
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_remove_zoom
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_reopen
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_severity
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_shrug
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_spend_subtract
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_spend_add
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_submit_review
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_subscribe
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_summarize_diff
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_tableflip
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_tag
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_target_branch
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_title
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_todo
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unassign_specific
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unassign_all
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unassign_reviewer
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unlabel_specific
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unlabel_all
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unlock
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unsubscribe
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_wip
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_zoom
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_link
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_invite_email_single
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_invite_email_multiple
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_add_contacts
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_remove_contacts
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_type
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_blocked_by
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_blocks
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_unlink
|
||||
aggregation: weekly
|
||||
- name: i_quickactions_promote_to
|
||||
aggregation: weekly
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
- name: users_updating_work_item_title
|
||||
aggregation: weekly
|
||||
- name: users_creating_work_items
|
||||
aggregation: weekly
|
||||
- name: users_updating_work_item_dates
|
||||
aggregation: weekly
|
||||
- name: users_updating_work_item_labels
|
||||
aggregation: weekly
|
||||
- name: users_updating_work_item_milestone
|
||||
aggregation: weekly
|
||||
- name: users_updating_work_item_iteration
|
||||
# The event tracks an EE feature.
|
||||
# It's added here so it can be aggregated into the CE/EE 'OR' aggregate metrics.
|
||||
# It will report 0 for CE instances and should not be used with 'AND' aggregators.
|
||||
aggregation: weekly
|
||||
- name: users_updating_weight_estimate
|
||||
# The event tracks an EE feature.
|
||||
# It's added here so it can be aggregated into the CE/EE 'OR' aggregate metrics.
|
||||
# It will report 0 for CE instances and should not be used with 'AND' aggregators.
|
||||
aggregation: weekly
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
- name: users_updating_workspaces
|
||||
aggregation: weekly
|
||||
|
||||
- name: users_creating_workspaces
|
||||
aggregation: weekly
|
||||
|
|
@ -32789,6 +32789,9 @@ msgstr ""
|
|||
msgid "Organization|Organization overview"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organization|Search or filter list"
|
||||
msgstr ""
|
||||
|
||||
msgid "Orphaned member"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,18 @@
|
|||
import { GlCollapsibleListbox, GlSorting, GlSortingItem } from '@gitlab/ui';
|
||||
import App from '~/organizations/groups_and_projects/components/app.vue';
|
||||
import GroupsPage from '~/organizations/groups_and_projects/components/groups_page.vue';
|
||||
import ProjectsPage from '~/organizations/groups_and_projects/components/projects_page.vue';
|
||||
import {
|
||||
DISPLAY_QUERY_GROUPS,
|
||||
DISPLAY_QUERY_PROJECTS,
|
||||
SORT_ITEM_CREATED,
|
||||
SORT_DIRECTION_DESC,
|
||||
} from '~/organizations/groups_and_projects/constants';
|
||||
import FilteredSearchBar from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue';
|
||||
import {
|
||||
FILTERED_SEARCH_TERM,
|
||||
TOKEN_EMPTY_SEARCH_TERM,
|
||||
} from '~/vue_shared/components/filtered_search_bar/constants';
|
||||
import { createRouter } from '~/organizations/groups_and_projects';
|
||||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
|
||||
|
|
@ -15,23 +23,150 @@ describe('GroupsAndProjectsApp', () => {
|
|||
};
|
||||
let wrapper;
|
||||
|
||||
const createComponent = ({ routeQuery = {} } = {}) => {
|
||||
const createComponent = ({ routeQuery = { search: 'foo' } } = {}) => {
|
||||
wrapper = shallowMountExtended(App, {
|
||||
router,
|
||||
mocks: { $route: { path: '/', query: routeQuery }, $router: routerMock },
|
||||
});
|
||||
};
|
||||
|
||||
describe.each`
|
||||
display | expectedComponent
|
||||
${null} | ${GroupsPage}
|
||||
${DISPLAY_QUERY_GROUPS} | ${GroupsPage}
|
||||
${DISPLAY_QUERY_PROJECTS} | ${ProjectsPage}
|
||||
`('when `display` query string is $display', ({ display, expectedComponent }) => {
|
||||
it('renders expected component', () => {
|
||||
createComponent({ routeQuery: { display } });
|
||||
const findFilteredSearchBar = () => wrapper.findComponent(FilteredSearchBar);
|
||||
const findListbox = () => wrapper.findComponent(GlCollapsibleListbox);
|
||||
const findSort = () => wrapper.findComponent(GlSorting);
|
||||
|
||||
expect(wrapper.findComponent(expectedComponent).exists()).toBe(true);
|
||||
describe.each`
|
||||
display | expectedComponent | expectedDisplayListboxSelectedProp
|
||||
${null} | ${GroupsPage} | ${DISPLAY_QUERY_GROUPS}
|
||||
${'unsupported_value'} | ${GroupsPage} | ${DISPLAY_QUERY_GROUPS}
|
||||
${DISPLAY_QUERY_GROUPS} | ${GroupsPage} | ${DISPLAY_QUERY_GROUPS}
|
||||
${DISPLAY_QUERY_PROJECTS} | ${ProjectsPage} | ${DISPLAY_QUERY_PROJECTS}
|
||||
`(
|
||||
'when `display` query string is $display',
|
||||
({ display, expectedComponent, expectedDisplayListboxSelectedProp }) => {
|
||||
beforeEach(() => {
|
||||
createComponent({ routeQuery: { display } });
|
||||
});
|
||||
|
||||
it('renders expected component', () => {
|
||||
expect(wrapper.findComponent(expectedComponent).exists()).toBe(true);
|
||||
});
|
||||
|
||||
it('renders display listbox with correct props', () => {
|
||||
expect(findListbox().props()).toMatchObject({
|
||||
selected: expectedDisplayListboxSelectedProp,
|
||||
items: App.displayListboxItems,
|
||||
headerText: App.i18n.displayListboxHeaderText,
|
||||
});
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
it('renders filtered search bar with correct props', () => {
|
||||
createComponent();
|
||||
|
||||
expect(findFilteredSearchBar().props()).toMatchObject({
|
||||
namespace: App.filteredSearch.namespace,
|
||||
tokens: App.filteredSearch.tokens,
|
||||
initialFilterValue: [
|
||||
{
|
||||
type: FILTERED_SEARCH_TERM,
|
||||
value: {
|
||||
data: 'foo',
|
||||
operator: undefined,
|
||||
},
|
||||
},
|
||||
],
|
||||
syncFilterAndSort: true,
|
||||
recentSearchesStorageKey: App.filteredSearch.recentSearchesStorageKey,
|
||||
searchInputPlaceholder: App.i18n.searchInputPlaceholder,
|
||||
});
|
||||
});
|
||||
|
||||
it('renders sort dropdown with sort items and correct props', () => {
|
||||
createComponent();
|
||||
|
||||
const sortItems = wrapper.findAllComponents(GlSortingItem).wrappers.map((sortItemWrapper) => ({
|
||||
active: sortItemWrapper.attributes('active'),
|
||||
text: sortItemWrapper.text(),
|
||||
}));
|
||||
|
||||
expect(findSort().props()).toMatchObject({
|
||||
isAscending: true,
|
||||
text: SORT_ITEM_CREATED.text,
|
||||
});
|
||||
expect(sortItems).toEqual([
|
||||
{
|
||||
active: 'true',
|
||||
text: SORT_ITEM_CREATED.text,
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
describe('when filtered search bar is submitted', () => {
|
||||
const searchTerm = 'foo bar';
|
||||
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
|
||||
findFilteredSearchBar().vm.$emit('onFilter', [
|
||||
{ id: 'token-0', type: FILTERED_SEARCH_TERM, value: { data: searchTerm } },
|
||||
]);
|
||||
});
|
||||
|
||||
it('updates `search` query string', () => {
|
||||
expect(routerMock.push).toHaveBeenCalledWith({ query: { search: searchTerm } });
|
||||
});
|
||||
});
|
||||
|
||||
describe('when display listbox is changed', () => {
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
|
||||
findListbox().vm.$emit('select', DISPLAY_QUERY_PROJECTS);
|
||||
});
|
||||
|
||||
it('updates `display` query string', () => {
|
||||
expect(routerMock.push).toHaveBeenCalledWith({ query: { display: DISPLAY_QUERY_PROJECTS } });
|
||||
});
|
||||
});
|
||||
|
||||
describe('when sort item is changed', () => {
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
|
||||
wrapper.findComponent(GlSortingItem).trigger('click', SORT_ITEM_CREATED);
|
||||
});
|
||||
|
||||
it('updates `sort_name` query string', () => {
|
||||
expect(routerMock.push).toHaveBeenCalledWith({
|
||||
query: { sort_name: SORT_ITEM_CREATED.name, search: 'foo' },
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when sort direction is changed', () => {
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
|
||||
findSort().vm.$emit('sortDirectionChange', false);
|
||||
});
|
||||
|
||||
it('updates `sort_direction` query string', () => {
|
||||
expect(routerMock.push).toHaveBeenCalledWith({
|
||||
query: { sort_direction: SORT_DIRECTION_DESC, search: 'foo' },
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when `search` query string is not set', () => {
|
||||
beforeEach(() => {
|
||||
createComponent({ routeQuery: {} });
|
||||
});
|
||||
|
||||
it('passes empty search term token to filtered search', () => {
|
||||
expect(findFilteredSearchBar().props('initialFilterValue')).toEqual([
|
||||
TOKEN_EMPTY_SEARCH_TERM,
|
||||
]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -301,6 +301,18 @@ describe('urlQueryToFilter', () => {
|
|||
},
|
||||
{ filteredSearchTermKey: 'search', filterNamesAllowList: ['foo'] },
|
||||
],
|
||||
[
|
||||
{
|
||||
search: 'my terms',
|
||||
foo: 'bar',
|
||||
nop: 'xxx',
|
||||
},
|
||||
{
|
||||
[FILTERED_SEARCH_TERM]: [{ value: 'my terms' }],
|
||||
foo: { value: 'bar', operator: '=' },
|
||||
},
|
||||
{ filteredSearchTermKey: 'search', filterNamesAllowList: ['foo'] },
|
||||
],
|
||||
])(
|
||||
'gathers filter values %s into query object=%j when options %j',
|
||||
(query, result, options = undefined) => {
|
||||
|
|
|
|||
|
|
@ -57,8 +57,6 @@ RSpec.describe Gitlab::Analytics::InternalEventsGenerator, :silence_stdout, feat
|
|||
before do
|
||||
stub_const("#{described_class}::TOP_LEVEL_DIR_EE", ee_temp_dir)
|
||||
stub_const("#{described_class}::TOP_LEVEL_DIR", temp_dir)
|
||||
stub_const("#{described_class}::KNOWN_EVENTS_PATH", tmpfile.path)
|
||||
stub_const("#{described_class}::KNOWN_EVENTS_PATH_EE", tmpfile.path)
|
||||
# Stub version so that `milestone` key remains constant between releases to prevent flakiness.
|
||||
stub_const('Gitlab::VERSION', '13.9.0')
|
||||
|
||||
|
|
@ -132,7 +130,7 @@ RSpec.describe Gitlab::Analytics::InternalEventsGenerator, :silence_stdout, feat
|
|||
end
|
||||
|
||||
context 'with duplicated event' do
|
||||
context 'in known_events files' do
|
||||
context 'in known_events' do
|
||||
before do
|
||||
allow(::Gitlab::UsageDataCounters::HLLRedisCounter)
|
||||
.to receive(:known_event?).with(event).and_return(true)
|
||||
|
|
@ -285,32 +283,4 @@ RSpec.describe Gitlab::Analytics::InternalEventsGenerator, :silence_stdout, feat
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Creating known event entry' do
|
||||
let(:time_frames) { %w[7d 28d] }
|
||||
let(:expected_known_events) { [{ "name" => event }] }
|
||||
|
||||
it 'creates a metric definition file using the template' do
|
||||
described_class.new([], options).invoke_all
|
||||
|
||||
expect(YAML.safe_load(File.read(tmpfile.path))).to match_array(expected_known_events)
|
||||
end
|
||||
|
||||
context 'for ultimate only feature' do
|
||||
let(:ee_tmpfile) { Tempfile.new('test-metadata') }
|
||||
|
||||
after do
|
||||
FileUtils.rm_rf(ee_tmpfile)
|
||||
end
|
||||
|
||||
it 'creates a metric definition file using the template' do
|
||||
stub_const("#{described_class}::KNOWN_EVENTS_PATH_EE", ee_tmpfile.path)
|
||||
|
||||
described_class.new([], options.merge(tiers: %w[ultimate])).invoke_all
|
||||
|
||||
expect(YAML.safe_load(File.read(tmpfile.path))).to be nil
|
||||
expect(YAML.safe_load(File.read(ee_tmpfile.path))).to match_array(expected_known_events)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe BackfillDefaultBranchProtectionApplicationSetting, :migration, feature_category: :database do
|
||||
let(:application_settings_table) { table(:application_settings) }
|
||||
|
||||
before do
|
||||
5.times do |branch_protection|
|
||||
application_settings_table.create!(default_branch_protection: branch_protection,
|
||||
default_branch_protection_defaults: {})
|
||||
end
|
||||
end
|
||||
|
||||
it 'schedules a new batched migration' do
|
||||
reversible_migration do |migration|
|
||||
migration.before -> {
|
||||
5.times do |branch_protection|
|
||||
expect(migrated_attribute(branch_protection)).to eq({})
|
||||
end
|
||||
}
|
||||
|
||||
migration.after -> {
|
||||
expect(migrated_attribute(0)).to eq({ "allow_force_push" => true,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 30 }] })
|
||||
expect(migrated_attribute(1)).to eq({ "allow_force_push" => false,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 30 }] })
|
||||
expect(migrated_attribute(2)).to eq({ "allow_force_push" => false,
|
||||
"allowed_to_merge" => [{ "access_level" => 40 }],
|
||||
"allowed_to_push" => [{ "access_level" => 40 }] })
|
||||
expect(migrated_attribute(3)).to eq({ "allow_force_push" => true,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 40 }] })
|
||||
expect(migrated_attribute(4)).to eq({ "allow_force_push" => true,
|
||||
"allowed_to_merge" => [{ "access_level" => 30 }],
|
||||
"allowed_to_push" => [{ "access_level" => 40 }],
|
||||
"developer_can_initial_push" => true })
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def migrated_attribute(branch_protection)
|
||||
application_settings_table
|
||||
.where(default_branch_protection: branch_protection)
|
||||
.last.default_branch_protection_defaults
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue