Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2023-08-04 06:11:29 +00:00
parent f830a15de6
commit debd8f45f8
34 changed files with 457 additions and 1175 deletions

View File

@ -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>

View File

@ -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];

View File

@ -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');

View File

@ -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) {

View File

@ -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

View File

@ -0,0 +1 @@
2fbe6ccc23b398419e52a599b9c748a9d592d53369569e8b865d0ec1f4d99b0d

View File

@ -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`

View File

@ -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):

View File

@ -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.

View File

@ -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

View File

@ -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).

View File

@ -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!

View File

@ -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:)

View File

@ -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

View File

@ -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

View File

@ -1,4 +0,0 @@
- name: ci_users_executing_deployment_job
aggregation: weekly
- name: ci_users_executing_verify_environment_job
aggregation: weekly

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,5 +0,0 @@
---
- name: error_tracking_view_details
aggregation: weekly
- name: error_tracking_view_list
aggregation: weekly

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,5 +0,0 @@
- name: users_updating_workspaces
aggregation: weekly
- name: users_creating_workspaces
aggregation: weekly

View File

@ -32789,6 +32789,9 @@ msgstr ""
msgid "Organization|Organization overview"
msgstr ""
msgid "Organization|Search or filter list"
msgstr ""
msgid "Orphaned member"
msgstr ""

View File

@ -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,
]);
});
});
});

View File

@ -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) => {

View File

@ -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

View File

@ -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