feat(pipeline-tasks): 任务失败后,也调用执行下一个任务。
This commit is contained in:
parent
211a90590f
commit
607a4f57de
@ -1,6 +1,11 @@
|
|||||||
import { PipelineTaskLogs } from './models/pipeline-task-logs.model';
|
import { PipelineTaskLogs } from './models/pipeline-task-logs.model';
|
||||||
import { ReposService } from './../repos/repos.service';
|
import { ReposService } from './../repos/repos.service';
|
||||||
import { OnQueueCompleted, Process, Processor } from '@nestjs/bull';
|
import {
|
||||||
|
OnQueueCompleted,
|
||||||
|
OnQueueFailed,
|
||||||
|
Process,
|
||||||
|
Processor,
|
||||||
|
} from '@nestjs/bull';
|
||||||
import { Job } from 'bull';
|
import { Job } from 'bull';
|
||||||
import { spawn } from 'child_process';
|
import { spawn } from 'child_process';
|
||||||
import { PipelineTask } from './pipeline-task.entity';
|
import { PipelineTask } from './pipeline-task.entity';
|
||||||
@ -121,4 +126,9 @@ export class PipelineTaskConsumer {
|
|||||||
onCompleted(job: Job<PipelineTask>) {
|
onCompleted(job: Job<PipelineTask>) {
|
||||||
this.service.doNextTask(job.data.pipeline);
|
this.service.doNextTask(job.data.pipeline);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnQueueFailed()
|
||||||
|
onFailed(job: Job<PipelineTask>) {
|
||||||
|
this.service.doNextTask(job.data.pipeline);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { ConflictException, Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { PipelineTask } from './pipeline-task.entity';
|
import { PipelineTask } from './pipeline-task.entity';
|
||||||
import { Repository } from 'typeorm';
|
import { In, Repository } from 'typeorm';
|
||||||
import { CreatePipelineTaskInput } from './dtos/create-pipeline-task.input';
|
import { CreatePipelineTaskInput } from './dtos/create-pipeline-task.input';
|
||||||
import { RedisService } from 'nestjs-redis';
|
import { RedisService } from 'nestjs-redis';
|
||||||
import { Pipeline } from '../pipelines/pipeline.entity';
|
import { Pipeline } from '../pipelines/pipeline.entity';
|
||||||
@ -10,6 +10,8 @@ import { PIPELINE_TASK_QUEUE } from './pipeline-tasks.constants';
|
|||||||
import { Queue } from 'bull';
|
import { Queue } from 'bull';
|
||||||
import { LockFailedException } from '../commons/exceptions/lock-failed.exception';
|
import { LockFailedException } from '../commons/exceptions/lock-failed.exception';
|
||||||
import { PubSub } from 'apollo-server-express';
|
import { PubSub } from 'apollo-server-express';
|
||||||
|
import { TaskStatuses } from './enums/task-statuses.enum';
|
||||||
|
import { isNil } from 'ramda';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class PipelineTasksService {
|
export class PipelineTasksService {
|
||||||
@ -28,6 +30,17 @@ export class PipelineTasksService {
|
|||||||
where: { id: dto.pipelineId },
|
where: { id: dto.pipelineId },
|
||||||
relations: ['project'],
|
relations: ['project'],
|
||||||
});
|
});
|
||||||
|
// const hasUnfinishedTask = await this.repository
|
||||||
|
// .findOne({
|
||||||
|
// pipelineId: pipeline.id,
|
||||||
|
// status: In([TaskStatuses.pending, TaskStatuses.working]),
|
||||||
|
// })
|
||||||
|
// .then((val) => !isNil(val));
|
||||||
|
// if (hasUnfinishedTask) {
|
||||||
|
// throw new ConflictException(
|
||||||
|
// 'there are still unfinished task in the current pipeline.',
|
||||||
|
// );
|
||||||
|
// }
|
||||||
const task = await this.repository.save(this.repository.create(dto));
|
const task = await this.repository.save(this.repository.create(dto));
|
||||||
task.pipeline = pipeline;
|
task.pipeline = pipeline;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user