import {ConfigurableNodeDefinition, NodeType, NodeCategory} from './types'; /** * Jenkins构建节点定义(纯配置) * 使用 BaseNode 组件渲染,无需自定义渲染代码 */ export const JenkinsBuildNodeDefinition: ConfigurableNodeDefinition = { nodeCode: "JENKINS_BUILD", nodeName: "Jenkins构建", nodeType: NodeType.JENKINS_BUILD, category: NodeCategory.TASK, description: "通过Jenkins执行构建任务", // 渲染配置(配置驱动) renderConfig: { shape: 'rounded-rect', size: {width: 140, height: 48}, icon: { type: 'emoji', content: '🔨', size: 32 }, theme: { primary: '#f59e0b', secondary: '#d97706', selectedBorder: '#3b82f6', hoverBorder: '#f59e0b', gradient: ['#ffffff', '#fef3c7'] }, handles: { input: true, output: true }, features: { showBadge: true, showHoverMenu: true } }, // 基本配置Schema configSchema: { type: "object", title: "基本配置", description: "节点的基本信息和Jenkins构建配置参数", properties: { nodeName: { type: "string", title: "节点名称", description: "节点在流程图中显示的名称", default: "Jenkins构建" }, nodeCode: { type: "string", title: "节点编码", description: "节点的唯一标识符", default: "JENKINS_BUILD" }, description: { type: "string", title: "节点描述", description: "节点的详细说明", default: "通过Jenkins执行构建任务" }, jenkinsUrl: { type: "string", title: "Jenkins服务器地址", description: "Jenkins服务器的完整URL地址", default: "http://jenkins.example.com:8080", format: "uri" } }, required: ["nodeName", "nodeCode", "jenkinsUrl"] }, // ✅ 输出能力定义(只读展示,传递给后端) outputs: [ { name: "buildNumber", title: "构建编号", type: "number", description: "Jenkins构建的唯一编号", example: 123, required: true }, { name: "buildStatus", title: "构建状态", type: "string", enum: ["SUCCESS", "FAILURE", "UNSTABLE", "ABORTED"], description: "构建执行的结果状态", example: "SUCCESS", required: true }, { name: "buildUrl", title: "构建URL", type: "string", description: "Jenkins构建页面的访问地址", example: "http://jenkins.example.com/job/app/123/", required: true }, { name: "artifactUrl", title: "构建产物地址", type: "string", description: "构建生成的jar/war包下载地址", example: "http://jenkins.example.com/job/app/123/artifact/target/app-1.0.0.jar", required: false }, { name: "gitCommitId", title: "Git提交ID", type: "string", description: "本次构建使用的Git提交哈希值", example: "a3f5e8d2c4b1a5e9f2d3e7b8c9d1a2f3e4b5c6d7", required: true }, { name: "buildDuration", title: "构建时长", type: "number", description: "构建执行的时长(秒)", example: 120, required: true } ] }; // ✅ 不再需要单独的渲染组件,使用 BaseNode 即可