diff --git a/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts b/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts index 7d840409..be244b30 100644 --- a/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts +++ b/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts @@ -60,7 +60,8 @@ export class PipelineController extends CrudController { @Post('/delete', { summary: Constants.per.authOnly }) async delete(@Query('id') id) { await this.service.checkUserId(id, this.ctx.user.id); - return super.delete(id); + await this.service.delete(id); + return this.ok({}); } @Post('/detail', { summary: Constants.per.authOnly }) diff --git a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts index 8538cbb1..1815a6ce 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts @@ -136,6 +136,25 @@ export class PipelineService extends BaseService { logger.info('定时器数量:', this.cron.getListSize()); } + async delete(id: number) { + const pipeline = await this.info(id); + if (!pipeline) { + return; + } + const pipelineObj = JSON.parse(pipeline.content); + if (pipelineObj.triggers) { + for (const trigger of pipelineObj.triggers) { + this.removeCron(id, trigger); + } + } + await super.delete([id]); + } + + removeCron(pipelineId, trigger) { + const name = this.buildCronKey(pipelineId, trigger.id); + this.cron.remove(name); + } + registerCron(pipelineId, trigger) { let cron = trigger.props?.cron; if (cron == null) {