perf: 流水线创建时支持添加到证书监控

v2-dev
xiaojunnuo 2025-10-24 23:10:20 +08:00
parent 3a8931feef
commit 59ba408070
4 changed files with 69 additions and 3 deletions

View File

@ -230,6 +230,9 @@ export default {
notificationWhen: "Notification Timing",
notificationHelper: "Get real-time alerts when the task fails",
groupIdTitle: "Pipeline Group",
addToMonitorEnabled: "Add to Cert Monitor",
addToMonitorDomains: "Add to Monitor Domains",
},
notificationDefault: "Use Default Notification",
monitor: {

View File

@ -234,6 +234,8 @@ export default {
notificationWhen: "通知时机",
notificationHelper: "任务执行失败实时提醒",
groupIdTitle: "流水线分组",
addToMonitorEnabled: "添加到证书监控",
addToMonitorDomains: "添加到监控域名",
},
notificationDefault: "使用默认通知",
monitor: {

View File

@ -6,12 +6,13 @@ import { useRouter } from "vue-router";
import { compute, CreateCrudOptionsRet, dict, useFormWrapper } from "@fast-crud/fast-crud";
import NotificationSelector from "/@/views/certd/notification/notification-selector/index.vue";
import { useReference } from "/@/use/use-refrence";
import { ref } from "vue";
import { computed, ref } from "vue";
import * as api from "../api";
import { PluginGroup, usePluginStore } from "/@/store/plugin";
import { createNotificationApi } from "/@/views/certd/notification/api";
import GroupSelector from "../group/group-selector.vue";
import { useI18n } from "/src/locales";
import { useSettingStore } from "/@/store/settings";
export function fillPipelineByDefaultForm(pipeline: any, form: any) {
const triggers = [];
@ -78,6 +79,7 @@ export function useCertPipelineCreator() {
const { openCrudFormDialog } = useFormWrapper();
const pluginStore = usePluginStore();
const settingStore = useSettingStore();
const router = useRouter();
function createCrudOptions(certPlugins: any[], getFormData: any, doSubmit: any): CreateCrudOptionsRet {
@ -251,7 +253,48 @@ export function useCertPipelineCreator() {
name: GroupSelector,
vModel: "modelValue",
},
order: 9999,
order: 888,
},
},
addToMonitorEnabled: {
title: t("certd.pipelineForm.addToMonitorEnabled"),
type: "switch",
form: {
show: computed(() => {
return settingStore.isPlus && settingStore.sysPublic?.certDomainAddToMonitorEnabled;
}),
value: false,
component: {
name: "a-switch",
vModel: "checked",
},
col: {
span: 24,
},
order: 999,
valueChange({ value, form }) {
if (value) {
form.addToMonitorDomains = form.domains.join("\n").replaceAll("*", "www");
}
},
},
},
addToMonitorDomains: {
title: t("certd.pipelineForm.addToMonitorDomains"),
type: "text",
form: {
show: compute(({ form }) => {
return form.addToMonitorEnabled;
}),
component: {
name: "a-textarea",
vModel: "value",
},
col: {
span: 24,
},
helper: t("certd.domainList.helper"),
order: 999,
},
},
},
@ -330,6 +373,8 @@ export function useCertPipelineCreator() {
keepHistoryCount: 30,
type: "cert",
groupId,
addToMonitorEnabled: form.addToMonitorEnabled,
addToMonitorDomains: form.addToMonitorDomains,
});
if (form.email) {
try {

View File

@ -4,6 +4,8 @@ import { PipelineService } from '../../../modules/pipeline/service/pipeline-serv
import { PipelineEntity } from '../../../modules/pipeline/entity/pipeline.js';
import { HistoryService } from '../../../modules/pipeline/service/history-service.js';
import { AuthService } from '../../../modules/sys/authority/service/auth-service.js';
import { SiteInfoService } from '../../../modules/monitor/index.js';
import { isPlus } from '@certd/plus-core';
/**
*
@ -20,6 +22,9 @@ export class PipelineController extends CrudController<PipelineService> {
@Inject()
sysSettingsService: SysSettingsService;
@Inject()
siteInfoService: SiteInfoService;
getService() {
return this.service;
}
@ -74,13 +79,24 @@ export class PipelineController extends CrudController<PipelineService> {
}
@Post('/save', { summary: Constants.per.authOnly })
async save(@Body(ALL) bean: PipelineEntity) {
async save(@Body(ALL) bean: {addToMonitorEnabled: boolean, addToMonitorDomains: string} & PipelineEntity) {
if (bean.id > 0) {
await this.authService.checkEntityUserId(this.ctx, this.getService(), bean.id);
} else {
bean.userId = this.getUserId();
}
await this.service.save(bean);
//是否增加证书监控
if (bean.addToMonitorEnabled && bean.addToMonitorDomains) {
const sysPublicSettings = await this.sysSettingsService.getPublicSettings();
if (isPlus() && sysPublicSettings.certDomainAddToMonitorEnabled) {
//增加证书监控
await this.siteInfoService.doImport({
text: bean.addToMonitorDomains,
userId: this.getUserId(),
});
}
}
return this.ok(bean.id);
}