Forráskód Böngészése

更新 CompilerController 接口和数据模型

reghao 1 napja
szülő
commit
16bcb88bfe

+ 73 - 51
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/controller/CompilerController.java

@@ -1,7 +1,9 @@
 package cn.reghao.devops.mgr.ops.build.controller;
 
 import cn.reghao.devops.mgr.ops.build.db.repository.CompilerConfigRepository;
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerArgDto;
 import cn.reghao.devops.mgr.ops.build.model.dto.CompilerBindDto;
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerEnvDto;
 import cn.reghao.devops.mgr.ops.build.model.po.CompilerConfig;
 import cn.reghao.devops.mgr.ops.build.service.CompilerConfigService;
 import cn.reghao.devops.mgr.ops.build.model.constant.CompileType;
@@ -40,6 +42,32 @@ public class CompilerController {
         this.compilerConfigService = compilerConfigService;
     }
 
+    @Operation(summary = "编译类型列表", description = "N")
+    @GetMapping(value = "/types", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String addCompilerPage() {
+        List<SelectOption> compileTypes = Arrays.stream(CompileType.values())
+                .filter(compileType -> !compileType.name().equals(CompileType.none.name()))
+                .map(compileType -> new SelectOption(compileType.getName(), compileType.getName()))
+                .collect(Collectors.toList());
+        return WebResult.success(compileTypes);
+    }
+
+    @Operation(summary = "添加编译配置", description = "N")
+    @PostMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    public String addCompileConfig(@Validated CompilerConfig compilerConfig) {
+        Result result = compilerConfigService.addOrUpdate(compilerConfig);
+        return WebResult.result(result);
+    }
+
+    @Operation(summary = "删除应用编译配置", description = "N")
+    @PostMapping(value = "/delete", produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    public String deleteCompileConfig(Integer id) {
+        Result result = compilerConfigService.delete(id);
+        return WebResult.result(result);
+    }
+
     @Operation(summary = "编译配置列表页面", description = "N")
     @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
     public String compilerConfigPage(@RequestParam("pn") int pageNumber) {
@@ -57,81 +85,75 @@ public class CompilerController {
         return PageList.pageList(pageNumber, pageSize, (int) total, list);
     }
 
-    @Operation(summary = "编译类型列表", description = "N")
-    @GetMapping(value = "/types", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String addCompilerPage() {
-        List<SelectOption> compileTypes = Arrays.stream(CompileType.values())
-                .filter(compileType -> !compileType.name().equals(CompileType.none.name()))
-                .map(compileType -> new SelectOption(compileType.getName(), compileType.getName()))
-                .collect(Collectors.toList());
-        return WebResult.success(compileTypes);
-    }
-
-    @Operation(summary = "添加 docker 编译器映射目录", description = "N")
+    @Operation(summary = "添加 docker 容器映射目录", description = "N")
     @PostMapping(value = "/bind/add", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String addCompilerBind(@RequestBody @Validated CompilerBindDto compilerBindDto) {
-        compilerConfigService.addDockerBind(compilerBindDto);
-        return WebResult.success();
+    public String addContainerBind(@RequestBody @Validated CompilerBindDto compilerBindDto) {
+        Result result = compilerConfigService.addContainerBind(compilerBindDto);
+        return WebResult.result(result);
     }
 
-    @Operation(summary = "添加 docker 编译器映射目录", description = "N")
+    @Operation(summary = "删除 docker 容器映射目录", description = "N")
     @PostMapping(value = "/bind/delete", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String deleteCompilerBind(@RequestBody @Validated CompilerBindDto compilerBindDto) {
-        compilerConfigService.deleteDockerBind(compilerBindDto);
-        return WebResult.success();
+    public String deleteContainerBind(@RequestBody @Validated CompilerBindDto compilerBindDto) {
+        Result result = compilerConfigService.deleteContainerBind(compilerBindDto);
+        return WebResult.result(result);
     }
 
-    @Operation(summary = "编译器的容器映射目录页面", description = "N")
+    @Operation(summary = "docker 容器目录映射列表", description = "N")
     @GetMapping(value = "/bind/list", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String compilerBindPage(@RequestParam("id") int id) {
+    public String containerBindList(@RequestParam("id") int id) {
         CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
         if (compilerConfig != null && compilerConfig.getType().equals(CompileType.dockerRun.getName())) {
             return WebResult.success(compilerConfig.getCompilerBinds());
         }
-        return WebResult.failWithMsg("compiler not dockerRun type");
+        return WebResult.failWithMsg("只有 dockerRun 类型支持添加容器目录映射");
     }
 
-    @Operation(summary = "编译器的容器环境变量页面", description = "N")
-    @GetMapping(value = "/env/list", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String compilerEnvPage(@RequestParam("id") int id) {
-        CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
-        if (compilerConfig != null && compilerConfig.getType().equals(CompileType.dockerRun.getName())) {
-            return WebResult.success(compilerConfig.getCompilerBinds());
-        }
-        return WebResult.failWithMsg("compiler not dockerRun type");
+    @Operation(summary = "添加 docker 容器环境变量", description = "N")
+    @PostMapping(value = "/env/add", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String addContainerEnv(@RequestBody @Validated CompilerEnvDto compilerEnvDto) {
+        Result result = compilerConfigService.addContainerEnv(compilerEnvDto);
+        return WebResult.result(result);
+    }
+
+    @Operation(summary = "删除 docker 容器环境变量", description = "N")
+    @PostMapping(value = "/env/delete", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String deleteContainerEnv(@RequestBody @Validated CompilerEnvDto compilerEnvDto) {
+        Result result = compilerConfigService.deleteContainerEnv(compilerEnvDto);
+        return WebResult.result(result);
     }
 
-    @Operation(summary = "编译器的 dockerfile 变量页面", description = "N")
-    @GetMapping(value = "/dockerfile/list", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String compilerDockerfilePage(@RequestParam("id") int id) {
+    @Operation(summary = "docker 容器环境变量列表", description = "N")
+    @GetMapping(value = "/env/list", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String containerEnvList(@RequestParam("id") int id) {
         CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
-        if (compilerConfig != null && compilerConfig.getType().equals(CompileType.dockerBuild.getName())) {
-            return WebResult.success(compilerConfig.getCompilerArgs());
+        if (compilerConfig != null && compilerConfig.getType().equals(CompileType.dockerRun.getName())) {
+            return WebResult.success(compilerConfig.getCompilerEnvs());
         }
-        return WebResult.failWithMsg("compiler not dockerBuild type");
+        return WebResult.failWithMsg("只有 dockerRun 类型支持添加容器环境变量");
     }
 
-    @Operation(summary = "添加编译配置", description = "N")
-    @PostMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
-    public String addCompileConfig(@Validated CompilerConfig compilerConfig) {
-        Result result = compilerConfigService.addOrUpdate(compilerConfig);
+    @Operation(summary = "添加 docker 容器环境变量", description = "N")
+    @PostMapping(value = "/arg/add", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String addDockerfileArg(@RequestBody @Validated CompilerArgDto compilerArgDto) {
+        Result result = compilerConfigService.addDockerfileArg(compilerArgDto);
         return WebResult.result(result);
     }
 
-    @Operation(summary = "删除应用编译配置", description = "N")
-    @PostMapping(value = "/delete", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
-    public String deleteCompileConfig(Integer id) {
-        Result result = compilerConfigService.delete(id);
+    @Operation(summary = "删除 docker 容器环境变量", description = "N")
+    @PostMapping(value = "/arg/delete", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String deleteDockerfileArg(@RequestBody @Validated CompilerArgDto compilerArgDto) {
+        Result result = compilerConfigService.deleteDockerfileArg(compilerArgDto);
         return WebResult.result(result);
     }
 
-    @Operation(summary = "获取编译器版本信息", description = "N")
-    @GetMapping(value = "/version", produces = MediaType.APPLICATION_JSON_VALUE)
-    @ResponseBody
-    public String getCompileVersion(@RequestParam("id") Integer id) {
-        String result = compilerConfigService.getCompilerVersion(id);
-        return WebResult.success(result);
+    @Operation(summary = "dockerfile 参数变量列表", description = "N")
+    @GetMapping(value = "/arg/list", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String dockerfileArgList(@RequestParam("id") int id) {
+        CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
+        if (compilerConfig != null && compilerConfig.getType().equals(CompileType.dockerBuild.getName())) {
+            return WebResult.success(compilerConfig.getCompilerArgs());
+        }
+        return WebResult.failWithMsg("只有 dockerBuild 类型支持添加 dockerfile 参数变量");
     }
 }

+ 28 - 0
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/model/dto/CompilerArgDto.java

@@ -0,0 +1,28 @@
+package cn.reghao.devops.mgr.ops.build.model.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author reghao
+ * @date 2026-03-20 18:03:24
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+@Setter
+@Getter
+public class CompilerArgDto {
+    @NotNull
+    private Integer id;
+    @NotBlank
+    @Size(max = 255, message = "参数名长度不能超过 255 个字符")
+    private String argName;
+    @NotBlank
+    @Size(max = 255, message = "参数值长度不能超过 255 个字符")
+    private String argValue;
+}

+ 25 - 0
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/model/dto/CompilerEnvDto.java

@@ -0,0 +1,25 @@
+package cn.reghao.devops.mgr.ops.build.model.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author reghao
+ * @date 2026-03-06 15:19:51
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+@Setter
+@Getter
+public class CompilerEnvDto {
+    @NotNull
+    private Integer id;
+    @NotBlank
+    @Size(max = 255, message = "环境变量长度不能超过 255 个字符")
+    private String env;
+}

+ 8 - 6
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/model/po/CompilerArg.java

@@ -1,10 +1,8 @@
 package cn.reghao.devops.mgr.ops.build.model.po;
 
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerArgDto;
 import jakarta.persistence.Embeddable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
+import lombok.*;
 
 /**
  * @author reghao
@@ -12,10 +10,14 @@ import lombok.Setter;
  */
 @AllArgsConstructor
 @NoArgsConstructor
-@Setter
-@Getter
+@Data
 @Embeddable
 public class CompilerArg {
     private String argName;
     private String argValue;
+
+    public CompilerArg(CompilerArgDto compilerArgDto) {
+        this.argName = compilerArgDto.getArgName();
+        this.argValue = compilerArgDto.getArgValue();
+    }
 }

+ 2 - 6
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/model/po/CompilerBind.java

@@ -1,10 +1,7 @@
 package cn.reghao.devops.mgr.ops.build.model.po;
 
 import cn.reghao.devops.mgr.ops.build.model.dto.CompilerBindDto;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
+import lombok.*;
 
 import jakarta.persistence.Embeddable;
 
@@ -14,8 +11,7 @@ import jakarta.persistence.Embeddable;
  */
 @AllArgsConstructor
 @NoArgsConstructor
-@Setter
-@Getter
+@Data
 @Embeddable
 public class CompilerBind {
     private String hostPath;

+ 4 - 5
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/model/po/CompilerConfig.java

@@ -37,15 +37,14 @@ public class CompilerConfig extends BaseEntity {
     @Length(max = 255, message = "编译名字的最大长度不能超过 255 个字符")
     @Column(nullable = false, unique = true)
     private String name;
-    private String homePath;
     @NotBlank(groups = { ShellCompiler.class}, message = "编译命令不能为空")
     @Length(max = 1000, message = "编译命令长度不能超过 1000 个字符")
+    @Column(columnDefinition="text")
     private String compileCmd;
     @NotBlank(groups = { ShellCompiler.class}, message = "编译器版本命令不能为空")
-    @Length(max = 1000, message = "编译器版本命令长度不能超过 1000 个字符")
-    private String versionCmd;
     @NotBlank(groups = { DockerRunCompiler.class}, message = "编译器版本命令不能为空")
     private String compilerImage;
+
     @ElementCollection(targetClass = CompilerBind.class)
     @LazyCollection(LazyCollectionOption.FALSE)
     @CollectionTable(name = "devops_compiler_config_binds")
@@ -54,7 +53,7 @@ public class CompilerConfig extends BaseEntity {
     @LazyCollection(LazyCollectionOption.FALSE)
     @CollectionTable(name = "devops_compiler_config_envs")
     private List<CompilerEnv> compilerEnvs;
-    @ElementCollection(targetClass = CompilerEnv.class)
+    @ElementCollection(targetClass = CompilerArg.class)
     @LazyCollection(LazyCollectionOption.FALSE)
     @CollectionTable(name = "devops_compiler_config_args")
     private List<CompilerArg> compilerArgs;
@@ -72,6 +71,6 @@ public class CompilerConfig extends BaseEntity {
     }
 
     public CompilerDto getCompilerDto() {
-        return new CompilerDto(this.type, this.name, this.homePath, this.compileCmd, this.compilerImage, this.compilerBinds);
+        return new CompilerDto(this.type, this.name, "", this.compileCmd, this.compilerImage, this.compilerBinds);
     }
 }

+ 7 - 6
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/model/po/CompilerEnv.java

@@ -1,10 +1,8 @@
 package cn.reghao.devops.mgr.ops.build.model.po;
 
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerEnvDto;
 import jakarta.persistence.Embeddable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
+import lombok.*;
 
 /**
  * @author reghao
@@ -12,9 +10,12 @@ import lombok.Setter;
  */
 @AllArgsConstructor
 @NoArgsConstructor
-@Setter
-@Getter
+@Data
 @Embeddable
 public class CompilerEnv {
     private String env;
+
+    public CompilerEnv(CompilerEnvDto  compilerEnvDto) {
+        this.env = compilerEnvDto.getEnv();
+    }
 }

+ 8 - 3
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/service/CompilerConfigService.java

@@ -1,6 +1,8 @@
 package cn.reghao.devops.mgr.ops.build.service;
 
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerArgDto;
 import cn.reghao.devops.mgr.ops.build.model.dto.CompilerBindDto;
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerEnvDto;
 import cn.reghao.devops.mgr.ops.build.model.po.CompilerConfig;
 import cn.reghao.jutil.jdk.web.result.Result;
 
@@ -11,7 +13,10 @@ import cn.reghao.jutil.jdk.web.result.Result;
 public interface CompilerConfigService {
     Result addOrUpdate(CompilerConfig compilerConfig);
     Result delete(int id);
-    String getCompilerVersion(int id);
-    void addDockerBind(CompilerBindDto compilerBindDto);
-    void deleteDockerBind(CompilerBindDto compilerBindDto);
+    Result addContainerBind(CompilerBindDto compilerBindDto);
+    Result deleteContainerBind(CompilerBindDto compilerBindDto);
+    Result addContainerEnv(CompilerEnvDto compilerEnvDto);
+    Result deleteContainerEnv(CompilerEnvDto compilerBindDto);
+    Result addDockerfileArg(CompilerArgDto compilerArgDto);
+    Result deleteDockerfileArg(CompilerArgDto compilerArgDto);
 }

+ 84 - 31
mgr/src/main/java/cn/reghao/devops/mgr/ops/build/service/impl/CompilerConfigServiceImpl.java

@@ -3,9 +3,13 @@ package cn.reghao.devops.mgr.ops.build.service.impl;
 import cn.reghao.devops.mgr.ops.app.db.query.AppBuildQuery;
 import cn.reghao.devops.mgr.ops.app.model.po.AppConfig;
 import cn.reghao.devops.mgr.ops.build.db.repository.CompilerConfigRepository;
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerArgDto;
 import cn.reghao.devops.mgr.ops.build.model.dto.CompilerBindDto;
+import cn.reghao.devops.mgr.ops.build.model.dto.CompilerEnvDto;
+import cn.reghao.devops.mgr.ops.build.model.po.CompilerArg;
 import cn.reghao.devops.mgr.ops.build.model.po.CompilerBind;
 import cn.reghao.devops.mgr.ops.build.model.po.CompilerConfig;
+import cn.reghao.devops.mgr.ops.build.model.po.CompilerEnv;
 import cn.reghao.devops.mgr.ops.build.service.CompilerConfigService;
 import cn.reghao.devops.mgr.ops.build.model.constant.CompileType;
 import cn.reghao.devops.mgr.util.StringUtil;
@@ -28,13 +32,10 @@ import java.util.stream.Collectors;
 public class CompilerConfigServiceImpl implements CompilerConfigService {
     private final CompilerConfigRepository compilerConfigRepository;
     private final AppBuildQuery appBuildQuery;
-    private final ShellExecutor shellExecutor;
 
-    public CompilerConfigServiceImpl(CompilerConfigRepository compilerConfigRepository, AppBuildQuery appBuildQuery,
-                                     ShellExecutor shellExecutor) {
+    public CompilerConfigServiceImpl(CompilerConfigRepository compilerConfigRepository, AppBuildQuery appBuildQuery) {
         this.compilerConfigRepository = compilerConfigRepository;
         this.appBuildQuery = appBuildQuery;
-        this.shellExecutor = shellExecutor;
     }
 
     @Override
@@ -53,9 +54,7 @@ public class CompilerConfigServiceImpl implements CompilerConfigService {
         }
 
         String compileCmd = compilerConfig.getCompileCmd();
-        String versionCmd = compilerConfig.getVersionCmd();
         entity.setCompileCmd(compileCmd);
-        entity.setVersionCmd(versionCmd);
         Result result = checkBeforeUpdate(compilerConfig);
         if (result.getCode() == ResultStatus.SUCCESS.getCode()) {
             compilerConfigRepository.save(entity);
@@ -90,56 +89,110 @@ public class CompilerConfigServiceImpl implements CompilerConfigService {
     }
 
     @Override
-    public String getCompilerVersion(int id) {
+    public Result addContainerBind(CompilerBindDto compilerBindDto) {
+        int id = compilerBindDto.getId();
         CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
         if (compilerConfig == null) {
-            return "not exist";
+            return Result.fail("CompilerConfig not found");
         }
 
-        if (!compilerConfig.getType().equals(CompileType.shell.getName())) {
-            return "not shell type";
+        CompilerBind compilerBind = new CompilerBind(compilerBindDto);
+        if (!compilerConfig.getCompilerBinds().contains(compilerBind)) {
+            compilerConfig.getCompilerBinds().add(compilerBind);
+            compilerConfigRepository.save(compilerConfig);
+            return Result.result(ResultStatus.SUCCESS);
         }
 
-        String versionCmd = compilerConfig.getVersionCmd();
-        ShellResult shellResult = shellExecutor.exec(versionCmd.split("\\s+"));
-        String html = StringUtil.txtToHtml(shellResult.getResult());
-        return html;
+        return Result.fail("CompilerBind exists");
     }
 
     @Override
-    public void addDockerBind(CompilerBindDto compilerBindDto) {
+    public Result deleteContainerBind(CompilerBindDto compilerBindDto) {
         int id = compilerBindDto.getId();
         CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
         if (compilerConfig == null) {
-            return;
+            return Result.fail("CompilerConfig not found");
         }
 
         String hostPath = compilerBindDto.getHostPath();
-        Map<String, CompilerBind> map = compilerConfig.getCompilerBinds().stream()
-                .collect(Collectors.toMap(CompilerBind::getHostPath, bind -> bind));
-        CompilerBind compilerBind = map.get(hostPath);
-        if (compilerBind == null) {
-            compilerConfig.getCompilerBinds().add(new CompilerBind(compilerBindDto));
+        boolean ret = compilerConfig.getCompilerBinds().removeIf(item -> hostPath.equals(item.getHostPath()));
+        if (ret) {
             compilerConfigRepository.save(compilerConfig);
+            return Result.result(ResultStatus.SUCCESS);
         }
+
+        return Result.fail("CompilerBind not found");
     }
 
     @Override
-    public void deleteDockerBind(CompilerBindDto compilerBindDto) {
-        int id = compilerBindDto.getId();
+    public Result addContainerEnv(CompilerEnvDto compilerEnvDto) {
+        int id = compilerEnvDto.getId();
         CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
         if (compilerConfig == null) {
-            return;
+            return Result.fail("CompilerConfig not found");
         }
 
-        String hostPath = compilerBindDto.getHostPath();
-        Map<String, CompilerBind> map = compilerConfig.getCompilerBinds().stream()
-                .collect(Collectors.toMap(CompilerBind::getHostPath, bind -> bind));
-        CompilerBind compilerBind = map.get(hostPath);
-        if (compilerBind != null) {
-            map.remove(hostPath);
-            compilerConfig.setCompilerBinds(new ArrayList<>(map.values()));
+        CompilerEnv compilerEnv = new CompilerEnv(compilerEnvDto);
+        if (!compilerConfig.getCompilerEnvs().contains(compilerEnv)) {
+            compilerConfig.getCompilerEnvs().add(compilerEnv);
+            compilerConfigRepository.save(compilerConfig);
+            return Result.result(ResultStatus.SUCCESS);
+        }
+
+        return Result.fail("CompilerEnv exists");
+    }
+
+    @Override
+    public Result deleteContainerEnv(CompilerEnvDto compilerEnvDto) {
+        int id = compilerEnvDto.getId();
+        CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
+        if (compilerConfig == null) {
+            return Result.fail("CompilerConfig not found");
+        }
+
+        String env = compilerEnvDto.getEnv();
+        boolean ret = compilerConfig.getCompilerEnvs().removeIf(item -> env.equals(item.getEnv()));
+        if (ret) {
+            compilerConfigRepository.save(compilerConfig);
+            return Result.result(ResultStatus.SUCCESS);
+        }
+
+        return Result.fail("CompilerEnv not found");
+    }
+
+    @Override
+    public Result addDockerfileArg(CompilerArgDto compilerArgDto) {
+        int id = compilerArgDto.getId();
+        CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
+        if (compilerConfig == null) {
+            return Result.fail("CompilerConfig not found");
+        }
+
+        CompilerArg compilerArg = new CompilerArg(compilerArgDto);
+        if (!compilerConfig.getCompilerArgs().contains(compilerArg)) {
+            compilerConfig.getCompilerArgs().add(compilerArg);
             compilerConfigRepository.save(compilerConfig);
+            return Result.result(ResultStatus.SUCCESS);
         }
+
+        return Result.fail("CompilerArg exists");
+    }
+
+    @Override
+    public Result deleteDockerfileArg(CompilerArgDto compilerArgDto) {
+        int id = compilerArgDto.getId();
+        CompilerConfig compilerConfig = compilerConfigRepository.findById(id).orElse(null);
+        if (compilerConfig == null) {
+            return Result.fail("CompilerConfig not found");
+        }
+
+        String argName = compilerArgDto.getArgName();
+        boolean ret = compilerConfig.getCompilerArgs().removeIf(item -> argName.equals(item.getArgName()));
+        if (ret) {
+            compilerConfigRepository.save(compilerConfig);
+            return Result.result(ResultStatus.SUCCESS);
+        }
+
+        return Result.fail("CompilerArg not found");
     }
 }

+ 1 - 1
mgr/src/main/java/cn/reghao/devops/mgr/ops/builder/model/vo/BuildConfigSnapshot.java

@@ -48,7 +48,7 @@ public class BuildConfigSnapshot {
         this.compileType = appConfig.getCompilerConfig().getType();
         this.compileName = appConfig.getCompilerConfig().getName();
         this.compileScript = appConfig.getCompilerConfig().getCompileCmd();
-        this.homePath = appConfig.getCompilerConfig().getHomePath();
+        this.homePath = "";
 
         this.packType = appConfig.getPackerConfig().getType();
         this.packName = appConfig.getPackerConfig().getName();

+ 2 - 37
mgr/src/main/java/cn/reghao/devops/mgr/ops/util/BuilderInit.java

@@ -1,18 +1,11 @@
 package cn.reghao.devops.mgr.ops.util;
 
-import cn.reghao.devops.mgr.admin.service.UserMessageService;
 import cn.reghao.devops.mgr.config.AppProperties;
-import cn.reghao.devops.mgr.ops.build.db.repository.CompilerConfigRepository;
-import cn.reghao.devops.mgr.ops.build.model.po.CompilerConfig;
 import cn.reghao.devops.mgr.ops.build.service.BuildDirService;
-import cn.reghao.devops.mgr.ops.build.model.constant.CompileType;
-import cn.reghao.jutil.jdk.shell.ShellExecutor;
-import cn.reghao.jutil.jdk.shell.ShellResult;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
-import java.util.List;
 
 /**
  * @author reghao
@@ -22,23 +15,15 @@ import java.util.List;
 @Service
 public class BuilderInit {
     private final AppProperties appProperties;
-    private final ShellExecutor shellExecutor;
     private final BuildDirService buildDirService;
-    private final CompilerConfigRepository compilerConfigRepository;
-    private final UserMessageService userMessageService;
 
-    public BuilderInit(AppProperties appProperties, ShellExecutor shellExecutor, BuildDirService buildDirService,
-                       CompilerConfigRepository compilerConfigRepository,UserMessageService userMessageService) {
+    public BuilderInit(AppProperties appProperties, BuildDirService buildDirService) {
         this.appProperties = appProperties;
-        this.shellExecutor = shellExecutor;
         this.buildDirService = buildDirService;
-        this.compilerConfigRepository = compilerConfigRepository;
-        this.userMessageService = userMessageService;
     }
 
     public void init() {
         initBuildDir();
-        checkCompilerConfig();
     }
 
     private void initBuildDir() {
@@ -52,29 +37,9 @@ public class BuilderInit {
             try {
                 buildDirService.init(baseDir);
             } catch (Exception e) {
-                log.error("初始化本地构建目录失败,devops-mgr 结束运行");
-                e.printStackTrace();
+                log.error("初始化本地构建目录失败,devops-mgr 结束运行: {}", e.getMessage());
                 System.exit(1);
             }
         }
     }
-
-    private void checkCompilerConfig() {
-        List<CompilerConfig> list = compilerConfigRepository.findAll();
-        for (CompilerConfig compilerConfig : list) {
-            if (compilerConfig.getType().equals(CompileType.none.getName())) {
-                continue;
-            }
-
-            if (compilerConfig.getType().equals(CompileType.shell.getName())) {
-                String versionCmd = compilerConfig.getVersionCmd();
-                ShellResult shellResult = shellExecutor.exec(versionCmd.split("\\s+"));
-                if (shellResult.getExitCode() != 0) {
-                    String title = "编译配置异常";
-                    String content = shellResult.getResult();
-                    userMessageService.sendUserMessage(title, content);
-                }
-            }
-        }
-    }
 }