diff --git a/Gemfile b/Gemfile
index 644849fe648..6c9836c6cbd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -635,7 +635,7 @@ gem 'spamcheck', '~> 1.3.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'gitaly', '~> 17.5.0.pre.rc1', feature_category: :gitaly
# KAS GRPC protocol definitions
-gem 'gitlab-kas-grpc', '~> 17.6.1', feature_category: :deployment_management
+gem 'gitlab-kas-grpc', '~> 17.7.0', feature_category: :deployment_management
# Lock the version before issues below are resolved:
# https://gitlab.com/gitlab-org/gitlab/-/issues/473169#note_2028352939
diff --git a/Gemfile.checksum b/Gemfile.checksum
index b245199e3c0..162678202b5 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -231,7 +231,7 @@
{"name":"gitlab-glfm-markdown","version":"0.0.23","platform":"ruby","checksum":"89a12909c39aea326adb0b7194f7b89d61b4f9122308435fba0bcb84e4f4ff24"},
{"name":"gitlab-glfm-markdown","version":"0.0.23","platform":"x86_64-darwin","checksum":"4b77a37358d98c3b2269f7dd19f6549555c5de00bf12a4eca25c34076f72f78d"},
{"name":"gitlab-glfm-markdown","version":"0.0.23","platform":"x86_64-linux","checksum":"2b71ec5ae06a524114e2cf423ce6635fd1f5c6776c0c956188aa0b2f0fbfbead"},
-{"name":"gitlab-kas-grpc","version":"17.6.2","platform":"ruby","checksum":"cf057d6c9ac2cfdbd59de9af95adeeb74be3996d4babfb5fb67397dd8a976887"},
+{"name":"gitlab-kas-grpc","version":"17.7.0","platform":"ruby","checksum":"3960e514672c22e7efad533140255acd59b0a32e22cc270af124361173400600"},
{"name":"gitlab-labkit","version":"0.37.0","platform":"ruby","checksum":"d2dd0a60db2149a9a8eebf2975dc23f54ac3ceb01bdba732eb1b26b86dfffa70"},
{"name":"gitlab-license","version":"2.6.0","platform":"ruby","checksum":"2c1f8ae73835640ec77bf758c1d0c9730635043c01cf77902f7976e826d7d016"},
{"name":"gitlab-mail_room","version":"0.0.25","platform":"ruby","checksum":"223ce7c3c0797b6015eaa37147884e6ddc7be9a7ee90a424358c96bc18613b1a"},
diff --git a/Gemfile.lock b/Gemfile.lock
index e9723e3149c..a637019fd7b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -753,7 +753,7 @@ GEM
nokogiri (~> 1, >= 1.10.8)
gitlab-glfm-markdown (0.0.23)
rb_sys (= 0.9.94)
- gitlab-kas-grpc (17.6.2)
+ gitlab-kas-grpc (17.7.0)
grpc (~> 1.0)
gitlab-labkit (0.37.0)
actionpack (>= 5.0.0, < 8.1.0)
@@ -2083,7 +2083,7 @@ DEPENDENCIES
gitlab-glfm-markdown (~> 0.0.21)
gitlab-housekeeper!
gitlab-http!
- gitlab-kas-grpc (~> 17.6.1)
+ gitlab-kas-grpc (~> 17.7.0)
gitlab-labkit (~> 0.37.0)
gitlab-license (~> 2.6)
gitlab-mail_room (~> 0.0.24)
diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum
index 5fab2d0c534..652b3196286 100644
--- a/Gemfile.next.checksum
+++ b/Gemfile.next.checksum
@@ -232,7 +232,7 @@
{"name":"gitlab-glfm-markdown","version":"0.0.23","platform":"ruby","checksum":"89a12909c39aea326adb0b7194f7b89d61b4f9122308435fba0bcb84e4f4ff24"},
{"name":"gitlab-glfm-markdown","version":"0.0.23","platform":"x86_64-darwin","checksum":"4b77a37358d98c3b2269f7dd19f6549555c5de00bf12a4eca25c34076f72f78d"},
{"name":"gitlab-glfm-markdown","version":"0.0.23","platform":"x86_64-linux","checksum":"2b71ec5ae06a524114e2cf423ce6635fd1f5c6776c0c956188aa0b2f0fbfbead"},
-{"name":"gitlab-kas-grpc","version":"17.6.2","platform":"ruby","checksum":"cf057d6c9ac2cfdbd59de9af95adeeb74be3996d4babfb5fb67397dd8a976887"},
+{"name":"gitlab-kas-grpc","version":"17.7.0","platform":"ruby","checksum":"3960e514672c22e7efad533140255acd59b0a32e22cc270af124361173400600"},
{"name":"gitlab-labkit","version":"0.37.0","platform":"ruby","checksum":"d2dd0a60db2149a9a8eebf2975dc23f54ac3ceb01bdba732eb1b26b86dfffa70"},
{"name":"gitlab-license","version":"2.6.0","platform":"ruby","checksum":"2c1f8ae73835640ec77bf758c1d0c9730635043c01cf77902f7976e826d7d016"},
{"name":"gitlab-mail_room","version":"0.0.25","platform":"ruby","checksum":"223ce7c3c0797b6015eaa37147884e6ddc7be9a7ee90a424358c96bc18613b1a"},
diff --git a/Gemfile.next.lock b/Gemfile.next.lock
index a9fc008f8ea..2e3714b4b05 100644
--- a/Gemfile.next.lock
+++ b/Gemfile.next.lock
@@ -763,7 +763,7 @@ GEM
nokogiri (~> 1, >= 1.10.8)
gitlab-glfm-markdown (0.0.23)
rb_sys (= 0.9.94)
- gitlab-kas-grpc (17.6.2)
+ gitlab-kas-grpc (17.7.0)
grpc (~> 1.0)
gitlab-labkit (0.37.0)
actionpack (>= 5.0.0, < 8.1.0)
@@ -2111,7 +2111,7 @@ DEPENDENCIES
gitlab-glfm-markdown (~> 0.0.21)
gitlab-housekeeper!
gitlab-http!
- gitlab-kas-grpc (~> 17.6.1)
+ gitlab-kas-grpc (~> 17.7.0)
gitlab-labkit (~> 0.37.0)
gitlab-license (~> 2.6)
gitlab-mail_room (~> 0.0.24)
diff --git a/app/assets/javascripts/deployments/components/deployment_aside.vue b/app/assets/javascripts/deployments/components/deployment_aside.vue
index f6c2f920690..afd28a110e7 100644
--- a/app/assets/javascripts/deployments/components/deployment_aside.vue
+++ b/app/assets/javascripts/deployments/components/deployment_aside.vue
@@ -4,6 +4,9 @@ import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';
import ShowMore from '~/vue_shared/components/show_more.vue';
import AssigneeAvatarLink from '~/sidebar/components/assignees/assignee_avatar_link.vue';
import { __, s__ } from '~/locale';
+import { getIdFromGraphQLId } from '~/graphql_shared/utils';
+import { InternalEvents } from '~/tracking';
+import { CLICK_PIPELINE_LINK_ON_DEPLOYMENT_PAGE } from '~/deployments/utils';
import AsideItem from './aside_item.vue';
export default {
@@ -17,6 +20,7 @@ export default {
directives: {
GlTooltip: GlTooltipDirective,
},
+ mixins: [InternalEvents.mixin()],
props: {
deployment: {
required: true,
@@ -72,6 +76,9 @@ export default {
hasUrl() {
return Boolean(this.environment.externalUrl);
},
+ pipelineId() {
+ return getIdFromGraphQLId(this.deployment.job.pipeline.id);
+ },
},
mounted() {
window.addEventListener('resize', this.handleWindowResize);
@@ -87,11 +94,15 @@ export default {
toggleSidebar() {
this.isExpanded = !this.isExpanded;
},
+ trackPipelineLinkClick() {
+ this.trackEvent(CLICK_PIPELINE_LINK_ON_DEPLOYMENT_PAGE);
+ },
},
i18n: {
openUrl: s__('Deployment|Open URL'),
triggerer: s__('Deployment|Triggerer'),
relatedTags: s__('Deployment|Related Tags'),
+ pipeline: s__('Deployment|Pipeline'),
job: s__('Deployment|Job'),
branch: s__('Deployment|Branch'),
tag: s__('Deployment|Tag'),
@@ -172,6 +183,17 @@ export default {
+
+ {{ $options.i18n.pipeline }}
+
+ #{{ pipelineId }}
+
+
+
{{ $options.i18n.job }}
diff --git a/app/assets/javascripts/deployments/graphql/queries/deployment.query.graphql b/app/assets/javascripts/deployments/graphql/queries/deployment.query.graphql
index e4ea6a114fd..df0117a17d6 100644
--- a/app/assets/javascripts/deployments/graphql/queries/deployment.query.graphql
+++ b/app/assets/javascripts/deployments/graphql/queries/deployment.query.graphql
@@ -21,6 +21,10 @@ query fetchDeployment($fullPath: ID!, $iid: ID!) {
...DeploymentJob
canPlayJob
manualJob
+ pipeline {
+ id
+ path
+ }
}
commit {
id
diff --git a/app/assets/javascripts/deployments/utils/index.js b/app/assets/javascripts/deployments/utils/index.js
index bd9e76f6ca0..7f0a4d72790 100644
--- a/app/assets/javascripts/deployments/utils/index.js
+++ b/app/assets/javascripts/deployments/utils/index.js
@@ -3,3 +3,5 @@ export const FINISHED_STATUSES = ['SUCCESS', 'FAILED', 'CANCELED'];
export const UPCOMING_STATUSES = ['RUNNING', 'BLOCKED'];
export const isFinished = ({ status }) => FINISHED_STATUSES.includes(status);
+
+export const CLICK_PIPELINE_LINK_ON_DEPLOYMENT_PAGE = 'clicked_deployment_details_pipeline_link';
diff --git a/app/assets/javascripts/work_items/components/work_item_change_type_modal.vue b/app/assets/javascripts/work_items/components/work_item_change_type_modal.vue
index 27e9dc0703c..9a9cdcd9bf1 100644
--- a/app/assets/javascripts/work_items/components/work_item_change_type_modal.vue
+++ b/app/assets/javascripts/work_items/components/work_item_change_type_modal.vue
@@ -1,5 +1,5 @@