chore: check before

This commit is contained in:
xiaojunnuo
2025-10-23 00:36:20 +08:00
parent 1505d04622
commit d8935b46b3
5 changed files with 41 additions and 23 deletions

View File

@@ -746,7 +746,7 @@ export default {
captchaTest: "测试验证码",
captchaTestHelper: "保存后再点击测试,请务必测试通过了,再开启登录验证码",
pipelineValidTimeEnabled: "流水线有效期",
pipelineValidTimeEnabled: "启用流水线有效期",
pipelineValidTimeEnabledHelper: "是否启用流水线有效期",
certDomainAddToMonitorEnabled: "证书域名添加到证书监控",
certDomainAddToMonitorEnabledHelper: "创建证书流水线时是否可以选择将域名添加到证书监控",

View File

@@ -34,7 +34,7 @@ import SettingRegister from "/@/views/sys/settings/tabs/register.vue";
import SettingPayment from "/@/views/sys/settings/tabs/payment.vue";
import SettingSafe from "/@/views/sys/settings/tabs/safe.vue";
import SettingCaptcha from "/@/views/sys/settings/tabs/captcha.vue";
import SettingCert from "/@/views/sys/settings/tabs/cert.vue";
import { useRoute, useRouter } from "vue-router";
import { ref } from "vue";
import { useSettingStore } from "/@/store/settings";

View File

@@ -7,7 +7,7 @@
<vip-button class="ml-5" mode="button"></vip-button>
</div>
<div class="helper">{{ t("certd.pipelineValidTimeEnabledHelper") }}</div>
<div class="helper">{{ t("certd.sys.setting.pipelineValidTimeEnabledHelper") }}</div>
</a-form-item>
<a-form-item :label="t('certd.sys.setting.certDomainAddToMonitorEnabled')" :name="['public', 'certDomainAddToMonitorEnabled']">
<div class="flex items-center">

View File

@@ -101,7 +101,7 @@ export class PipelineController extends CrudController<PipelineService> {
@Post('/trigger', { summary: Constants.per.authOnly })
async trigger(@Query('id') id: number, @Query('stepId') stepId?: string) {
await this.authService.checkEntityUserId(this.ctx, this.getService(), id);
await this.service.trigger(id, stepId);
await this.service.trigger(id, stepId,true);
return this.ok({});
}

View File

@@ -368,17 +368,21 @@ export class PipelineService extends BaseService<PipelineEntity> {
}
if (immediateTriggerOnce) {
await this.trigger(pipeline.id);
await sleep(200);
try{
await this.trigger(pipeline.id);
await sleep(200);
}catch(e){
logger.error(e);
}
}
}
async trigger(id: any, stepId?: string) {
async trigger(id: any, stepId?: string , doCheck = false) {
const entity: PipelineEntity = await this.info(id);
if (isComm()) {
await this.checkHasDeployCount(id, entity.userId);
if (doCheck) {
await this.beforeCheck(entity);
}
await this.checkUserStatus(entity.userId);
this.cron.register({
name: `pipeline.${id}.trigger.once`,
cron: null,
@@ -504,28 +508,42 @@ export class PipelineService extends BaseService<PipelineEntity> {
*/
async run(id: number, triggerId: string, stepId?: string) {
const entity: PipelineEntity = await this.info(id);
const validTimeEnabled = await this.isPipelineValidTimeEnabled(entity)
if (!validTimeEnabled) {
logger.info(`流水线${id}已过期,不予执行`);
return;
}
await this.doRun(entity, triggerId, stepId);
}
async doRun(entity: PipelineEntity, triggerId: string, stepId?: string) {
const id = entity.id;
async beforeCheck(entity: PipelineEntity) {
const validTimeEnabled = await this.isPipelineValidTimeEnabled(entity)
if (!validTimeEnabled) {
throw new Error(`流水线${entity.id}已过期,不予执行`);
}
let suite: UserSuiteEntity = null;
if (isComm()) {
suite = await this.checkHasDeployCount(id, entity.userId);
suite = await this.checkHasDeployCount(entity.id, entity.userId);
}
try {
await this.checkUserStatus(entity.userId);
await this.checkUserStatus(entity.userId);
return {
suite
}
}
async doRun(entity: PipelineEntity, triggerId: string, stepId?: string) {
let suite:any = null
try{
const res = await this.beforeCheck(entity);
suite = res.suite
} catch (e) {
logger.info(e.message);
return;
if(!triggerId){
//手动执行
throw e;
}
logger.error(`流水线${entity.id}触发${triggerId}失败:`, e);
}
const id = entity.id;
const pipeline = JSON.parse(entity.content);
if (!pipeline.id) {
pipeline.id = id;