Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-09-12 15:11:33 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-09-12 15:11:33 +0300
commit0127158127cb4f21b06ea39cc243d8ac17fc3e41 (patch)
treefa430e57fd398272df6fda9bbf9a8dd19af063f9 /app/assets/javascripts/ci
parentfab43fda656e091104f79668db65f7c5e2a2e68c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/ci')
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/external_links_block.vue34
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue16
-rw-r--r--app/assets/javascripts/ci/job_details/utils.js7
-rw-r--r--app/assets/javascripts/ci/pipeline_details/test_reports/empty_state.vue1
4 files changed, 58 insertions, 0 deletions
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/external_links_block.vue b/app/assets/javascripts/ci/job_details/components/sidebar/external_links_block.vue
new file mode 100644
index 00000000000..a87f4b8467e
--- /dev/null
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/external_links_block.vue
@@ -0,0 +1,34 @@
+<script>
+import { GlIcon, GlLink } from '@gitlab/ui';
+
+export default {
+ components: {
+ GlIcon,
+ GlLink,
+ },
+ props: {
+ externalLinks: {
+ type: Array,
+ required: true,
+ },
+ },
+};
+</script>
+<template>
+ <div>
+ <div class="title gl-font-weight-bold">{{ s__('Job|External links') }}</div>
+ <ul class="gl-list-style-none gl-p-0 gl-m-0">
+ <li v-for="(externalLink, index) in externalLinks" :key="index">
+ <gl-link
+ :href="externalLink.url"
+ target="_blank"
+ rel="noopener noreferrer nofollow"
+ class="gl-text-blue-600!"
+ >
+ <gl-icon name="external-link" class="flex-shrink-0" />
+ {{ externalLink.label }}
+ </gl-link>
+ </li>
+ </ul>
+ </div>
+</template>
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue
index 4711d5b00e3..305d7004357 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue
@@ -3,8 +3,10 @@ import { isEmpty } from 'lodash';
// eslint-disable-next-line no-restricted-imports
import { mapActions, mapGetters, mapState } from 'vuex';
import { forwardDeploymentFailureModalId } from '~/ci/constants';
+import { filterAnnotations } from '~/ci/job_details/utils';
import ArtifactsBlock from './artifacts_block.vue';
import CommitBlock from './commit_block.vue';
+import ExternalLinksBlock from './external_links_block.vue';
import JobsContainer from './jobs_container.vue';
import JobRetryForwardDeploymentModal from './job_retry_forward_deployment_modal.vue';
import JobSidebarDetailsContainer from './sidebar_job_details_container.vue';
@@ -25,6 +27,7 @@ export default {
SidebarHeader,
StagesDropdown,
TriggerBlock,
+ ExternalLinksBlock,
},
props: {
artifactHelpUrl: {
@@ -40,6 +43,9 @@ export default {
// the artifact object will always have a locked property
return Object.keys(this.job.artifact).length > 1;
},
+ hasExternalLinks() {
+ return this.externalLinks.length > 0;
+ },
hasTriggers() {
return !isEmpty(this.job.trigger);
},
@@ -52,6 +58,9 @@ export default {
shouldShowJobRetryForwardDeploymentModal() {
return this.job.retry_path && this.hasForwardDeploymentFailure;
},
+ externalLinks() {
+ return filterAnnotations(this.job.annotations, 'external_link');
+ },
},
watch: {
job(value, oldValue) {
@@ -88,6 +97,13 @@ export default {
:help-url="artifactHelpUrl"
/>
+ <external-links-block
+ v-if="hasExternalLinks"
+ class="gl-py-4"
+ :class="$options.borderTopClass"
+ :external-links="externalLinks"
+ />
+
<trigger-block
v-if="hasTriggers"
class="gl-py-4"
diff --git a/app/assets/javascripts/ci/job_details/utils.js b/app/assets/javascripts/ci/job_details/utils.js
index 44182a20c4c..4d06c241b4f 100644
--- a/app/assets/javascripts/ci/job_details/utils.js
+++ b/app/assets/javascripts/ci/job_details/utils.js
@@ -20,3 +20,10 @@ export const compactJobLog = (jobLog) => {
return compactedLog;
};
+
+export const filterAnnotations = (annotations, type) => {
+ return [...annotations]
+ .sort((a, b) => a.name.localeCompare(b.name))
+ .flatMap((annotationList) => annotationList.data)
+ .flatMap((annotation) => annotation[type] ?? []);
+};
diff --git a/app/assets/javascripts/ci/pipeline_details/test_reports/empty_state.vue b/app/assets/javascripts/ci/pipeline_details/test_reports/empty_state.vue
index 3e7827dc416..055b6742ae1 100644
--- a/app/assets/javascripts/ci/pipeline_details/test_reports/empty_state.vue
+++ b/app/assets/javascripts/ci/pipeline_details/test_reports/empty_state.vue
@@ -54,6 +54,7 @@ export default {
:title="emptyStateText.title"
:description="emptyStateText.description"
:svg-path="emptyStateImagePath"
+ :svg-height="150"
:primary-button-link="testReportDocPath"
:primary-button-text="emptyStateText.button"
/>