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();