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 933a68c1..4876b852 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,5 +1,6 @@ package com.qqchen.deploy.backend.deploy.dto.variables; +import com.qqchen.deploy.backend.workflow.annotation.CodeEditorConfig; import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty; import lombok.Data; @@ -26,6 +27,17 @@ public class JenkinsJavaBuildVariables extends JenkinsBaseBuildVariables { required = true, format = "monaco-editor", // 使用 Monaco Editor defaultValue = "#!/bin/bash\n\necho \"Hello World\"", + codeEditor = @CodeEditorConfig( + language = "shell", + theme = "vs-dark", + minimap = false, + lineNumbers = true, + wordWrap = true, + fontSize = 14, + tabSize = 2, + autoComplete = true, + folding = true + ), order = 3 ) private String script; diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsNodeJsBuildVariables.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsNodeJsBuildVariables.java index 3ff1e066..64a6bdbb 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsNodeJsBuildVariables.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/dto/variables/JenkinsNodeJsBuildVariables.java @@ -8,4 +8,6 @@ import lombok.Data; @Data public class JenkinsNodeJsBuildVariables extends JenkinsBaseBuildVariables { + + } \ No newline at end of file diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/annotation/CodeEditorConfig.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/annotation/CodeEditorConfig.java new file mode 100644 index 00000000..08c1477a --- /dev/null +++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/annotation/CodeEditorConfig.java @@ -0,0 +1,78 @@ +package com.qqchen.deploy.backend.workflow.annotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 代码编辑器配置注解,用于配置Monaco Editor等代码编辑器的行为 + * + *
使用示例: + *
+ * {@code
+ * @SchemaProperty(
+ * title = "脚本代码",
+ * description = "脚本代码",
+ * format = "monaco-editor",
+ * codeEditor = @CodeEditorConfig(
+ * language = "shell",
+ * theme = "vs-dark",
+ * minimap = false,
+ * lineNumbers = true,
+ * wordWrap = true
+ * )
+ * )
+ * private String script;
+ * }
+ *
+ */
+@Target({})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface CodeEditorConfig {
+ /**
+ * 编辑器语言
+ * 支持的语言:java, javascript, typescript, python, shell等
+ */
+ String language() default "";
+
+ /**
+ * 编辑器主题
+ * 支持的主题:vs, vs-dark, hc-black
+ */
+ String theme() default "vs";
+
+ /**
+ * 是否显示代码小地图
+ */
+ boolean minimap() default true;
+
+ /**
+ * 是否显示行号
+ */
+ boolean lineNumbers() default true;
+
+ /**
+ * 是否自动换行
+ */
+ boolean wordWrap() default false;
+
+ /**
+ * 编辑器字体大小
+ */
+ int fontSize() default 14;
+
+ /**
+ * Tab键缩进空格数
+ */
+ int tabSize() default 4;
+
+ /**
+ * 是否启用自动完成
+ */
+ boolean autoComplete() default true;
+
+ /**
+ * 是否显示代码折叠
+ */
+ boolean folding() default true;
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/qqchen/deploy/backend/workflow/annotation/SchemaProperty.java b/backend/src/main/java/com/qqchen/deploy/backend/workflow/annotation/SchemaProperty.java
index f61ce7ec..c12d2309 100644
--- a/backend/src/main/java/com/qqchen/deploy/backend/workflow/annotation/SchemaProperty.java
+++ b/backend/src/main/java/com/qqchen/deploy/backend/workflow/annotation/SchemaProperty.java
@@ -98,4 +98,9 @@ public @interface SchemaProperty {
* 字段排序,值越小越靠前
*/
int order() default Integer.MAX_VALUE;
+
+ /**
+ * 代码编辑器配置,用于配置Monaco Editor等代码编辑器的行为
+ */
+ CodeEditorConfig codeEditor() default @CodeEditorConfig;
}
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 9b7124b7..0b98ef69 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
@@ -1,5 +1,6 @@
package com.qqchen.deploy.backend.workflow.dto.definition.node.panelVariables;
+import com.qqchen.deploy.backend.workflow.annotation.CodeEditorConfig;
import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -33,6 +34,17 @@ public class ScriptNodePanelVariables extends BaseNodePanelVariables {
description = "脚本代码",
required = true,
format = "monaco-editor",
+ codeEditor = @CodeEditorConfig(
+ language = "shell",
+ theme = "vs-dark",
+ minimap = false,
+ lineNumbers = true,
+ wordWrap = true,
+ fontSize = 14,
+ tabSize = 2,
+ autoComplete = true,
+ folding = true
+ ),
order = 20
)
private String script;
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 5ec3e26e..c8b1d970 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
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.qqchen.deploy.backend.workflow.annotation.SchemaProperty;
import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSource;
import com.qqchen.deploy.backend.workflow.annotation.SchemaPropertyDataSourceParam;
+import com.qqchen.deploy.backend.workflow.annotation.CodeEditorConfig;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -62,6 +63,23 @@ public class GenerateSchemaUtils {
}
if (!annotation.format().isEmpty()) {
property.put("format", annotation.format());
+
+ // 处理代码编辑器配置
+ if (annotation.format().endsWith("-editor")) {
+ CodeEditorConfig editorConfig = annotation.codeEditor();
+ if (editorConfig != null && !editorConfig.language().isEmpty()) {
+ ObjectNode configNode = property.putObject("editorConfig");
+ configNode.put("language", editorConfig.language());
+ configNode.put("theme", editorConfig.theme());
+ configNode.put("minimap", editorConfig.minimap());
+ configNode.put("lineNumbers", editorConfig.lineNumbers());
+ configNode.put("wordWrap", editorConfig.wordWrap());
+ configNode.put("fontSize", editorConfig.fontSize());
+ configNode.put("tabSize", editorConfig.tabSize());
+ configNode.put("autoComplete", editorConfig.autoComplete());
+ configNode.put("folding", editorConfig.folding());
+ }
+ }
}
if (annotation.required()) {
required.add(field.getName());