diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-11-05 03:07:57 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-11-05 03:07:57 +0300 |
commit | eaa9a0adf963293c678f30e73b7150e89f921a99 (patch) | |
tree | 8c6a16e5d477347a073a406a0b6b0549bbe06126 | |
parent | 8fc2555ccce63aa5641b123c154389cff593e0d7 (diff) |
Add latest changes from gitlab-org/gitlab@master
-rw-r--r-- | .gitlab/CODEOWNERS | 2 | ||||
-rw-r--r-- | .gitlab/ci/workhorse.gitlab-ci.yml | 2 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/delete_pipeline_schedule_modal.vue (renamed from app/assets/javascripts/pipeline_schedules/components/delete_pipeline_schedule_modal.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules.vue (renamed from app/assets/javascripts/pipeline_schedules/components/pipeline_schedules.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules_form.vue (renamed from app/assets/javascripts/pipeline_schedules/components/pipeline_schedules_form.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue (renamed from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue (renamed from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue (renamed from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue (renamed from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue (renamed from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue (renamed from app/assets/javascripts/pipeline_schedules/components/table/pipeline_schedules_table.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/take_ownership_modal.vue (renamed from app/assets/javascripts/pipeline_schedules/components/take_ownership_modal.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/components/take_ownership_modal_legacy.vue (renamed from app/assets/javascripts/pipeline_schedules/components/take_ownership_modal_legacy.vue) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql (renamed from app/assets/javascripts/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql (renamed from app/assets/javascripts/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql (renamed from app/assets/javascripts/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_app.js (renamed from app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_app.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_form_app.js (renamed from app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_form_app.js) | 0 | ||||
-rw-r--r-- | app/assets/javascripts/pages/projects/pipeline_schedules/edit/index.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/pages/projects/pipeline_schedules/index/index.js | 4 | ||||
-rw-r--r-- | app/assets/javascripts/pages/projects/pipeline_schedules/new/index.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/projects/pipelines/charts/components/app.vue | 26 | ||||
-rw-r--r-- | app/assets/javascripts/projects/pipelines/charts/constants.js | 4 | ||||
-rw-r--r-- | doc/administration/audit_events.md | 2 | ||||
-rw-r--r-- | doc/install/installation.md | 10 | ||||
-rw-r--r-- | doc/update/upgrading_from_source.md | 8 | ||||
-rw-r--r-- | doc/user/admin_area/reporting/git_abuse_rate_limit.md | 2 | ||||
-rw-r--r-- | doc/user/group/reporting/git_abuse_rate_limit.md | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js (renamed from spec/frontend/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_form_spec.js (renamed from spec/frontend/pipeline_schedules/components/pipeline_schedules_form_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_spec.js (renamed from spec/frontend/pipeline_schedules/components/pipeline_schedules_spec.js) | 14 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js (renamed from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js (renamed from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js (renamed from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js (renamed from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js (renamed from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/table/pipeline_schedules_table_spec.js (renamed from spec/frontend/pipeline_schedules/components/table/pipeline_schedules_table_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_legacy_spec.js (renamed from spec/frontend/pipeline_schedules/components/take_ownership_modal_legacy_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_spec.js (renamed from spec/frontend/pipeline_schedules/components/take_ownership_modal_spec.js) | 2 | ||||
-rw-r--r-- | spec/frontend/ci/pipeline_schedules/mock_data.js (renamed from spec/frontend/pipeline_schedules/mock_data.js) | 0 | ||||
-rw-r--r-- | spec/frontend/fixtures/pipeline_schedules.rb | 2 | ||||
-rw-r--r-- | spec/frontend/projects/pipelines/charts/components/app_spec.js | 68 |
42 files changed, 118 insertions, 52 deletions
diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 7c130b13797..188428ec1c7 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -153,7 +153,7 @@ Dangerfile @gl-quality/eng-prod /app/assets/javascripts/pipeline_new/ @gitlab-org/ci-cd/verify/frontend /app/assets/javascripts/ci_lint/ @gitlab-org/ci-cd/verify/frontend /app/assets/javascripts/ci_variable_list/ @gitlab-org/ci-cd/verify/frontend -/app/assets/javascripts/pipeline_schedules/ @gitlab-org/ci-cd/verify/frontend +/app/assets/javascripts/ci/pipeline_schedules/ @gitlab-org/ci-cd/verify/frontend /app/assets/javascripts/pipeline_editor/ @gitlab-org/ci-cd/verify/frontend /ee/app/assets/javascripts/ci/ci_minutes_usage/ @gitlab-org/ci-cd/verify/frontend /ee/app/assets/javascripts/usage_quotas/ci_minutes_usage/ @gitlab-org/ci-cd/verify/frontend diff --git a/.gitlab/ci/workhorse.gitlab-ci.yml b/.gitlab/ci/workhorse.gitlab-ci.yml index a11d5f000cf..3aa9eaee6f8 100644 --- a/.gitlab/ci/workhorse.gitlab-ci.yml +++ b/.gitlab/ci/workhorse.gitlab-ci.yml @@ -27,7 +27,7 @@ workhorse:test go: extends: .workhorse:test parallel: matrix: - - GO_VERSION: ["1.17", "1.18", "1.19"] + - GO_VERSION: ["1.18", "1.19"] script: - make -C workhorse test-coverage coverage: '/\d+.\d+%/' diff --git a/app/assets/javascripts/pipeline_schedules/components/delete_pipeline_schedule_modal.vue b/app/assets/javascripts/ci/pipeline_schedules/components/delete_pipeline_schedule_modal.vue index 16bfc7f3abe..16bfc7f3abe 100644 --- a/app/assets/javascripts/pipeline_schedules/components/delete_pipeline_schedule_modal.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/delete_pipeline_schedule_modal.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/pipeline_schedules.vue b/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules.vue index fe16cb7a92e..fe16cb7a92e 100644 --- a/app/assets/javascripts/pipeline_schedules/components/pipeline_schedules.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/pipeline_schedules_form.vue b/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules_form.vue index 6e24ac6b8d4..6e24ac6b8d4 100644 --- a/app/assets/javascripts/pipeline_schedules/components/pipeline_schedules_form.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/pipeline_schedules_form.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue index 8656e5d3536..8656e5d3536 100644 --- a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue index 216796b357c..216796b357c 100644 --- a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue index 48d59bf6e7c..48d59bf6e7c 100644 --- a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue index e7fa94eb7fc..e7fa94eb7fc 100644 --- a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue index 08efa794bcc..08efa794bcc 100644 --- a/app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/table/pipeline_schedules_table.vue b/app/assets/javascripts/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue index 1b97a35a51e..1b97a35a51e 100644 --- a/app/assets/javascripts/pipeline_schedules/components/table/pipeline_schedules_table.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/take_ownership_modal.vue b/app/assets/javascripts/ci/pipeline_schedules/components/take_ownership_modal.vue index 3ac52d4735d..3ac52d4735d 100644 --- a/app/assets/javascripts/pipeline_schedules/components/take_ownership_modal.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/take_ownership_modal.vue diff --git a/app/assets/javascripts/pipeline_schedules/components/take_ownership_modal_legacy.vue b/app/assets/javascripts/ci/pipeline_schedules/components/take_ownership_modal_legacy.vue index 7ded3945a32..7ded3945a32 100644 --- a/app/assets/javascripts/pipeline_schedules/components/take_ownership_modal_legacy.vue +++ b/app/assets/javascripts/ci/pipeline_schedules/components/take_ownership_modal_legacy.vue diff --git a/app/assets/javascripts/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql b/app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql index 8aab0b3fbde..8aab0b3fbde 100644 --- a/app/assets/javascripts/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql +++ b/app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql diff --git a/app/assets/javascripts/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql b/app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql index e410ef91d8b..e410ef91d8b 100644 --- a/app/assets/javascripts/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql +++ b/app/assets/javascripts/ci/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql diff --git a/app/assets/javascripts/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql b/app/assets/javascripts/ci/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql index 9f6cb429cca..9f6cb429cca 100644 --- a/app/assets/javascripts/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql +++ b/app/assets/javascripts/ci/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql diff --git a/app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_app.js b/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_app.js index 4c06fa321e5..4c06fa321e5 100644 --- a/app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_app.js +++ b/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_app.js diff --git a/app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_form_app.js b/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_form_app.js index d83417ab84a..d83417ab84a 100644 --- a/app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_form_app.js +++ b/app/assets/javascripts/ci/pipeline_schedules/mount_pipeline_schedules_form_app.js diff --git a/app/assets/javascripts/pages/projects/pipeline_schedules/edit/index.js b/app/assets/javascripts/pages/projects/pipeline_schedules/edit/index.js index 0edce2db0a3..e2a782bc5d8 100644 --- a/app/assets/javascripts/pages/projects/pipeline_schedules/edit/index.js +++ b/app/assets/javascripts/pages/projects/pipeline_schedules/edit/index.js @@ -1,4 +1,4 @@ -import initPipelineSchedulesFormApp from '~/pipeline_schedules/mount_pipeline_schedules_form_app'; +import initPipelineSchedulesFormApp from '~/ci/pipeline_schedules/mount_pipeline_schedules_form_app'; import initForm from '../shared/init_form'; if (gon.features?.pipelineSchedulesVue) { diff --git a/app/assets/javascripts/pages/projects/pipeline_schedules/index/index.js b/app/assets/javascripts/pages/projects/pipeline_schedules/index/index.js index a11d1d505fc..27610df482d 100644 --- a/app/assets/javascripts/pages/projects/pipeline_schedules/index/index.js +++ b/app/assets/javascripts/pages/projects/pipeline_schedules/index/index.js @@ -1,7 +1,7 @@ import Vue from 'vue'; import { BV_SHOW_MODAL } from '~/lib/utils/constants'; -import initPipelineSchedulesApp from '~/pipeline_schedules/mount_pipeline_schedules_app'; -import PipelineSchedulesTakeOwnershipModalLegacy from '~/pipeline_schedules/components/take_ownership_modal_legacy.vue'; +import initPipelineSchedulesApp from '~/ci/pipeline_schedules/mount_pipeline_schedules_app'; +import PipelineSchedulesTakeOwnershipModalLegacy from '~/ci/pipeline_schedules/components/take_ownership_modal_legacy.vue'; import PipelineSchedulesCallout from '../shared/components/pipeline_schedules_callout.vue'; function initPipelineSchedulesCallout() { diff --git a/app/assets/javascripts/pages/projects/pipeline_schedules/new/index.js b/app/assets/javascripts/pages/projects/pipeline_schedules/new/index.js index 06084fa729b..d8ba7bbd752 100644 --- a/app/assets/javascripts/pages/projects/pipeline_schedules/new/index.js +++ b/app/assets/javascripts/pages/projects/pipeline_schedules/new/index.js @@ -1,4 +1,4 @@ -import initPipelineSchedulesFormApp from '~/pipeline_schedules/mount_pipeline_schedules_form_app'; +import initPipelineSchedulesFormApp from '~/ci/pipeline_schedules/mount_pipeline_schedules_form_app'; import initForm from '../shared/init_form'; if (gon.features?.pipelineSchedulesVue) { diff --git a/app/assets/javascripts/projects/pipelines/charts/components/app.vue b/app/assets/javascripts/projects/pipelines/charts/components/app.vue index 186fcf70838..4643bfe58f6 100644 --- a/app/assets/javascripts/projects/pipelines/charts/components/app.vue +++ b/app/assets/javascripts/projects/pipelines/charts/components/app.vue @@ -2,6 +2,8 @@ import { GlTabs, GlTab } from '@gitlab/ui'; import API from '~/api'; import { mergeUrlParams, updateHistory, getParameterValues } from '~/lib/utils/url_utility'; +import Tracking from '~/tracking'; +import { SNOWPLOW_DATA_SOURCE, SNOWPLOW_LABEL, SNOWPLOW_SCHEMA } from '../constants'; import PipelineCharts from './pipeline_charts.vue'; export default { @@ -23,6 +25,7 @@ export default { leadTimeTabEvent: 'p_analytics_ci_cd_lead_time', timeToRestoreServiceTabEvent: 'p_analytics_ci_cd_time_to_restore_service', changeFailureRateTabEvent: 'p_analytics_ci_cd_change_failure_rate', + mixins: [Tracking.mixin()], inject: { shouldRenderDoraCharts: { type: Boolean, @@ -75,8 +78,21 @@ export default { updateHistory({ url: path, title: window.title }); } }, - trackTabClick(tab) { - API.trackRedisHllUserEvent(tab); + trackTabClick(event, snowplow = false) { + API.trackRedisHllUserEvent(event); + + if (snowplow) { + this.track('click_tab', { + label: SNOWPLOW_LABEL, + context: { + schema: SNOWPLOW_SCHEMA, + data: { + event_name: event, + data_source: SNOWPLOW_DATA_SOURCE, + }, + }, + }); + } }, }, }; @@ -87,7 +103,7 @@ export default { <gl-tab :title="__('Pipelines')" data-testid="pipelines-tab" - @click="trackTabClick($options.piplelinesTabEvent)" + @click="trackTabClick($options.piplelinesTabEvent, true)" > <pipeline-charts /> </gl-tab> @@ -95,14 +111,14 @@ export default { <gl-tab :title="__('Deployment frequency')" data-testid="deployment-frequency-tab" - @click="trackTabClick($options.deploymentFrequencyTabEvent)" + @click="trackTabClick($options.deploymentFrequencyTabEvent, true)" > <deployment-frequency-charts /> </gl-tab> <gl-tab :title="__('Lead time')" data-testid="lead-time-tab" - @click="trackTabClick($options.leadTimeTabEvent)" + @click="trackTabClick($options.leadTimeTabEvent, true)" > <lead-time-charts /> </gl-tab> diff --git a/app/assets/javascripts/projects/pipelines/charts/constants.js b/app/assets/javascripts/projects/pipelines/charts/constants.js index 41fe81f21ea..c13824a9952 100644 --- a/app/assets/javascripts/projects/pipelines/charts/constants.js +++ b/app/assets/javascripts/projects/pipelines/charts/constants.js @@ -19,3 +19,7 @@ export const PARSE_FAILURE = 'parse_failure'; export const LOAD_ANALYTICS_FAILURE = 'load_analytics_failure'; export const LOAD_PIPELINES_FAILURE = 'load_analytics_failure'; export const UNSUPPORTED_DATA = 'unsupported_data'; + +export const SNOWPLOW_LABEL = 'redis_hll_counters.analytics.analytics_total_unique_counts_monthly'; +export const SNOWPLOW_SCHEMA = 'iglu:com.gitlab/gitlab_service_ping/jsonschema/1-0-0'; +export const SNOWPLOW_DATA_SOURCE = 'redis_hll'; diff --git a/doc/administration/audit_events.md b/doc/administration/audit_events.md index 2b38d43a4e4..e7da59e5845 100644 --- a/doc/administration/audit_events.md +++ b/doc/administration/audit_events.md @@ -124,6 +124,7 @@ From there, you can see the following actions: - Require user password to approve. - Remove all approvals when commits are added to the source branch. - Changes to streaming audit destination custom HTTP headers. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/366350) in GitLab 15.3. +- Group had a security policy project linked, changed, or unlinked. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/377877) in GitLab 15.6) Group events can also be accessed via the [Group Audit Events API](../api/audit_events.md#group-audit-events) @@ -194,6 +195,7 @@ From there, you can see the following actions: - Squash commit message template is updated ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) in GitLab 15.0) - Default description template for merge requests is updated ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) in GitLab 15.0) - Project was scheduled for deletion due to inactivity ([introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85689) in GitLab 15.0) +- Project had a security policy project linked, changed, or unlinked ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/377877) in GitLab 15.6) Project events can also be accessed via the [Project Audit Events API](../api/audit_events.md#project-audit-events). diff --git a/doc/install/installation.md b/doc/install/installation.md index 5149ae9c1e1..97bde5056e4 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -49,7 +49,7 @@ If the highest number stable branch is unclear, check the [GitLab blog](https:// | Software | Minimum version | Notes | | ------------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | [Ruby](#2-ruby) | `2.7` | From GitLab 13.6, Ruby 2.7 is required. Ruby 3.0 is not supported yet (see [the relevant epic](https://gitlab.com/groups/gitlab-org/-/epics/5149) for the current status). You must use the standard MRI implementation of Ruby. We love [JRuby](https://www.jruby.org/) and [Rubinius](https://github.com/rubinius/rubinius#the-rubinius-language-platform), but GitLab needs several Gems that have native extensions. | -| [Go](#3-go) | `1.17` | From GitLab 15.2, Go 1.17 or later is required. | +| [Go](#3-go) | `1.18` | From GitLab 15.6, Go 1.18 or later is required. | | [Git](#git) | `2.37.x` | From GitLab 15.6, Git 2.37.x and later is required. It's highly recommended that you use the [Git version provided by Gitaly](#git). | | [Node.js](#4-node) | `14.15.0` | GitLab uses [webpack](https://webpack.js.org/) to compile frontend assets. Node.js 16.x is recommended, as it's faster. You can check which version you're running with `node -v`. You must update it to a newer version if needed. | @@ -250,11 +250,11 @@ Linux. You can find downloads for other platforms at the # Remove former Go installation folder sudo rm -rf /usr/local/go -curl --remote-name --location --progress-bar "https://go.dev/dl/go1.17.10.linux-amd64.tar.gz" -echo '87fc728c9c731e2f74e4a999ef53cf07302d7ed3504b0839027bd9c10edaa3fd go1.17.10.linux-amd64.tar.gz' | shasum -a256 -c - && \ - sudo tar -C /usr/local -xzf go1.17.10.linux-amd64.tar.gz +curl --remote-name --location --progress-bar "https://go.dev/dl/go1.18.8.linux-amd64.tar.gz" +echo '4d854c7bad52d53470cf32f1b287a5c0c441dc6b98306dea27358e099698142a go1.18.8.linux-amd64.tar.gz' | shasum -a256 -c - && \ + sudo tar -C /usr/local -xzf go1.18.8.linux-amd64.tar.gz sudo ln -sf /usr/local/go/bin/{go,gofmt} /usr/local/bin/ -rm go1.17.10.linux-amd64.tar.gz +rm go1.18.8.linux-amd64.tar.gz ``` ## 4. Node diff --git a/doc/update/upgrading_from_source.md b/doc/update/upgrading_from_source.md index bb9199560f9..4dff469ed6e 100644 --- a/doc/update/upgrading_from_source.md +++ b/doc/update/upgrading_from_source.md @@ -107,11 +107,11 @@ Download and install Go (for Linux, 64-bit): # Remove former Go installation folder sudo rm -rf /usr/local/go -curl --remote-name --location --progress-bar "https://go.dev/dl/go1.17.10.linux-amd64.tar.gz" -echo '87fc728c9c731e2f74e4a999ef53cf07302d7ed3504b0839027bd9c10edaa3fd go1.17.10.linux-amd64.tar.gz' | shasum -a256 -c - && \ - sudo tar -C /usr/local -xzf go1.17.10.linux-amd64.tar.gz +curl --remote-name --location --progress-bar "https://go.dev/dl/go1.18.8.linux-amd64.tar.gz" +echo '4d854c7bad52d53470cf32f1b287a5c0c441dc6b98306dea27358e099698142a go1.18.8.linux-amd64.tar.gz' | shasum -a256 -c - && \ + sudo tar -C /usr/local -xzf go1.18.8.linux-amd64.tar.gz sudo ln -sf /usr/local/go/bin/{go,gofmt} /usr/local/bin/ -rm go1.17.10.linux-amd64.tar.gz +rm go1.18.8.linux-amd64.tar.gz ``` ### 6. Update Git diff --git a/doc/user/admin_area/reporting/git_abuse_rate_limit.md b/doc/user/admin_area/reporting/git_abuse_rate_limit.md index 2e063f0e4f4..f700b8b1ea3 100644 --- a/doc/user/admin_area/reporting/git_abuse_rate_limit.md +++ b/doc/user/admin_area/reporting/git_abuse_rate_limit.md @@ -4,7 +4,7 @@ group: Anti-Abuse info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments --- -# Git abuse rate limit **(ULTIMATE SELF)** +# Git abuse rate limit (administration) **(ULTIMATE SELF)** > [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/8066) in GitLab 15.2 [with a flag](../../../administration/feature_flags.md) named `git_abuse_rate_limit_feature_flag`. Disabled by default. diff --git a/doc/user/group/reporting/git_abuse_rate_limit.md b/doc/user/group/reporting/git_abuse_rate_limit.md index d8a9cdcb5c0..1cf3a9dbe7d 100644 --- a/doc/user/group/reporting/git_abuse_rate_limit.md +++ b/doc/user/group/reporting/git_abuse_rate_limit.md @@ -4,7 +4,7 @@ group: Anti-Abuse info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments --- -# Git abuse rate limit (administration) **(ULTIMATE SELF)** +# Git abuse rate limit **(ULTIMATE SELF)** > [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/8066) in GitLab 15.2 [with a flag](../../../administration/feature_flags.md) named `limit_unique_project_downloads_per_namespace_user`. Disabled by default. diff --git a/spec/frontend/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js b/spec/frontend/ci/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js index 2b1770142b5..ba948f12b33 100644 --- a/spec/frontend/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js @@ -1,6 +1,6 @@ import { shallowMount } from '@vue/test-utils'; import { GlModal } from '@gitlab/ui'; -import DeletePipelineScheduleModal from '~/pipeline_schedules/components/delete_pipeline_schedule_modal.vue'; +import DeletePipelineScheduleModal from '~/ci/pipeline_schedules/components/delete_pipeline_schedule_modal.vue'; describe('Delete pipeline schedule modal', () => { let wrapper; diff --git a/spec/frontend/pipeline_schedules/components/pipeline_schedules_form_spec.js b/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_form_spec.js index 4b5a9611251..e5d9b378a42 100644 --- a/spec/frontend/pipeline_schedules/components/pipeline_schedules_form_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_form_spec.js @@ -1,6 +1,6 @@ import { shallowMount } from '@vue/test-utils'; import { GlForm } from '@gitlab/ui'; -import PipelineSchedulesForm from '~/pipeline_schedules/components/pipeline_schedules_form.vue'; +import PipelineSchedulesForm from '~/ci/pipeline_schedules/components/pipeline_schedules_form.vue'; describe('Pipeline schedules form', () => { let wrapper; diff --git a/spec/frontend/pipeline_schedules/components/pipeline_schedules_spec.js b/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_spec.js index caee284f6d6..4aa4cdf89a1 100644 --- a/spec/frontend/pipeline_schedules/components/pipeline_schedules_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/pipeline_schedules_spec.js @@ -5,13 +5,13 @@ import { trimText } from 'helpers/text_helper'; import createMockApollo from 'helpers/mock_apollo_helper'; import waitForPromises from 'helpers/wait_for_promises'; import { mountExtended } from 'helpers/vue_test_utils_helper'; -import PipelineSchedules from '~/pipeline_schedules/components/pipeline_schedules.vue'; -import DeletePipelineScheduleModal from '~/pipeline_schedules/components/delete_pipeline_schedule_modal.vue'; -import TakeOwnershipModal from '~/pipeline_schedules/components/take_ownership_modal.vue'; -import PipelineSchedulesTable from '~/pipeline_schedules/components/table/pipeline_schedules_table.vue'; -import deletePipelineScheduleMutation from '~/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql'; -import takeOwnershipMutation from '~/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql'; -import getPipelineSchedulesQuery from '~/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql'; +import PipelineSchedules from '~/ci/pipeline_schedules/components/pipeline_schedules.vue'; +import DeletePipelineScheduleModal from '~/ci/pipeline_schedules/components/delete_pipeline_schedule_modal.vue'; +import TakeOwnershipModal from '~/ci/pipeline_schedules/components/take_ownership_modal.vue'; +import PipelineSchedulesTable from '~/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue'; +import deletePipelineScheduleMutation from '~/ci/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql'; +import takeOwnershipMutation from '~/ci/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql'; +import getPipelineSchedulesQuery from '~/ci/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql'; import { mockGetPipelineSchedulesGraphQLResponse, mockPipelineScheduleNodes, diff --git a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js index a7e831e44f4..3364c61d155 100644 --- a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js @@ -1,6 +1,6 @@ import { GlButton } from '@gitlab/ui'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; -import PipelineScheduleActions from '~/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue'; +import PipelineScheduleActions from '~/ci/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue'; import { mockPipelineScheduleNodes, mockPipelineScheduleAsGuestNodes, diff --git a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js index 5a47b24232f..17bf465baf3 100644 --- a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js @@ -1,6 +1,6 @@ import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; import CiBadge from '~/vue_shared/components/ci_badge_link.vue'; -import PipelineScheduleLastPipeline from '~/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue'; +import PipelineScheduleLastPipeline from '~/ci/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue'; import { mockPipelineScheduleNodes } from '../../../mock_data'; describe('Pipeline schedule last pipeline', () => { diff --git a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js index b1bdc1e91a0..1c06c411097 100644 --- a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js @@ -1,5 +1,5 @@ import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; -import PipelineScheduleNextRun from '~/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue'; +import PipelineScheduleNextRun from '~/ci/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; import { mockPipelineScheduleNodes } from '../../../mock_data'; diff --git a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js index 3ab04958f5e..6c1991cb4ac 100644 --- a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js @@ -1,6 +1,6 @@ import { GlAvatar, GlAvatarLink } from '@gitlab/ui'; import { shallowMount } from '@vue/test-utils'; -import PipelineScheduleOwner from '~/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue'; +import PipelineScheduleOwner from '~/ci/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue'; import { mockPipelineScheduleNodes } from '../../../mock_data'; describe('Pipeline schedule owner', () => { diff --git a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js index 6817e58790b..f531f04a736 100644 --- a/spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js @@ -1,6 +1,6 @@ import { GlIcon, GlLink } from '@gitlab/ui'; import { shallowMount } from '@vue/test-utils'; -import PipelineScheduleTarget from '~/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue'; +import PipelineScheduleTarget from '~/ci/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue'; import { mockPipelineScheduleNodes } from '../../../mock_data'; describe('Pipeline schedule target', () => { diff --git a/spec/frontend/pipeline_schedules/components/table/pipeline_schedules_table_spec.js b/spec/frontend/ci/pipeline_schedules/components/table/pipeline_schedules_table_spec.js index 914897946ee..316b3bcf926 100644 --- a/spec/frontend/pipeline_schedules/components/table/pipeline_schedules_table_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/table/pipeline_schedules_table_spec.js @@ -1,6 +1,6 @@ import { GlTableLite } from '@gitlab/ui'; import { mountExtended } from 'helpers/vue_test_utils_helper'; -import PipelineSchedulesTable from '~/pipeline_schedules/components/table/pipeline_schedules_table.vue'; +import PipelineSchedulesTable from '~/ci/pipeline_schedules/components/table/pipeline_schedules_table.vue'; import { mockPipelineScheduleNodes } from '../../mock_data'; describe('Pipeline schedules table', () => { diff --git a/spec/frontend/pipeline_schedules/components/take_ownership_modal_legacy_spec.js b/spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_legacy_spec.js index e453b5e70c0..7e6d4ec4bf8 100644 --- a/spec/frontend/pipeline_schedules/components/take_ownership_modal_legacy_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_legacy_spec.js @@ -1,6 +1,6 @@ import { GlModal } from '@gitlab/ui'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; -import TakeOwnershipModalLegacy from '~/pipeline_schedules/components/take_ownership_modal_legacy.vue'; +import TakeOwnershipModalLegacy from '~/ci/pipeline_schedules/components/take_ownership_modal_legacy.vue'; describe('Take ownership modal', () => { let wrapper; diff --git a/spec/frontend/pipeline_schedules/components/take_ownership_modal_spec.js b/spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_spec.js index 9812ae3b6c8..e3965d13c19 100644 --- a/spec/frontend/pipeline_schedules/components/take_ownership_modal_spec.js +++ b/spec/frontend/ci/pipeline_schedules/components/take_ownership_modal_spec.js @@ -1,6 +1,6 @@ import { shallowMount } from '@vue/test-utils'; import { GlModal } from '@gitlab/ui'; -import TakeOwnershipModal from '~/pipeline_schedules/components/take_ownership_modal.vue'; +import TakeOwnershipModal from '~/ci/pipeline_schedules/components/take_ownership_modal.vue'; describe('Take ownership modal', () => { let wrapper; diff --git a/spec/frontend/pipeline_schedules/mock_data.js b/spec/frontend/ci/pipeline_schedules/mock_data.js index 3010f1d06c3..3010f1d06c3 100644 --- a/spec/frontend/pipeline_schedules/mock_data.js +++ b/spec/frontend/ci/pipeline_schedules/mock_data.js diff --git a/spec/frontend/fixtures/pipeline_schedules.rb b/spec/frontend/fixtures/pipeline_schedules.rb index 7725818b3b1..3bfe9113e83 100644 --- a/spec/frontend/fixtures/pipeline_schedules.rb +++ b/spec/frontend/fixtures/pipeline_schedules.rb @@ -54,7 +54,7 @@ RSpec.describe 'Pipeline schedules (JavaScript fixtures)' do get_pipeline_schedules_query = 'get_pipeline_schedules.query.graphql' let_it_be(:query) do - get_graphql_query_as_string("pipeline_schedules/graphql/queries/#{get_pipeline_schedules_query}") + get_graphql_query_as_string("ci/pipeline_schedules/graphql/queries/#{get_pipeline_schedules_query}") end it "#{fixtures_path}#{get_pipeline_schedules_query}.json" do diff --git a/spec/frontend/projects/pipelines/charts/components/app_spec.js b/spec/frontend/projects/pipelines/charts/components/app_spec.js index e3aaf760d1e..d8876349c5e 100644 --- a/spec/frontend/projects/pipelines/charts/components/app_spec.js +++ b/spec/frontend/projects/pipelines/charts/components/app_spec.js @@ -8,6 +8,12 @@ import { mergeUrlParams, updateHistory, getParameterValues } from '~/lib/utils/u import Component from '~/projects/pipelines/charts/components/app.vue'; import PipelineCharts from '~/projects/pipelines/charts/components/pipeline_charts.vue'; import API from '~/api'; +import { mockTracking } from 'helpers/tracking_helper'; +import { + SNOWPLOW_DATA_SOURCE, + SNOWPLOW_LABEL, + SNOWPLOW_SCHEMA, +} from '~/projects/pipelines/charts/constants'; jest.mock('~/lib/utils/url_utility'); @@ -125,21 +131,59 @@ describe('ProjectsPipelinesChartsApp', () => { }); describe('event tracking', () => { - it.each` - testId | event - ${'pipelines-tab'} | ${'p_analytics_ci_cd_pipelines'} - ${'deployment-frequency-tab'} | ${'p_analytics_ci_cd_deployment_frequency'} - ${'lead-time-tab'} | ${'p_analytics_ci_cd_lead_time'} - ${'time-to-restore-service-tab'} | ${'p_analytics_ci_cd_time_to_restore_service'} - ${'change-failure-rate-tab'} | ${'p_analytics_ci_cd_change_failure_rate'} - `('tracks the $event event when clicked', ({ testId, event }) => { - jest.spyOn(API, 'trackRedisHllUserEvent'); + describe('RedisHLL events', () => { + it.each` + testId | event + ${'pipelines-tab'} | ${'p_analytics_ci_cd_pipelines'} + ${'deployment-frequency-tab'} | ${'p_analytics_ci_cd_deployment_frequency'} + ${'lead-time-tab'} | ${'p_analytics_ci_cd_lead_time'} + ${'time-to-restore-service-tab'} | ${'p_analytics_ci_cd_time_to_restore_service'} + ${'change-failure-rate-tab'} | ${'p_analytics_ci_cd_change_failure_rate'} + `('tracks the $event event when clicked', ({ testId, event }) => { + const trackApiSpy = jest.spyOn(API, 'trackRedisHllUserEvent'); + + expect(trackApiSpy).not.toHaveBeenCalled(); + + wrapper.findByTestId(testId).vm.$emit('click'); + + expect(trackApiSpy).toHaveBeenCalledWith(event); + }); + }); - expect(API.trackRedisHllUserEvent).not.toHaveBeenCalled(); + describe('Snowplow events', () => { + it.each` + testId | event + ${'pipelines-tab'} | ${'p_analytics_ci_cd_pipelines'} + ${'deployment-frequency-tab'} | ${'p_analytics_ci_cd_deployment_frequency'} + ${'lead-time-tab'} | ${'p_analytics_ci_cd_lead_time'} + `('tracks the $event event when clicked', ({ testId, event }) => { + const trackingSpy = mockTracking(undefined, wrapper.element, jest.spyOn); + + wrapper.findByTestId(testId).vm.$emit('click'); + + expect(trackingSpy).toHaveBeenCalledWith(undefined, 'click_tab', { + label: SNOWPLOW_LABEL, + context: { + schema: SNOWPLOW_SCHEMA, + data: { + event_name: event, + data_source: SNOWPLOW_DATA_SOURCE, + }, + }, + }); + }); - wrapper.findByTestId(testId).vm.$emit('click'); + it.each` + tab + ${'time-to-restore-service-tab'} + ${'change-failure-rate-tab'} + `('does not track when tab $tab is clicked', ({ tab }) => { + const trackingSpy = mockTracking(undefined, wrapper.element, jest.spyOn); - expect(API.trackRedisHllUserEvent).toHaveBeenCalledWith(event); + wrapper.findByTestId(tab).vm.$emit('click'); + + expect(trackingSpy).not.toHaveBeenCalled(); + }); }); }); }); |