mirror of https://github.com/certd/certd
Merge remote-tracking branch 'origin/v2-dev' into v2-dev
commit
412e8a32dd
|
@ -22,11 +22,11 @@ export class HauweiDeployCertToCDN extends AbstractTaskPlugin {
|
|||
helper: '请选择前置任务输出的域名证书',
|
||||
component: {
|
||||
name: 'output-selector',
|
||||
from: [...CertApplyPluginNames],
|
||||
from: [...CertApplyPluginNames,'HauweiUploadToCCM'],
|
||||
},
|
||||
required: true,
|
||||
})
|
||||
cert!: CertInfo;
|
||||
cert!: CertInfo | string;
|
||||
|
||||
@TaskInput(createCertDomainGetterInputDefine({ props: { required: false } }))
|
||||
certDomains!: string[];
|
||||
|
@ -53,14 +53,25 @@ export class HauweiDeployCertToCDN extends AbstractTaskPlugin {
|
|||
domains!: string[];
|
||||
|
||||
async execute(): Promise<void> {
|
||||
if (!this.cert) {
|
||||
throw new Error('域名证书不能为空');
|
||||
}
|
||||
this.logger.info('开始部署证书到华为云cdn');
|
||||
const { cdn, client } = await this.getCdnClient();
|
||||
const httpsConfig = new cdn.HttpPutBody()
|
||||
let httpsConfig = new cdn.HttpPutBody()
|
||||
.withHttpsStatus('on')
|
||||
.withCertificateType('server')
|
||||
.withCertificateName(this.appendTimeSuffix('certd'))
|
||||
.withCertificateValue(this.cert.crt)
|
||||
.withPrivateKey(this.cert.key);
|
||||
|
||||
if(typeof this.cert === 'object'){
|
||||
httpsConfig= httpsConfig.withCertificateSource(0)
|
||||
.withCertificateName(this.appendTimeSuffix('certd'))
|
||||
.withCertificateValue(this.cert.crt)
|
||||
.withPrivateKey(this.cert.key);
|
||||
}else{
|
||||
this.logger.info('使用已有域名证书:', this.cert);
|
||||
httpsConfig= httpsConfig.withCertificateSource(2)//scm证书
|
||||
.withScmCertificateId(this.cert)
|
||||
}
|
||||
|
||||
const config = new cdn.Configs().withHttps(httpsConfig);
|
||||
const body = new cdn.ModifyDomainConfigRequestBody().withConfigs(config);
|
||||
|
@ -70,9 +81,28 @@ export class HauweiDeployCertToCDN extends AbstractTaskPlugin {
|
|||
this.logger.info('部署域名:', JSON.stringify(this.domains));
|
||||
for (const domain of this.domains) {
|
||||
this.logger.info('部署到域名:', domain);
|
||||
const req = new cdn.UpdateDomainFullConfigRequest().withDomainName(domain).withBody(body);
|
||||
await client.updateDomainFullConfig(req);
|
||||
this.logger.info(`部署到域名${domain}完成:`);
|
||||
|
||||
const queryReq = new cdn.ShowDomainDetailByNameRequest(domain);
|
||||
const domainDetail = await client.showDomainDetailByName(queryReq);
|
||||
//@ts-ignore
|
||||
const status = domainDetail.domain.domainStatus || domainDetail.domain.domain_status
|
||||
this.logger.info(`当前域名状态:`, status);
|
||||
let ignoreError = false
|
||||
if (status === 'offline') {
|
||||
ignoreError = true
|
||||
}
|
||||
try{
|
||||
const req = new cdn.UpdateDomainFullConfigRequest().withDomainName(domain).withBody(body);
|
||||
await client.updateDomainFullConfig(req);
|
||||
this.logger.info(`部署到域名${domain}完成:`);
|
||||
}catch (e) {
|
||||
if (ignoreError){
|
||||
this.logger.warn(`部署到域名${domain}失败,由于其处于offline状态,忽略部署错误,继续执行:`, e);
|
||||
}else{
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.logger.info('部署证书到华为云cdn完成');
|
||||
|
|
Loading…
Reference in New Issue