From 2da44c3699c2cc332ecc1e023b5744b4b37e9a2a Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Fri, 7 Nov 2025 01:35:30 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BC=98=E5=8C=96=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E7=BA=BF=E8=BF=90=E8=A1=8C=E6=97=B6=E7=8A=B6=E6=80=81timeline?= =?UTF-8?q?=E8=A2=AB=E6=8C=A4=E6=88=902=E8=A1=8C=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/history-timeline-item.vue | 2 +- .../views/certd/pipeline/pipeline/index.vue | 4 +- .../plugins/deploy-to-cdn/index.ts | 66 +++++++++++++++---- 3 files changed, 58 insertions(+), 14 deletions(-) diff --git a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/history-timeline-item.vue b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/history-timeline-item.vue index b45baf3f..7a020d4e 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/history-timeline-item.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/history-timeline-item.vue @@ -3,7 +3,7 @@ -

+

{{ status.label }} diff --git a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue index ee92ae5f..bcb6f087 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue @@ -1027,7 +1027,7 @@ export default defineComponent({ } .layout-right { - width: 350px; + width: 354px; height: 100%; } } @@ -1254,7 +1254,7 @@ export default defineComponent({ position: relative; &.collapsed { - margin-right: -350px; + margin-right: -354px; } .collapse-toggle { diff --git a/packages/ui/certd-server/src/plugins/plugin-doge/plugins/deploy-to-cdn/index.ts b/packages/ui/certd-server/src/plugins/plugin-doge/plugins/deploy-to-cdn/index.ts index 7c75669e..539de8ed 100644 --- a/packages/ui/certd-server/src/plugins/plugin-doge/plugins/deploy-to-cdn/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-doge/plugins/deploy-to-cdn/index.ts @@ -1,8 +1,9 @@ -import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; +import { AbstractTaskPlugin, IsTaskPlugin, PageSearch, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; import { CertInfo } from '@certd/plugin-cert'; import { DogeClient } from '../../lib/index.js'; import dayjs from 'dayjs'; -import { CertApplyPluginNames} from '@certd/plugin-cert'; +import { CertApplyPluginNames } from '@certd/plugin-cert'; +import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from '@certd/plugin-lib'; @IsTaskPlugin({ name: 'DogeCloudDeployToCDN', title: '多吉云-部署到多吉云CDN', @@ -15,12 +16,6 @@ import { CertApplyPluginNames} from '@certd/plugin-cert'; }, }) export class DogeCloudDeployToCDNPlugin extends AbstractTaskPlugin { - @TaskInput({ - title: '域名', - helper: 'CDN域名', - required: true, - }) - domain!: string; //证书选择,此项必须要有 @TaskInput({ title: '证书', @@ -33,6 +28,9 @@ export class DogeCloudDeployToCDNPlugin extends AbstractTaskPlugin { }) cert!: CertInfo; + @TaskInput(createCertDomainGetterInputDefine({ props: { required: false } })) + certDomains!: string[]; + //授权选择框 @TaskInput({ title: '多吉云授权', @@ -45,6 +43,16 @@ export class DogeCloudDeployToCDNPlugin extends AbstractTaskPlugin { }) accessId!: string; + @TaskInput(createRemoteSelectInputDefine({ + title: 'CDN域名', + helper: '请选择CDN域名,可以选择多个,一次性部署', + required: true, + action: DogeCloudDeployToCDNPlugin.prototype.onGetDomainList.name, + pager: false, + search: false + })) + domain!: string | string[]; + @TaskInput({ title: '忽略部署接口报错', helper: '当该域名部署后报错,但是实际上已经部署成功时,可以勾选', @@ -64,7 +72,16 @@ export class DogeCloudDeployToCDNPlugin extends AbstractTaskPlugin { } async execute(): Promise { const certId: number = await this.updateCert(); - await this.bindCert(certId); + + let domains = this.domain + if (typeof domains === 'string'){ + domains = [domains] + } + for (const domain of domains) { + this.ctx.logger.info(`绑定证书${certId}到域名${domain}`); + await this.bindCert(certId,domain); + } + this.logger.info("执行完成") } async updateCert() { @@ -76,15 +93,42 @@ export class DogeCloudDeployToCDNPlugin extends AbstractTaskPlugin { return data.id; } - async bindCert(certId: number) { + async bindCert(certId: number,domain: string) { await this.dogeClient.request( '/cdn/cert/bind.json', { id: certId, - domain: this.domain, + domain: domain, }, this.ignoreDeployNullCode ); } + + + async onGetDomainList(data: PageSearch = {}) { + + const res = await this.dogeClient.request( + '/cdn/domain/list.json', + { + }, + this.ignoreDeployNullCode + ); + + const list = res.domains + if (!list || list.length === 0) { + throw new Error("没有找到CDN域名"); + } + + const options = list.map((item: any) => { + return { + label: `${item.name}`, + value: item.name, + domain: item.name + }; + }); + return { + list: this.ctx.utils.options.buildGroupOptions(options, this.certDomains), + }; + } } new DogeCloudDeployToCDNPlugin();