diff --git a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.test.ts b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.test.ts new file mode 100644 index 000000000..ca0021399 --- /dev/null +++ b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.test.ts @@ -0,0 +1,38 @@ +import assert from "assert"; +import { PipelineEntity } from "../entity/pipeline.js"; +import { PipelineService } from "./pipeline-service.js"; + +describe("PipelineService", () => { + it("does not start a pipeline run when beforeCheck fails", async () => { + const service = new PipelineService(); + let historyStarted = false; + + service.beforeCheck = async () => { + throw new Error("部署次数不足"); + }; + service.userService = { + async isAdmin() { + return false; + }, + } as any; + service.historyService = { + async start() { + historyStarted = true; + throw new Error("history should not start"); + }, + } as any; + + const entity = new PipelineEntity(); + entity.id = 1; + entity.userId = 1; + entity.projectId = 0; + entity.content = JSON.stringify({ + stages: [{ id: "stage1", tasks: [] }], + triggers: [], + }); + + await service.doRun(entity, null, "ALL"); + + assert.equal(historyStarted, false); + }); +}); 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 c53ec1452..15829588f 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 @@ -659,6 +659,7 @@ export class PipelineService extends BaseService { suite = res.suite } catch (e) { logger.error(`流水线${entity.id}触发失败(${triggerId}):${e.message}`); + return; } const id = entity.id;