From d76517beb204ca58dd5d817e864bd698a351ffb9 Mon Sep 17 00:00:00 2001 From: asp_ly Date: Thu, 26 Dec 2024 20:31:50 +0800 Subject: [PATCH] 1 --- .../variables/JenkinsJavaBuildVariables.java | 52 +++++++++++++++++++ .../ScriptNodePanelVariables.java | 3 +- .../workflow/util/GenerateSchemaUtils.java | 23 +++++++- 3 files changed, 76 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsJavaBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsJavaBuildVariables.java index a9bf8899..bfb0f879 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsJavaBuildVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsJavaBuildVariables.java @@ -1,7 +1,10 @@ package com.qqchen.deploy.backend.deploy.dto.variables; +import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; import lombok.Data; +import java.util.List; + /** * Jenkins构建变量 */ @@ -9,4 +12,53 @@ import lombok.Data; public class JenkinsJavaBuildVariables extends JenkinsBaseBuildVariables { + @SchemaProperty( + title = "脚本代码", + description = "脚本代码", + required = true + ) + private String script; + + /** + * 脚本语言 + */ + @SchemaProperty( + title = "脚本语言", + description = "脚本语言类型", + required = true, + enumValues = {"shell", "python", "javascript", "groovy"}, + enumNames = {"Shell脚本 (已支持)", "Python脚本 (开发中)", "JavaScript脚本 (开发中)", "Groovy脚本 (开发中)"}, + defaultValue = "shell" + ) + private String language; + + /** + * 解释器路径 + */ + @SchemaProperty( + title = "解释器路径", + description = "脚本解释器的路径,例如:/bin/bash, /usr/bin/python3", + required = true + ) + private String interpreter; + + /** + * 成功退出码 + */ + @SchemaProperty( + title = "成功标识", + description = "脚本执行成功时的标识", + required = true + ) + private Integer successExitCode; + + /** + * 支持的脚本语言列表 + */ + @SchemaProperty( + title = "支持的脚本语言", + enumValues = {"shell", "python", "javascript", "groovy"}, + enumNames = {"Shell脚本 (已支持)", "Python脚本 (开发中)", "JavaScript脚本 (开发中)", "Groovy脚本 (开发中)"} + ) + private List supportedLanguages; } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/panelVariables/ScriptNodePanelVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/panelVariables/ScriptNodePanelVariables.java index 821f3336..da97d1ea 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/panelVariables/ScriptNodePanelVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/dto/definition/node/panelVariables/ScriptNodePanelVariables.java @@ -59,7 +59,8 @@ public class ScriptNodePanelVariables extends BaseNodePanelVariables { */ @SchemaProperty( title = "支持的脚本语言", - enumValues = {"shell", "python", "javascript", "groovy"} + enumValues = {"shell", "python", "javascript", "groovy"}, + enumNames = {"Shell脚本 (已支持)", "Python脚本 (开发中)", "JavaScript脚本 (开发中)", "Groovy脚本 (开发中)"} ) private List supportedLanguages; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/util/GenerateSchemaUtils.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/util/GenerateSchemaUtils.java index dc5c815b..2d9b963e 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/util/GenerateSchemaUtils.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/util/GenerateSchemaUtils.java @@ -79,8 +79,29 @@ public class GenerateSchemaUtils { if (List.class.isAssignableFrom(field.getType())) { ObjectNode items = property.putObject("items"); items.put("type", "string"); + + // 如果有枚举值定义,则在items中设置枚举相关属性 + if (annotation.enumValues().length > 0) { + // 在items中设置enum + ArrayNode enumNode = items.putArray("enum"); + for (String value : annotation.enumValues()) { + enumNode.add(value); + } + + // 在items中设置enumNames + if (annotation.enumNames().length > 0) { + ArrayNode enumNamesNode = items.putArray("enumNames"); + for (String name : annotation.enumNames()) { + enumNamesNode.add(name); + } + } + } } + // 确保不在顶层定义enum和enumNames + property.remove("enum"); + property.remove("enumNames"); + // 处理Map类型 if (Map.class.isAssignableFrom(field.getType())) { ObjectNode additionalProperties = property.putObject("additionalProperties"); @@ -129,7 +150,7 @@ public class GenerateSchemaUtils { dataSourceNode.put("valueField", dataSource.valueField()); dataSourceNode.put("labelField", dataSource.labelField()); - // 处理依赖字段 + // ���理依赖字段 String[] dependsOn = dataSource.dependsOn(); if (dependsOn != null && dependsOn.length > 0) { ArrayNode dependsOnNode = dataSourceNode.putArray("dependsOn");