From eaa9a0adf963293c678f30e73b7150e89f921a99 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Sat, 5 Nov 2022 00:07:57 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/CODEOWNERS | 2 +- .gitlab/ci/workhorse.gitlab-ci.yml | 2 +- .../delete_pipeline_schedule_modal.vue | 0 .../components/pipeline_schedules.vue | 0 .../components/pipeline_schedules_form.vue | 0 .../table/cells/pipeline_schedule_actions.vue | 0 .../cells/pipeline_schedule_last_pipeline.vue | 0 .../cells/pipeline_schedule_next_run.vue | 0 .../table/cells/pipeline_schedule_owner.vue | 0 .../table/cells/pipeline_schedule_target.vue | 0 .../table/pipeline_schedules_table.vue | 0 .../components/take_ownership_modal.vue | 0 .../take_ownership_modal_legacy.vue | 0 .../delete_pipeline_schedule.mutation.graphql | 0 .../mutations/take_ownership.mutation.graphql | 0 .../get_pipeline_schedules.query.graphql | 0 .../mount_pipeline_schedules_app.js | 0 .../mount_pipeline_schedules_form_app.js | 0 .../projects/pipeline_schedules/edit/index.js | 2 +- .../pipeline_schedules/index/index.js | 4 +- .../projects/pipeline_schedules/new/index.js | 2 +- .../pipelines/charts/components/app.vue | 26 +++++-- .../projects/pipelines/charts/constants.js | 4 ++ doc/administration/audit_events.md | 2 + doc/install/installation.md | 10 +-- doc/update/upgrading_from_source.md | 8 +-- .../reporting/git_abuse_rate_limit.md | 2 +- .../group/reporting/git_abuse_rate_limit.md | 2 +- .../delete_pipeline_schedule_modal_spec.js | 2 +- .../pipeline_schedules_form_spec.js | 2 +- .../components/pipeline_schedules_spec.js | 14 ++-- .../cells/pipeline_schedule_actions_spec.js | 2 +- .../pipeline_schedule_last_pipeline_spec.js | 2 +- .../cells/pipeline_schedule_next_run_spec.js | 2 +- .../cells/pipeline_schedule_owner_spec.js | 2 +- .../cells/pipeline_schedule_target_spec.js | 2 +- .../table/pipeline_schedules_table_spec.js | 2 +- .../take_ownership_modal_legacy_spec.js | 2 +- .../components/take_ownership_modal_spec.js | 2 +- .../{ => ci}/pipeline_schedules/mock_data.js | 0 spec/frontend/fixtures/pipeline_schedules.rb | 2 +- .../pipelines/charts/components/app_spec.js | 68 +++++++++++++++---- 42 files changed, 118 insertions(+), 52 deletions(-) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/delete_pipeline_schedule_modal.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/pipeline_schedules.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/pipeline_schedules_form.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/table/pipeline_schedules_table.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/take_ownership_modal.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/components/take_ownership_modal_legacy.vue (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/mount_pipeline_schedules_app.js (100%) rename app/assets/javascripts/{ => ci}/pipeline_schedules/mount_pipeline_schedules_form_app.js (100%) rename spec/frontend/{ => ci}/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js (87%) rename spec/frontend/{ => ci}/pipeline_schedules/components/pipeline_schedules_form_spec.js (82%) rename spec/frontend/{ => ci}/pipeline_schedules/components/pipeline_schedules_spec.js (91%) rename spec/frontend/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js (93%) rename spec/frontend/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js (90%) rename spec/frontend/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js (91%) rename spec/frontend/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js (89%) rename spec/frontend/{ => ci}/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js (89%) rename spec/frontend/{ => ci}/pipeline_schedules/components/table/pipeline_schedules_table_spec.js (89%) rename spec/frontend/{ => ci}/pipeline_schedules/components/take_ownership_modal_legacy_spec.js (91%) rename spec/frontend/{ => ci}/pipeline_schedules/components/take_ownership_modal_spec.js (91%) rename spec/frontend/{ => ci}/pipeline_schedules/mock_data.js (100%) 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/delete_pipeline_schedule_modal.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/pipeline_schedules.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/pipeline_schedules_form.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_actions.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_next_run.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_owner.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/table/cells/pipeline_schedule_target.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/table/pipeline_schedules_table.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/take_ownership_modal.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/components/take_ownership_modal_legacy.vue rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/graphql/mutations/delete_pipeline_schedule.mutation.graphql rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/graphql/mutations/take_ownership.mutation.graphql rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/graphql/queries/get_pipeline_schedules.query.graphql rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_app.js rename to 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 similarity index 100% rename from app/assets/javascripts/pipeline_schedules/mount_pipeline_schedules_form_app.js rename to 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 { @@ -95,14 +111,14 @@ export default { 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 similarity index 87% rename from spec/frontend/pipeline_schedules/components/delete_pipeline_schedule_modal_spec.js rename to 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 similarity index 82% rename from spec/frontend/pipeline_schedules/components/pipeline_schedules_form_spec.js rename to 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 similarity index 91% rename from spec/frontend/pipeline_schedules/components/pipeline_schedules_spec.js rename to 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 similarity index 93% rename from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_actions_spec.js rename to 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 similarity index 90% rename from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_last_pipeline_spec.js rename to 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 similarity index 91% rename from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_next_run_spec.js rename to 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 similarity index 89% rename from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_owner_spec.js rename to 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 similarity index 89% rename from spec/frontend/pipeline_schedules/components/table/cells/pipeline_schedule_target_spec.js rename to 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 similarity index 89% rename from spec/frontend/pipeline_schedules/components/table/pipeline_schedules_table_spec.js rename to 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 similarity index 91% rename from spec/frontend/pipeline_schedules/components/take_ownership_modal_legacy_spec.js rename to 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 similarity index 91% rename from spec/frontend/pipeline_schedules/components/take_ownership_modal_spec.js rename to 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 similarity index 100% rename from spec/frontend/pipeline_schedules/mock_data.js rename to 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(API.trackRedisHllUserEvent).not.toHaveBeenCalled(); + expect(trackApiSpy).not.toHaveBeenCalled(); - wrapper.findByTestId(testId).vm.$emit('click'); + wrapper.findByTestId(testId).vm.$emit('click'); - expect(API.trackRedisHllUserEvent).toHaveBeenCalledWith(event); + expect(trackApiSpy).toHaveBeenCalledWith(event); + }); + }); + + 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, + }, + }, + }); + }); + + 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); + + wrapper.findByTestId(tab).vm.$emit('click'); + + expect(trackingSpy).not.toHaveBeenCalled(); + }); }); }); });