Browse Source

代码重构中...

reghao 5 years ago
parent
commit
75ccdb6409
63 changed files with 491 additions and 426 deletions
  1. 25 2
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/disk/Disk.java
  2. 1 1
      common/src/main/java/cn/reghao/autodop/common/utils/FileOps.java
  3. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/cache/OrchestrationCache.java
  4. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildController.java
  5. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/ManageController.java
  6. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/OrchestrateController.java
  7. 47 47
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/BuildConfigCrudController.java
  8. 40 43
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/ConfigController.java
  9. 32 32
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/GlobalCrudController.java
  10. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/OrchestrateCrudController.java
  11. 8 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/LocalDir.java
  12. 0 54
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/Notification.java
  13. 0 25
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/RepoConfig.java
  14. 58 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/NotifierConfig.java
  15. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/NotifierType.java
  16. 5 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/BuildConfig.java
  17. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/BuildStage.java
  18. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/AuthType.java
  19. 10 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/CompilerConfig.java
  20. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/CompilerType.java
  21. 6 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/PackerConfig.java
  22. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/PackerType.java
  23. 40 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/RepoConfig.java
  24. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/RepoType.java
  25. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/AppOrchestration.java
  26. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/AppType.java
  27. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/EnvType.java
  28. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/ProjOrchestration.java
  29. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/DeployedApp.java
  30. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java
  31. 2 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildResult.java
  32. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/build/CompilerConfigRepository.java
  33. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/build/PackerConfigRepository.java
  34. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/build/RepoConfigRepository.java
  35. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/deploy/DeployedAppRepository.java
  36. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/orchestration/AppOrchestrationRepository.java
  37. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/orchestration/NotificationRepository.java
  38. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/orchestration/ProjOrchestrationRepository.java
  39. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployDispatcher.java
  40. 1 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildService.java
  41. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/LogManager.java
  42. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/StatusManager.java
  43. 8 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppIntegrate.java
  44. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuilderUtil.java
  45. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/compiler/MavenCompiler.java
  46. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/compiler/ShellCompiler.java
  47. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/packer/DockerPack.java
  48. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/packer/ZipPack.java
  49. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/updater/GitImpl.java
  50. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/updater/SvnImpl.java
  51. 57 61
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/ConfigService.java
  52. 11 11
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/OrchestrateService.java
  53. 9 9
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/SharedEntityChecker.java
  54. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/CompilerConfigCrudService.java
  55. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/PackerConfigCrudService.java
  56. 24 20
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/RepoConfigCrudService.java
  57. 15 15
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/global/NotificationCrudService.java
  58. 3 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/AppCrudService.java
  59. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/ProjCrudService.java
  60. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/AppBuildVO.java
  61. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/AppVO.java
  62. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/ProjVO.java
  63. 28 15
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/AfterAppStart.java

+ 25 - 2
common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/disk/Disk.java

@@ -32,7 +32,8 @@ public class Disk {
                     String avail = convert.convert(fileStore.getUsableSpace(), ByteType.Byte);
                     String used = convert.convert(
                             fileStore.getTotalSpace()-fileStore.getUnallocatedSpace(), ByteType.Byte);
-                    String mountedOn = fileStore.toString().split("\\(")[0];
+                    // TODO fileStore.toString() 的值是 "/ (/dev/sda3)"
+                    String mountedOn = fileStore.toString().split(" ")[0];
                     String fsType = fileStore.type();
 
                     DiskInfo diskInfo = new DiskInfo();
@@ -50,8 +51,30 @@ public class Disk {
         return list;
     }
 
+    /**
+     * 根据一个路径确定它所在的分区
+     *
+     * @param
+     * @return
+     * @date 2021-02-06 下午11:25
+     */
+    public DiskInfo diskInfo(String path) {
+        List<DiskInfo> diskInfos = info();
+        for (DiskInfo diskInfo : diskInfos) {
+            String mountedOn = diskInfo.getMountedOn();
+            String[] array = path.split(mountedOn);
+            if (array.length == 2 && array[0].isEmpty()) {
+                return diskInfo;
+            }
+        }
+
+        return null;
+    }
+
     public static void main(String[] args) {
         Disk disk = new Disk();
-        disk.info();
+        String home = System.getProperty("user.home");
+        DiskInfo diskInfo = disk.diskInfo(home);
+        System.out.println();
     }
 }

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/utils/FileOps.java

@@ -218,7 +218,7 @@ public class FileOps {
         return false;
     }
 
-    public static boolean mkdir(File dir) {
+    public static boolean mkdirs(File dir) {
         if (!dir.exists() && dir.mkdirs()) {
             return true;
         }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/cache/OrchestrationCache.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.cache;
 
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.ProjOrchestrationRepository;
 import org.springframework.stereotype.Service;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildController.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.controller;
 
-import cn.reghao.autodop.dmaster.app.entity.orchestration.EnvType;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.EnvType;
 import cn.reghao.autodop.dmaster.app.vo.SuccessfullyBuildVO;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import cn.reghao.autodop.dmaster.app.service.BuildService;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/ManageController.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.controller;
 
 import cn.reghao.autodop.common.deploy.AppStatus;
 import cn.reghao.autodop.common.dockerc.exception.DockerException;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.EnvType;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.EnvType;
 import cn.reghao.autodop.dmaster.app.service.LogManager;
 import cn.reghao.autodop.dmaster.app.service.StatusManager;
 import cn.reghao.autodop.dmaster.app.vo.LogFile;

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/OrchestrateController.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.controller;
 
-import cn.reghao.autodop.dmaster.app.entity.orchestration.EnvType;
-import cn.reghao.autodop.dmaster.app.service.OrchestrateService;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.EnvType;
+import cn.reghao.autodop.dmaster.app.service.crud.OrchestrateService;
 import cn.reghao.autodop.common.result.WebResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;

+ 47 - 47
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/BuildConfigCrudController.java

@@ -3,9 +3,9 @@ package cn.reghao.autodop.dmaster.app.controller.crud;
 import cn.reghao.autodop.common.result.WebResult;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
 import cn.reghao.autodop.dmaster.app.service.crud.build.CompilerConfigCrudService;
 import cn.reghao.autodop.dmaster.app.service.crud.build.PackerConfigCrudService;
 import cn.reghao.autodop.dmaster.app.service.crud.build.RepoConfigCrudService;
@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
  * @date 2019-08-30 18:49:15
  */
 @Slf4j
-@Api(tags = "应用构建配置 CRUD 接口")
+@Api(tags = "构建配置 CRUD 接口")
 @RestController
 @RequestMapping("/api/config/build")
 public class BuildConfigCrudController {
@@ -36,94 +36,94 @@ public class BuildConfigCrudController {
         this.packerConfigCrudService = packerConfigCrudService;
     }
 
-    /* 应用更新配置 */
-    @ApiOperation(value = "添加应用更新配置")
-    @PostMapping(value = "/update", consumes = "application/json")
-    public ResponseEntity<String> addUpdateConfig(@RequestBody String json) throws Exception {
-        RepoConfig appUpdate = (RepoConfig) JsonConverter.jsonToObject(json, RepoConfig.class);
-        repoConfigCrudService.addOrModify(appUpdate);
+    /* 仓库配置 */
+    @ApiOperation(value = "添加仓库配置")
+    @PostMapping(value = "/repo", consumes = "application/json")
+    public ResponseEntity<String> addRepoConfig(@RequestBody String json) throws Exception {
+        RepoConfig repoConfig = (RepoConfig) JsonConverter.jsonToObject(json, RepoConfig.class);
+        repoConfigCrudService.addOrModify(repoConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    @ApiOperation(value = "分页获取应用更新配置")
-    @GetMapping("/update")
-    public ResponseEntity<String> getUpdateConfigByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
+    @ApiOperation(value = "分页获取仓库配置")
+    @GetMapping("/repo")
+    public ResponseEntity<String> getRepoConfigByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
         PageList<RepoConfig> pageList = repoConfigCrudService.getByPage(page, size);
         return ResponseEntity.ok().body(WebResult.success(pageList));
     }
 
-    @ApiOperation(value = "修改应用更新配置")
-    @PutMapping("/update")
-    public ResponseEntity<String> modifyUpdateConfig(@RequestBody String json) throws Exception {
-        RepoConfig appUpdate = (RepoConfig) JsonConverter.jsonToObject(json, RepoConfig.class);
-        repoConfigCrudService.addOrModify(appUpdate);
+    @ApiOperation(value = "修改仓库配置")
+    @PutMapping("/repo")
+    public ResponseEntity<String> modifyRepoConfig(@RequestBody String json) throws Exception {
+        RepoConfig repoConfig = (RepoConfig) JsonConverter.jsonToObject(json, RepoConfig.class);
+        repoConfigCrudService.addOrModify(repoConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    @ApiOperation(value = "删除应用更新配置")
-    @DeleteMapping("/update/{uniqueKey}")
-    public ResponseEntity<String> deleteUpdateConfig(@PathVariable("uniqueKey") String uniqueKey) throws Exception {
+    @ApiOperation(value = "删除仓库配置")
+    @DeleteMapping("/repo/{uniqueKey}")
+    public ResponseEntity<String> deleteRepoConfig(@PathVariable("uniqueKey") String uniqueKey) throws Exception {
         repoConfigCrudService.delete(uniqueKey);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
     
-    /* 应用编译配置 */
-    @ApiOperation(value = "添加应用编译配置")
-    @PostMapping(value = "/compile", consumes = "application/json")
+    /* 编译配置 */
+    @ApiOperation(value = "添加编译配置")
+    @PostMapping(value = "/compiler", consumes = "application/json")
     public ResponseEntity<String> addCompileConfig(@RequestBody String json) throws Exception {
-        CompilerConfig appCompile = (CompilerConfig) JsonConverter.jsonToObject(json, CompilerConfig.class);
-        compilerConfigCrudService.addOrModify(appCompile);
+        CompilerConfig compilerConfig = (CompilerConfig) JsonConverter.jsonToObject(json, CompilerConfig.class);
+        compilerConfigCrudService.addOrModify(compilerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    @ApiOperation(value = "分页获取应用编译配置")
-    @GetMapping("/compile")
+    @ApiOperation(value = "分页获取编译配置")
+    @GetMapping("/compiler")
     public ResponseEntity<String> getCompileConfigByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
         PageList<CompilerConfig> pageList = compilerConfigCrudService.getByPage(page, size);
         return ResponseEntity.ok().body(WebResult.success(pageList));
     }
 
-    @ApiOperation(value = "修改应用编译配置")
-    @PutMapping("/compile")
+    @ApiOperation(value = "修改编译配置")
+    @PutMapping("/compiler")
     public ResponseEntity<String> modifyCompileConfig(@RequestBody String json) throws Exception {
-        CompilerConfig appCompile = (CompilerConfig) JsonConverter.jsonToObject(json, CompilerConfig.class);
-        compilerConfigCrudService.addOrModify(appCompile);
+        CompilerConfig compilerConfig = (CompilerConfig) JsonConverter.jsonToObject(json, CompilerConfig.class);
+        compilerConfigCrudService.addOrModify(compilerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    @ApiOperation(value = "删除应用编译配置")
-    @DeleteMapping("/compile/{uniqueKey}")
+    @ApiOperation(value = "删除编译配置")
+    @DeleteMapping("/compiler/{uniqueKey}")
     public ResponseEntity<String> deleteCompileConfig(@PathVariable("uniqueKey") String uniqueKey) throws Exception {
         compilerConfigCrudService.delete(uniqueKey);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    /* 应用打包配置 */
-    @ApiOperation(value = "添加应用打包配置")
-    @PostMapping(value = "/pack", consumes = "application/json")
+    /* 打包方式配置 */
+    @ApiOperation(value = "添加打包方式配置")
+    @PostMapping(value = "/packer", consumes = "application/json")
     public ResponseEntity<String> addPackConfig(@RequestBody String json) throws Exception {
-        PackerConfig appPack = (PackerConfig) JsonConverter.jsonToObject(json, PackerConfig.class);
-        packerConfigCrudService.addOrModify(appPack);
+        PackerConfig packerConfig = (PackerConfig) JsonConverter.jsonToObject(json, PackerConfig.class);
+        packerConfigCrudService.addOrModify(packerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    @ApiOperation(value = "分页获取应用打包配置")
-    @GetMapping("/pack")
+    @ApiOperation(value = "分页获取打包方式配置")
+    @GetMapping("/packer")
     public ResponseEntity<String> getPackConfigByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
         PageList<PackerConfig> pageList = packerConfigCrudService.getByPage(page, size);
         return ResponseEntity.ok().body(WebResult.success(pageList));
     }
 
-    @ApiOperation(value = "修改应用打包配置")
-    @PutMapping("/pack")
+    @ApiOperation(value = "修改打包方式配置")
+    @PutMapping("/packer")
     public ResponseEntity<String> modifyPackConfig(@RequestBody String json) throws Exception {
-        PackerConfig appPack = (PackerConfig) JsonConverter.jsonToObject(json, PackerConfig.class);
-        packerConfigCrudService.addOrModify(appPack);
+        PackerConfig packerConfig = (PackerConfig) JsonConverter.jsonToObject(json, PackerConfig.class);
+        packerConfigCrudService.addOrModify(packerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    @ApiOperation(value = "删除应用打包配置")
-    @DeleteMapping("/pack/{uniqueKey}")
+    @ApiOperation(value = "删除打包方式配置")
+    @DeleteMapping("/packer/{uniqueKey}")
     public ResponseEntity<String> deletePackConfig(@PathVariable("uniqueKey") String uniqueKey) throws Exception {
         packerConfigCrudService.delete(uniqueKey);
         return ResponseEntity.ok().body(WebResult.success("ok"));

+ 40 - 43
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/ConfigController.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/ConfigController.java

@@ -1,18 +1,15 @@
-package cn.reghao.autodop.dmaster.app.controller;
+package cn.reghao.autodop.dmaster.app.controller.crud;
 
 import cn.reghao.autodop.common.dagent.app.api.data.deploy.PackerType;
 import cn.reghao.autodop.dmaster.app.constant.*;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppType;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.EnvType;
-import cn.reghao.autodop.dmaster.app.service.ConfigService;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierType;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppType;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.EnvType;
+import cn.reghao.autodop.dmaster.app.service.crud.ConfigService;
 import cn.reghao.autodop.dmaster.app.constant.RepoAuthType;
-import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.common.result.WebResult;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Sort;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
@@ -34,41 +31,6 @@ public class ConfigController {
         this.configService = configService;
     }
 
-    @ApiOperation(value = "添加配置")
-    @PostMapping(value = "/{configType}", consumes = "application/json")
-    public ResponseEntity<String> addConfig(@PathVariable("configType") String configType,
-                                            @RequestBody String json) throws Exception {
-        configService.addOrModify(configType, json);
-        return ResponseEntity.ok().body(WebResult.success("ok"));
-    }
-
-    @ApiOperation(value = "分页获取配置(更新时间倒序)")
-    @GetMapping("/{configType}")
-    public ResponseEntity<String> getConfigByPage(@PathVariable("configType") String configType,
-                                                  @RequestParam("page") int page,
-                                                  @RequestParam("size") int size) throws Exception {
-        PageRequest pageRequest =
-                PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
-        PageList pageList = configService.getByPage(configType, pageRequest);
-        return ResponseEntity.ok().body(WebResult.success(pageList));
-    }
-
-    @ApiOperation(value = "修改配置")
-    @PutMapping("/{configType}")
-    public ResponseEntity<String> modifyConfig(@PathVariable("configType") String configType,
-                                               @RequestBody String json) throws Exception {
-        configService.addOrModify(configType, json);
-        return ResponseEntity.ok().body(WebResult.success("ok"));
-    }
-
-    @ApiOperation(value = "删除配置")
-    @DeleteMapping("/{configType}/{uniqueKey}")
-    public ResponseEntity<String> deleteConfig(@PathVariable("configType") String configType,
-                                               @PathVariable("uniqueKey") String uniqueKey) throws Exception {
-        configService.delete(configType, uniqueKey);
-        return ResponseEntity.ok().body(WebResult.success("ok"));
-    }
-
     /**
      * 各种配置类型
      *
@@ -139,4 +101,39 @@ public class ConfigController {
         configService.buildConfigs("");
         return ResponseEntity.ok().body(WebResult.success("pageList"));
     }
+
+    /*@ApiOperation(value = "添加配置")
+    @PostMapping(value = "/{configType}", consumes = "application/json")
+    public ResponseEntity<String> addConfig(@PathVariable("configType") String configType,
+                                            @RequestBody String json) throws Exception {
+        configService.addOrModify(configType, json);
+        return ResponseEntity.ok().body(WebResult.success("ok"));
+    }
+
+    @ApiOperation(value = "分页获取配置(更新时间倒序)")
+    @GetMapping("/{configType}")
+    public ResponseEntity<String> getConfigByPage(@PathVariable("configType") String configType,
+                                                  @RequestParam("page") int page,
+                                                  @RequestParam("size") int size) throws Exception {
+        PageRequest pageRequest =
+                PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
+        PageList pageList = configService.getByPage(configType, pageRequest);
+        return ResponseEntity.ok().body(WebResult.success(pageList));
+    }
+
+    @ApiOperation(value = "修改配置")
+    @PutMapping("/{configType}")
+    public ResponseEntity<String> modifyConfig(@PathVariable("configType") String configType,
+                                               @RequestBody String json) throws Exception {
+        configService.addOrModify(configType, json);
+        return ResponseEntity.ok().body(WebResult.success("ok"));
+    }
+
+    @ApiOperation(value = "删除配置")
+    @DeleteMapping("/{configType}/{uniqueKey}")
+    public ResponseEntity<String> deleteConfig(@PathVariable("configType") String configType,
+                                               @PathVariable("uniqueKey") String uniqueKey) throws Exception {
+        configService.delete(configType, uniqueKey);
+        return ResponseEntity.ok().body(WebResult.success("ok"));
+    }*/
 }

+ 32 - 32
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/GlobalCrudController.java

@@ -4,7 +4,7 @@ import cn.reghao.autodop.common.result.WebResult;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.entity.LocalDir;
-import cn.reghao.autodop.dmaster.app.entity.Notification;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
 import cn.reghao.autodop.dmaster.app.service.crud.global.LocalDirCrudService;
 import cn.reghao.autodop.dmaster.app.service.crud.global.NotificationCrudService;
 import io.swagger.annotations.Api;
@@ -31,6 +31,37 @@ public class GlobalCrudController {
         this.notificationCrudService = notificationCrudService;
     }
 
+    /* 通知配置 */
+    @ApiOperation(value = "添加通知配置")
+    @PostMapping(value = "/notifier", consumes = "application/json")
+    public ResponseEntity<String> addNotification(@RequestBody String json) throws Exception {
+        NotifierConfig notifierConfig = (NotifierConfig) JsonConverter.jsonToObject(json, NotifierConfig.class);
+        notificationCrudService.addOrModify(notifierConfig);
+        return ResponseEntity.ok().body(WebResult.success("ok"));
+    }
+
+    @ApiOperation(value = "分页获取通知配置")
+    @GetMapping("/notifier")
+    public ResponseEntity<String> getNotificationByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
+        PageList<NotifierConfig> pageList = notificationCrudService.getByPage(page, size);
+        return ResponseEntity.ok().body(WebResult.success(pageList));
+    }
+
+    @ApiOperation(value = "修改通知配置")
+    @PutMapping("/notifier")
+    public ResponseEntity<String> modifyNotification(@RequestBody String json) throws Exception {
+        NotifierConfig notifierConfig = (NotifierConfig) JsonConverter.jsonToObject(json, NotifierConfig.class);
+        notificationCrudService.addOrModify(notifierConfig);
+        return ResponseEntity.ok().body(WebResult.success("ok"));
+    }
+
+    @ApiOperation(value = "删除通知配置")
+    @DeleteMapping("/notifier/{uniqueKey}")
+    public ResponseEntity<String> deleteNotification(@PathVariable("uniqueKey") String uniqueKey) throws Exception {
+        notificationCrudService.delete(uniqueKey);
+        return ResponseEntity.ok().body(WebResult.success("ok"));
+    }
+    
     /* 本地目录配置 */
     @ApiOperation(value = "添加本地目录配置")
     @PostMapping(value = "/localdir", consumes = "application/json")
@@ -58,35 +89,4 @@ public class GlobalCrudController {
     public ResponseEntity<String> deleteLocalDir(@PathVariable("uniqueKey") String uniqueKey) throws Exception {
         return ResponseEntity.ok().body(WebResult.success("不允许删除..."));
     }
-
-    /* 通知配置 */
-    @ApiOperation(value = "添加通知配置")
-    @PostMapping(value = "/notification", consumes = "application/json")
-    public ResponseEntity<String> addNotification(@RequestBody String json) throws Exception {
-        Notification notification = (Notification) JsonConverter.jsonToObject(json, Notification.class);
-        notificationCrudService.addOrModify(notification);
-        return ResponseEntity.ok().body(WebResult.success("ok"));
-    }
-
-    @ApiOperation(value = "分页获取通知配置")
-    @GetMapping("/notification")
-    public ResponseEntity<String> getNotificationByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
-        PageList<Notification> pageList = notificationCrudService.getByPage(page, size);
-        return ResponseEntity.ok().body(WebResult.success(pageList));
-    }
-
-    @ApiOperation(value = "修改通知配置")
-    @PutMapping("/notification")
-    public ResponseEntity<String> modifyNotification(@RequestBody String json) throws Exception {
-        Notification notification = (Notification) JsonConverter.jsonToObject(json, Notification.class);
-        notificationCrudService.addOrModify(notification);
-        return ResponseEntity.ok().body(WebResult.success("ok"));
-    }
-
-    @ApiOperation(value = "删除通知配置")
-    @DeleteMapping("/notification/{uniqueKey}")
-    public ResponseEntity<String> deleteNotification(@PathVariable("uniqueKey") String uniqueKey) throws Exception {
-        notificationCrudService.delete(uniqueKey);
-        return ResponseEntity.ok().body(WebResult.success("ok"));
-    }
 }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/OrchestrateCrudController.java

@@ -3,8 +3,8 @@ package cn.reghao.autodop.dmaster.app.controller.crud;
 import cn.reghao.autodop.common.result.WebResult;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.service.crud.orchestarte.AppCrudService;
 import cn.reghao.autodop.dmaster.app.service.crud.orchestarte.ProjCrudService;
 import io.swagger.annotations.Api;

+ 8 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/LocalDir.java

@@ -4,6 +4,7 @@ import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
 
 /**
@@ -17,15 +18,20 @@ import javax.persistence.Entity;
 @Entity
 public class LocalDir extends BaseEntity {
     // 主机唯一标识
+    @Column(nullable = false, unique = true)
     private String machineId;
     // 本地目录,包含 local-repo, compile-dir 和 pack-dir 三个目录
+    @Column(nullable = false)
     private String localDir;
     // 总容量
+    @Column(nullable = false)
     private String capacity;
-    // 可用容量
-    private String available;
     // 已用容量
+    @Column(nullable = false)
     private String used;
+    // 可用容量
+    @Column(nullable = false)
+    private String available;
 
     public LocalDir vo() {
         this.setId(null);

+ 0 - 54
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/Notification.java

@@ -1,54 +0,0 @@
-package cn.reghao.autodop.dmaster.app.entity;
-
-import cn.reghao.autodop.common.orm.BaseEntity;
-import lombok.Data;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-
-/**
- * @author reghao
- * @date 2020-03-06 21:20:06
- */
-@Data
-@Entity
-public class Notification extends BaseEntity {
-    private String notifierType;
-    @Column(nullable = false, unique = true)
-    private String notifierName;
-    private String url;
-    private String payload;
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-
-        if (obj instanceof Notification) {
-            Notification n = (Notification) obj;
-            return n.notifierType.equals(this.notifierType) &&
-                    n.notifierName.equals(this.notifierName) &&
-                    n.url.equals(this.url);
-        }
-
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = 17;
-        result = result * 31 + notifierType.hashCode();
-        result = result * 31 + notifierName.hashCode();
-        result = result * 31 + url.hashCode();
-        return result;
-    }
-
-    public Notification vo() {
-        this.setId(null);
-        this.setIsDelete(null);
-        this.setCreateTime(null);
-        this.setUpdateTime(null);
-        return this;
-    }
-}

+ 0 - 25
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/RepoConfig.java

@@ -1,25 +0,0 @@
-package cn.reghao.autodop.dmaster.app.entity.build.tools;
-
-import cn.reghao.autodop.common.orm.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.persistence.Entity;
-
-/**
- * 仓库配置
- *
- * @author reghao
- * @date 2020-05-13 22:50:38
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Entity
-public class RepoConfig extends BaseEntity {
-    private String name;
-    private RepoType type;
-    private AuthType authType;
-    private String username;
-    private String password;
-    private String rsaPrikey;
-}

+ 58 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/NotifierConfig.java

@@ -0,0 +1,58 @@
+package cn.reghao.autodop.dmaster.app.entity.config;
+
+import cn.reghao.autodop.common.orm.BaseEntity;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+
+/**
+ * @author reghao
+ * @date 2020-03-06 21:20:06
+ */
+@Data
+@Entity
+public class NotifierConfig extends BaseEntity {
+    @Column(nullable = false, unique = true)
+    private String name;
+    @Column(nullable = false)
+    private String type;
+    @Column(nullable = false)
+    private String destination;
+    private String payload;
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this) {
+            return true;
+        }
+
+        if (obj instanceof NotifierConfig) {
+            NotifierConfig n = (NotifierConfig) obj;
+            return n.name.equals(this.name) &&
+                    n.type.equals(this.type) &&
+                    n.destination.equals(this.destination) &&
+                    n.payload.equals(this.payload);
+        }
+
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 17;
+        result = result * 31 + name.hashCode();
+        result = result * 31 + type.hashCode();
+        result = result * 31 + destination.hashCode();
+        result = result * 31 + payload.hashCode();
+        return result;
+    }
+
+    public NotifierConfig vo() {
+        this.setId(null);
+        this.setIsDelete(null);
+        this.setCreateTime(null);
+        this.setUpdateTime(null);
+        return this;
+    }
+}

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/constant/NotifierType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/NotifierType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.constant;
+package cn.reghao.autodop.dmaster.app.entity.config;
 
 /**
  * 通知工具

+ 5 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/BuildConfig.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/BuildConfig.java

@@ -1,8 +1,8 @@
-package cn.reghao.autodop.dmaster.app.entity.build;
+package cn.reghao.autodop.dmaster.app.entity.config.build;
 
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -23,4 +23,5 @@ public class BuildConfig {
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "packer_config_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private PackerConfig packerConfig;
+    private String dockerfile;
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/BuildStage.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/BuildStage.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.entity.build;
+package cn.reghao.autodop.dmaster.app.entity.config.build;
 
 /**
  * @author reghao

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/AuthType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/AuthType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.entity.build.tools;
+package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
 /**
  * @author reghao

+ 10 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/CompilerConfig.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/CompilerConfig.java

@@ -1,9 +1,10 @@
-package cn.reghao.autodop.dmaster.app.entity.build.tools;
+package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
 import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
 
 /**
@@ -16,11 +17,18 @@ import javax.persistence.Entity;
 @EqualsAndHashCode(callSuper = false)
 @Entity
 public class CompilerConfig extends BaseEntity {
+    @Column(nullable = false, unique = true)
     private String name;
-    private CompilerType type;
+    @Column(nullable = false)
+    private String type;
+    @Column(nullable = false)
     private String homePath;
+    @Column(nullable = false)
     private String binPath;
+    @Column(nullable = false)
     private String version;
+    @Column(nullable = false)
     private String env;
+    @Column(nullable = false)
     private String compileCmd;
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/CompilerType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/CompilerType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.entity.build.tools;
+package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
 /**
  * @author reghao

+ 6 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/PackerConfig.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/PackerConfig.java

@@ -1,9 +1,10 @@
-package cn.reghao.autodop.dmaster.app.entity.build.tools;
+package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
 import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
 
 /**
@@ -16,10 +17,12 @@ import javax.persistence.Entity;
 @EqualsAndHashCode(callSuper = false)
 @Entity
 public class PackerConfig extends BaseEntity {
+    @Column(nullable = false, unique = true)
     private String name;
-    private PackerType type;
+    @Column(nullable = false)
+    private String type;
     // 打包后的应用存放的位置,可以是一个本地目录,也可以是一个网络位置
     // 根据打包类型来确定
+    @Column(nullable = false)
     private String targetPath;
-    private String dockerfile;
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/PackerType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/PackerType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.entity.build.tools;
+package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
 /**
  * @author reghao

+ 40 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/RepoConfig.java

@@ -0,0 +1,40 @@
+package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
+
+import cn.reghao.autodop.common.orm.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Lob;
+
+/**
+ * 仓库配置
+ *
+ * @author reghao
+ * @date 2020-05-13 22:50:38
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Entity
+public class RepoConfig extends BaseEntity {
+    @Column(nullable = false, unique = true)
+    private String name;
+    @Column(nullable = false)
+    private String type;
+    @Column(nullable = false)
+    private String authType;
+    // TODO 根据 authType 选择 username, password 或 rsaPrikey
+    private String username;
+    private String password;
+    @Lob
+    @Column(columnDefinition="text")
+    private String rsaPrikey;
+
+    public RepoConfig vo() {
+        this.id = null;
+        this.createTime = null;
+        this.updateTime = null;
+        return this;
+    }
+}

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/tools/RepoType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/RepoType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.entity.build.tools;
+package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
 /**
  * @author reghao

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestration.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/AppOrchestration.java

@@ -1,8 +1,8 @@
-package cn.reghao.autodop.dmaster.app.entity.orchestration;
+package cn.reghao.autodop.dmaster.app.entity.config.orchestration;
 
 import cn.reghao.autodop.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.app.entity.Notification;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployConfig;
 import cn.reghao.autodop.dmaster.app.entity.deploy.RunningConfig;
 import cn.reghao.autodop.dmaster.auth.entity.Role;
@@ -52,7 +52,7 @@ public class AppOrchestration extends BaseEntity implements Cloneable {
 
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "notification_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
-    private Notification notification;
+    private NotifierConfig notifierConfig;
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "role_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private Role role;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/AppType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.entity.orchestration;
+package cn.reghao.autodop.dmaster.app.entity.config.orchestration;
 
 /**
  * 应用类型

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/EnvType.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/EnvType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.entity.orchestration;
+package cn.reghao.autodop.dmaster.app.entity.config.orchestration;
 
 /**
  * 应用构建部署时所处的环境

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/ProjOrchestration.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/ProjOrchestration.java

@@ -1,7 +1,7 @@
-package cn.reghao.autodop.dmaster.app.entity.orchestration;
+package cn.reghao.autodop.dmaster.app.entity.config.orchestration;
 
 import cn.reghao.autodop.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/DeployedApp.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.entity.deploy;
 
 import cn.reghao.autodop.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.entity.log;
 
 import cn.reghao.autodop.common.orm.BaseDocument;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildStage;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildStage;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.data.mongodb.core.mapping.Document;

+ 2 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/BuildResult.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildResult.java

@@ -1,5 +1,6 @@
-package cn.reghao.autodop.dmaster.app.entity.build;
+package cn.reghao.autodop.dmaster.app.entity.log;
 
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildStage;
 import lombok.Data;
 
 import java.time.LocalDateTime;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/build/CompilerConfigRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.repository.build;
 
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/build/PackerConfigRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.repository.build;
 
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/build/RepoConfigRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.repository.build;
 
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 
@@ -11,7 +11,7 @@ import javax.transaction.Transactional;
  * @date 2020-01-21 14:53:03
  */
 public interface RepoConfigRepository extends JpaRepository<RepoConfig, Long> {
-    RepoConfig findByIsDeleteFalseAndName(String repoName);
+    RepoConfig findByIsDeleteFalseAndName(String name);
 
     @Modifying
     @Transactional

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/deploy/DeployedAppRepository.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.repository.deploy;
 
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployedApp;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/orchestration/AppOrchestrationRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.repository.orchestration;
 
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/orchestration/NotificationRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.repository.orchestration;
 
-import cn.reghao.autodop.dmaster.app.entity.Notification;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 
@@ -10,10 +10,10 @@ import javax.transaction.Transactional;
  * @author reghao
  * @date 2020-01-21 14:53:03
  */
-public interface NotificationRepository extends JpaRepository<Notification, Long> {
-    Notification findByIsDeleteFalseAndNotifierName(String notifierName);
+public interface NotificationRepository extends JpaRepository<NotifierConfig, Long> {
+    NotifierConfig findByIsDeleteFalseAndName(String name);
 
     @Modifying
     @Transactional
-    void deleteByNotifierName(String notifierName);
+    void deleteByName(String name);
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/orchestration/ProjOrchestrationRepository.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.repository.orchestration;
 
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Modifying;
 

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployDispatcher.java

@@ -1,16 +1,16 @@
 package cn.reghao.autodop.dmaster.app.service;
 
 import cn.reghao.autodop.dmaster.app.cache.OrchestrationCache;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildResult;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildStage;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildStage;
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployConfig;
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployResult;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
+import cn.reghao.autodop.dmaster.app.entity.log.BuildResult;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import cn.reghao.autodop.dmaster.app.service.build.AppIntegrate;
 import cn.reghao.autodop.dmaster.app.service.deploy.AppDeployer;
 import cn.reghao.autodop.dmaster.app.service.build.tools.updater.CommitLog;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.log.LogRepository;
 import cn.reghao.autodop.dmaster.app.service.log.LogConsumer;
 import cn.reghao.autodop.dmaster.common.exception.ExceptionUtil;

+ 1 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildService.java

@@ -1,9 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service;
 
-import cn.reghao.autodop.common.utils.DatetimeConverter;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
-import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.dao.BaseDAO;
 import cn.reghao.autodop.dmaster.app.repository.log.BuildLogRepository;
 import cn.reghao.autodop.dmaster.app.repository.log.CommitLogRepository;
@@ -19,7 +17,6 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author reghao

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/LogManager.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service;
 
 import cn.reghao.autodop.dmaster.app.cache.OrchestrationCache;
 import cn.reghao.autodop.dmaster.app.entity.deploy.LogConfig;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.vo.LogFile;
 import org.springframework.stereotype.Service;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/StatusManager.java

@@ -4,7 +4,7 @@ import cn.reghao.autodop.common.deploy.AppStatus;
 import cn.reghao.autodop.common.dockerc.exception.DockerException;
 import cn.reghao.autodop.dmaster.app.cache.OrchestrationCache;
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployedApp;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.deploy.DeployedAppRepository;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;

+ 8 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppIntegrate.java

@@ -1,11 +1,9 @@
 package cn.reghao.autodop.dmaster.app.service.build;
 
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.*;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.service.build.tools.compiler.CodeCompiler;
 import cn.reghao.autodop.dmaster.app.service.build.tools.compiler.MavenCompiler;
 import cn.reghao.autodop.dmaster.app.service.build.tools.compiler.NullCompiler;
@@ -94,7 +92,7 @@ public class AppIntegrate {
 
         // 初始化更新配置
         RepoConfig repoConfig = buildConfig.getRepoConfig();
-        switch (repoConfig.getType()) {
+        switch (RepoType.valueOf(repoConfig.getType())) {
             case git:
                 codeUpdater = new GitImpl(repoConfig);
                 break;
@@ -106,7 +104,7 @@ public class AppIntegrate {
 
         // 初始化编译配置
         CompilerConfig compilerConfig = buildConfig.getCompilerConfig();
-        switch (compilerConfig.getType()) {
+        switch (CompilerType.valueOf(compilerConfig.getType())) {
             case shell:
                 codeCompiler = new ShellCompiler(compilerConfig);
                 break;
@@ -125,9 +123,9 @@ public class AppIntegrate {
 
         // 初始化打包配置
         PackerConfig packerConfig = buildConfig.getPackerConfig();
-        switch (packerConfig.getType()) {
+        switch (PackerType.valueOf(packerConfig.getType())) {
             case docker:
-                codePacker = new DockerPack(packerConfig);
+                codePacker = new DockerPack(packerConfig, buildConfig.getDockerfile());
                 break;
             case zip:
                 codePacker = new ZipPack(packerConfig);

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuilderUtil.java

@@ -2,9 +2,9 @@ package cn.reghao.autodop.dmaster.app.service.build;
 
 import cn.reghao.autodop.common.utils.FileOps;
 import cn.reghao.autodop.common.utils.text.ReplaceCharacter;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppType;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppType;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.common.config.SysConfig;
 import lombok.extern.slf4j.Slf4j;
 
@@ -26,7 +26,7 @@ public class BuilderUtil {
     public static void copyToCompileDir(String appLocalRepo, AppOrchestration app) throws IOException {
         String appCompileDir = SysConfig.compileDir + "/" + app.getAppId();
         File compileDir = new File(appCompileDir);
-        if (!compileDir.exists() && !FileOps.mkdir(compileDir)) {
+        if (!compileDir.exists() && !FileOps.mkdirs(compileDir)) {
             throw new IOException(compileDir + "不存在");
         } else {
             FileOps.eraseDir(compileDir);

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/compiler/MavenCompiler.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service.build.tools.compiler;
 
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.maven.shared.invoker.*;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/compiler/ShellCompiler.java

@@ -3,7 +3,7 @@ package cn.reghao.autodop.dmaster.app.service.build.tools.compiler;
 import cn.reghao.autodop.common.shell.ShellExecutor;
 import cn.reghao.autodop.common.shell.ShellResult;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
 
 /**
  * 编译代码

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/packer/DockerPack.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service.build.tools.packer;
 
 import cn.reghao.autodop.common.dockerc.Docker;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
 
 /**
  * 打包为 docker 应用
@@ -13,8 +13,8 @@ public class DockerPack implements CodePacker {
     private String dockerfile;
     private String targetPath;
 
-    public DockerPack(PackerConfig packerConfig) {
-        this.dockerfile = packerConfig.getDockerfile();
+    public DockerPack(PackerConfig packerConfig, String dockerfile) {
+        this.dockerfile = dockerfile;
         this.targetPath = packerConfig.getTargetPath();
     }
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/packer/ZipPack.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service.build.tools.packer;
 
 import cn.reghao.autodop.common.utils.compression.ZipFiles;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.File;

+ 3 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/updater/GitImpl.java

@@ -1,6 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service.build.tools.updater;
 
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.AuthType;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
 import com.jcraft.jsch.JSch;
 import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.Session;
@@ -37,7 +38,7 @@ public class GitImpl implements CodeUpdater {
     private SshSessionFactory sshSessionFactory;
 
     public GitImpl(RepoConfig repoConfig) {
-        switch (repoConfig.getAuthType()) {
+        switch (AuthType.valueOf(repoConfig.getAuthType())) {
             case http:
                 httpAuth(repoConfig.getUsername(), repoConfig.getPassword());
                 break;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/updater/SvnImpl.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service.build.tools.updater;
 
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
 import org.tmatesoft.svn.core.*;
 import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
 import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;

+ 57 - 61
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/ConfigService.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/ConfigService.java

@@ -1,10 +1,10 @@
-package cn.reghao.autodop.dmaster.app.service;
+package cn.reghao.autodop.dmaster.app.service.crud;
 
 import cn.reghao.autodop.common.shell.ShellExecutor;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.constant.ConfigType;
 import cn.reghao.autodop.dmaster.app.entity.LocalDir;
-import cn.reghao.autodop.dmaster.app.entity.Notification;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
 import cn.reghao.autodop.dmaster.app.repository.build.CompilerConfigRepository;
 import cn.reghao.autodop.dmaster.app.repository.build.PackerConfigRepository;
 import cn.reghao.autodop.dmaster.app.repository.build.RepoConfigRepository;
@@ -51,7 +51,40 @@ public class ConfigService {
         this.shellExecutor = new ShellExecutor();
     }
 
-    public void addOrModify(String configType, String json) throws Exception {
+    public Map<String, String> buildConfigs(String buildConfig) {
+        Map<String, String> map = new HashMap<>();
+        /*switch (ConfigType.valueOf(buildConfig)) {
+            case proj:
+                for (ProjOrchestration proj : projRepository.findAll()) {
+                    map.put(proj.getProjId(), proj.getProjId());
+                }
+                break;
+            case update:
+                for (RepoConfig appUpdate : repoRepository.findAll()) {
+                    map.put(appUpdate.getRepoName(), appUpdate.getRepoName());
+                }
+                break;
+            case compile:
+                for (AppCompile appCompile : compilerRepository.findAll()) {
+                    map.put(appCompile.getCompilerName(), appCompile.getCompilerName());
+                }
+                break;
+            case pack:
+                for (AppPack appPack : packerRepository.findAll()) {
+                    map.put(appPack.getPackerName(), appPack.getPackerName());
+                }
+                break;
+            case notify:
+                for (Notification notification : notifyRepository.findAll()) {
+                    map.put(notification.getNotifierName(), notification.getNotifierName());
+                }
+                break;
+            default:
+        }*/
+        return map;
+    }
+
+    /*public void addOrModify(String configType, String json) throws Exception {
         switch (ConfigType.valueOf(configType)) {
             // 本地文件系统目录
             case localDir:
@@ -87,19 +120,19 @@ public class ConfigService {
                 break;
             // 通知配置
             case notifier:
-                Notification notification = (Notification) JsonConverter.jsonToObject(json, Notification.class);
-                Notification notifyEntity =
-                        notifyRepository.findByIsDeleteFalseAndNotifierName(notification.getNotifierName());
+                NotifierConfig notifierConfig = (NotifierConfig) JsonConverter.jsonToObject(json, NotifierConfig.class);
+                NotifierConfig notifyEntity =
+                        notifyRepository.findByIsDeleteFalseAndName(notifierConfig.getName());
                 if (notifyEntity != null) {
-                    notification.setId(notifyEntity.getId());
-                    notification.setCreateTime(notifyEntity.getCreateTime());
-                    notification.setUpdateTime(LocalDateTime.now());
+                    notifierConfig.setId(notifyEntity.getId());
+                    notifierConfig.setCreateTime(notifyEntity.getCreateTime());
+                    notifierConfig.setUpdateTime(LocalDateTime.now());
                 }
-                notification.setIsDelete(false);
-                notifyRepository.save(notification);
+                notifierConfig.setIsDelete(false);
+                notifyRepository.save(notifierConfig);
                 break;
             // 仓库配置
-            /*case repo:
+            case repo:
                 RepoConfig appUpdate = (RepoConfig) JsonConverter.jsonToObject(json, RepoConfig.class);
                 RepoConfig updateEntity = repoRepository.findByIsDeleteFalseAndRepoName(appUpdate.getRepoName());
                 if (updateEntity != null) {
@@ -143,16 +176,12 @@ public class ConfigService {
                 }
                 appPack.setIsDelete(false);
                 packerRepository.save(appPack);
-                break;*/
+                break;
             default:
                 throw new Exception(configType + " 类型不存在");
         }
     }
 
-    private void checkScript(String script) throws Exception {
-        // TODO 检查脚本
-    }
-
     public PageList getByPage(String configType, PageRequest pageRequest) throws Exception {
         switch (ConfigType.valueOf(configType)) {
             case localDir:
@@ -163,13 +192,13 @@ public class ConfigService {
                 pageList.setList(configs.getContent().stream().map(LocalDir::vo).collect(Collectors.toList()));
                 return pageList;
             case notifier:
-                Page<Notification> notifiers = notifyRepository.findAll(pageRequest);
-                PageList<Notification> pageList1 = new PageList<>();
+                Page<NotifierConfig> notifiers = notifyRepository.findAll(pageRequest);
+                PageList<NotifierConfig> pageList1 = new PageList<>();
                 pageList1.setTotalSize(notifiers.getTotalElements());
                 pageList1.setTotalPages(notifiers.getTotalPages());
-                pageList1.setList(notifiers.getContent().stream().map(Notification::vo).collect(Collectors.toList()));
+                pageList1.setList(notifiers.getContent().stream().map(NotifierConfig::vo).collect(Collectors.toList()));
                 return pageList1;
-            /*case repo:
+            case repo:
                 Page<RepoConfig> appUpdates = repoRepository.findAll(pageRequest);
                 PageList<RepoConfig> pageList2 = new PageList<>();
                 pageList2.setTotalSize(appUpdates.getTotalElements());
@@ -189,25 +218,25 @@ public class ConfigService {
                 pageList4.setTotalSize(appPacks.getTotalElements());
                 pageList4.setTotalPages(appPacks.getTotalPages());
                 pageList4.setList(appPacks.getContent().stream().map(AppPack::vo).collect(Collectors.toList()));
-                return pageList4;*/
+                return pageList4;
             default:
                 throw new Exception(configType + " 类型不存在");
         }
     }
 
-    /**
+    *//**
      * 只做逻辑删除
      *
      * @param
      * @return
      * @date 2020-09-30 下午2:53
-     */
+     *//*
     public void delete(String configType, String name) throws Exception {
-        switch (ConfigType.valueOf(configType)) {/*
+        switch (ConfigType.valueOf(configType)) {
             case localDir:
                 break;
             case notifier:
-                Notification notifierEntity = notifyRepository.findByIsDeleteFalseAndNotifierName(name);
+                Notification notifierEntity = notifyRepository.findByIsDeleteFalseAndName(name);
                 if (notifierEntity == null) {
                     throw new Exception(name + "不存在...");
                 }
@@ -240,40 +269,7 @@ public class ConfigService {
                 packerRepository.save(packEntity);
                 break;
             default:
-                throw new Exception(configType + " 类型不存在");*/
+                throw new Exception(configType + " 类型不存在");
         }
-    }
-
-    public Map<String, String> buildConfigs(String buildConfig) {
-        Map<String, String> map = new HashMap<>();
-        /*switch (ConfigType.valueOf(buildConfig)) {
-            case proj:
-                for (ProjOrchestration proj : projRepository.findAll()) {
-                    map.put(proj.getProjId(), proj.getProjId());
-                }
-                break;
-            case update:
-                for (RepoConfig appUpdate : repoRepository.findAll()) {
-                    map.put(appUpdate.getRepoName(), appUpdate.getRepoName());
-                }
-                break;
-            case compile:
-                for (AppCompile appCompile : compilerRepository.findAll()) {
-                    map.put(appCompile.getCompilerName(), appCompile.getCompilerName());
-                }
-                break;
-            case pack:
-                for (AppPack appPack : packerRepository.findAll()) {
-                    map.put(appPack.getPackerName(), appPack.getPackerName());
-                }
-                break;
-            case notify:
-                for (Notification notification : notifyRepository.findAll()) {
-                    map.put(notification.getNotifierName(), notification.getNotifierName());
-                }
-                break;
-            default:
-        }*/
-        return map;
-    }
+    }*/
 }

+ 11 - 11
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OrchestrateService.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/OrchestrateService.java

@@ -1,13 +1,13 @@
-package cn.reghao.autodop.dmaster.app.service;
+package cn.reghao.autodop.dmaster.app.service.crud;
 
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.entity.Notification;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.build.CompilerConfigRepository;
 import cn.reghao.autodop.dmaster.app.repository.build.PackerConfigRepository;
 import cn.reghao.autodop.dmaster.app.repository.build.RepoConfigRepository;
@@ -142,9 +142,9 @@ public class OrchestrateService {
      */
     private void checkSharedNotification(AppOrchestration app, String notifier) throws Exception {
         if (notifier != null) {
-            Notification notification = notificationRepository.findByIsDeleteFalseAndNotifierName(notifier);
-            if (notification == null) {
-                throw new Exception(notification + " 不存在...");
+            NotifierConfig notifierConfig = notificationRepository.findByIsDeleteFalseAndName(notifier);
+            if (notifierConfig == null) {
+                throw new Exception(notifierConfig + " 不存在...");
             }
             //app.setNotification(notification);
         }

+ 9 - 9
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/SharedEntityChecker.java

@@ -1,11 +1,11 @@
 package cn.reghao.autodop.dmaster.app.service.crud;
 
-import cn.reghao.autodop.dmaster.app.entity.Notification;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.build.CompilerConfigRepository;
 import cn.reghao.autodop.dmaster.app.repository.build.PackerConfigRepository;
 import cn.reghao.autodop.dmaster.app.repository.build.RepoConfigRepository;
@@ -75,9 +75,9 @@ public class SharedEntityChecker {
      */
     public void checkNotification(AppOrchestration app, String notifier) throws Exception {
         if (notifier != null) {
-            Notification notification = notificationRepository.findByIsDeleteFalseAndNotifierName(notifier);
-            if (notification == null) {
-                throw new Exception(notification + " 不存在...");
+            NotifierConfig notifierConfig = notificationRepository.findByIsDeleteFalseAndName(notifier);
+            if (notifierConfig == null) {
+                throw new Exception(notifierConfig + " 不存在...");
             }
             //app.setNotification(notification);
         }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/CompilerConfigCrudService.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service.crud.build;
 
 import cn.reghao.autodop.common.utils.data.db.CrudOps;
 import cn.reghao.autodop.common.utils.data.db.PageList;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.CompilerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.CompilerConfig;
 import cn.reghao.autodop.dmaster.app.repository.build.CompilerConfigRepository;
 import org.springframework.stereotype.Service;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/PackerConfigCrudService.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service.crud.build;
 
 import cn.reghao.autodop.common.utils.data.db.CrudOps;
 import cn.reghao.autodop.common.utils.data.db.PageList;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.PackerConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.PackerConfig;
 import cn.reghao.autodop.dmaster.app.repository.build.PackerConfigRepository;
 import org.springframework.stereotype.Service;
 

+ 24 - 20
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/RepoConfigCrudService.java

@@ -2,34 +2,38 @@ package cn.reghao.autodop.dmaster.app.service.crud.build;
 
 import cn.reghao.autodop.common.utils.data.db.CrudOps;
 import cn.reghao.autodop.common.utils.data.db.PageList;
-import cn.reghao.autodop.dmaster.app.entity.build.tools.RepoConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
 import cn.reghao.autodop.dmaster.app.repository.build.RepoConfigRepository;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.util.stream.Collectors;
+
 /**
  * @author reghao
  * @date 2020-11-10 21:58:00
  */
 @Service
 public class RepoConfigCrudService implements CrudOps<RepoConfig> {
-    private RepoConfigRepository updateRepository;
+    private RepoConfigRepository repoRepository;
 
-    public RepoConfigCrudService(RepoConfigRepository updateRepository) {
-        this.updateRepository = updateRepository;
+    public RepoConfigCrudService(RepoConfigRepository repoRepository) {
+        this.repoRepository = repoRepository;
     }
 
     @Override
-    public void addOrModify(RepoConfig appUpdate) throws Exception {/*
-        RepoConfig updateEntity = updateRepository.findByIsDeleteFalseAndRepoName(appUpdate.getRepoName());
-        if (updateEntity != null) {
-            appUpdate.setId(updateEntity.getId());
-            appUpdate.setCreateTime(updateEntity.getCreateTime());
-            appUpdate.setUpdateTime(LocalDateTime.now());
+    public void addOrModify(RepoConfig repoConfig) throws Exception {
+        RepoConfig repoConfigEntity = repoRepository.findByIsDeleteFalseAndName(repoConfig.getName());
+        if (repoConfigEntity != null) {
+            repoConfig.setId(repoConfigEntity.getId());
+            repoConfig.setCreateTime(repoConfigEntity.getCreateTime());
+            repoConfig.setUpdateTime(LocalDateTime.now());
         }
-        appUpdate.setIsDelete(false);
-        updateRepository.save(appUpdate);*/
+        repoConfig.setIsDelete(false);
+        repoRepository.save(repoConfig);
     }
 
     @Override
@@ -37,22 +41,22 @@ public class RepoConfigCrudService implements CrudOps<RepoConfig> {
         // 默认按更新时间倒序
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
-        //Page<RepoConfig> appUpdates = updateRepository.findAll(pageRequest);
+        Page<RepoConfig> repoConfigs = repoRepository.findAll(pageRequest);
 
         PageList<RepoConfig> pageList = new PageList<>();
-        /*pageList.setTotalSize(appUpdates.getTotalElements());
-        pageList.setTotalPages(appUpdates.getTotalPages());
-        pageList.setList(appUpdates.getContent().stream().map(RepoConfig::vo).collect(Collectors.toList()));*/
+        pageList.setTotalSize(repoConfigs.getTotalElements());
+        pageList.setTotalPages(repoConfigs.getTotalPages());
+        pageList.setList(repoConfigs.getContent().stream().map(RepoConfig::vo).collect(Collectors.toList()));
         return pageList;
     }
 
     @Override
     public void delete(String uniqueKey) throws Exception {
-        /*RepoConfig updateEntity = updateRepository.findByIsDeleteFalseAndRepoName(uniqueKey);
-        if (updateEntity == null) {
+        RepoConfig repoConfigEntity = repoRepository.findByIsDeleteFalseAndName(uniqueKey);
+        if (repoConfigEntity == null) {
             throw new Exception(uniqueKey + "不存在...");
         }
-        updateEntity.setIsDelete(true);
-        updateRepository.save(updateEntity);*/
+        repoConfigEntity.setIsDelete(true);
+        repoRepository.save(repoConfigEntity);
     }
 }

+ 15 - 15
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/global/NotificationCrudService.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service.crud.global;
 
 import cn.reghao.autodop.common.utils.data.db.CrudOps;
 import cn.reghao.autodop.common.utils.data.db.PageList;
-import cn.reghao.autodop.dmaster.app.entity.Notification;
+import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.NotificationRepository;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -17,7 +17,7 @@ import java.util.stream.Collectors;
  * @date 2020-11-10 21:58:00
  */
 @Service
-public class NotificationCrudService implements CrudOps<Notification> {
+public class NotificationCrudService implements CrudOps<NotifierConfig> {
     private NotificationRepository notifyRepository;
 
     public NotificationCrudService(NotificationRepository notifyRepository) {
@@ -25,35 +25,35 @@ public class NotificationCrudService implements CrudOps<Notification> {
     }
 
     @Override
-    public void addOrModify(Notification notification) throws Exception {
-        Notification notifyEntity =
-                notifyRepository.findByIsDeleteFalseAndNotifierName(notification.getNotifierName());
+    public void addOrModify(NotifierConfig notifierConfig) throws Exception {
+        NotifierConfig notifyEntity =
+                notifyRepository.findByIsDeleteFalseAndName(notifierConfig.getName());
         if (notifyEntity != null) {
-            notification.setId(notifyEntity.getId());
-            notification.setCreateTime(notifyEntity.getCreateTime());
-            notification.setUpdateTime(LocalDateTime.now());
+            notifierConfig.setId(notifyEntity.getId());
+            notifierConfig.setCreateTime(notifyEntity.getCreateTime());
+            notifierConfig.setUpdateTime(LocalDateTime.now());
         }
-        notification.setIsDelete(false);
-        notifyRepository.save(notification);
+        notifierConfig.setIsDelete(false);
+        notifyRepository.save(notifierConfig);
     }
 
     @Override
-    public PageList<Notification> getByPage(int page, int size) {
+    public PageList<NotifierConfig> getByPage(int page, int size) {
         // 默认按更新时间倒序
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
-        Page<Notification> notifiers = notifyRepository.findAll(pageRequest);
+        Page<NotifierConfig> notifiers = notifyRepository.findAll(pageRequest);
 
-        PageList<Notification> pageList = new PageList<>();
+        PageList<NotifierConfig> pageList = new PageList<>();
         pageList.setTotalSize(notifiers.getTotalElements());
         pageList.setTotalPages(notifiers.getTotalPages());
-        pageList.setList(notifiers.getContent().stream().map(Notification::vo).collect(Collectors.toList()));
+        pageList.setList(notifiers.getContent().stream().map(NotifierConfig::vo).collect(Collectors.toList()));
         return pageList;
     }
 
     @Override
     public void delete(String uniqueKey) throws Exception {
-        Notification notifierEntity = notifyRepository.findByIsDeleteFalseAndNotifierName(uniqueKey);
+        NotifierConfig notifierEntity = notifyRepository.findByIsDeleteFalseAndName(uniqueKey);
         if (notifierEntity == null) {
             throw new Exception(uniqueKey + "不存在...");
         }

+ 3 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/AppCrudService.java

@@ -2,9 +2,9 @@ package cn.reghao.autodop.dmaster.app.service.crud.orchestarte;
 
 import cn.reghao.autodop.common.utils.data.db.CrudOps;
 import cn.reghao.autodop.common.utils.data.db.PageList;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.ProjOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.service.crud.SharedEntityChecker;
@@ -14,8 +14,6 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
-
 /**
  * @author reghao
  * @date 2020-11-10 21:58:00

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/ProjCrudService.java

@@ -2,8 +2,8 @@ package cn.reghao.autodop.dmaster.app.service.crud.orchestarte;
 
 import cn.reghao.autodop.common.utils.data.db.CrudOps;
 import cn.reghao.autodop.common.utils.data.db.PageList;
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.ProjOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.service.crud.SharedEntityChecker;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/AppBuildVO.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.vo;
 
-import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
+import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
 import lombok.Data;
 
 /**

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/AppVO.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.vo.orchestration;
 
 import cn.reghao.autodop.dmaster.app.entity.deploy.AppDeploy;
 import cn.reghao.autodop.dmaster.app.entity.deploy.AppRunning;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.vo.AppBuildVO;
 import lombok.Data;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/ProjVO.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.vo.orchestration;
 
-import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.vo.AppBuildVO;
 import lombok.Data;
 

+ 28 - 15
dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/AfterAppStart.java

@@ -1,9 +1,10 @@
 package cn.reghao.autodop.dmaster.utils;
 
+import cn.reghao.autodop.common.dagent.machine.hardware.disk.Disk;
+import cn.reghao.autodop.common.dagent.machine.hardware.disk.DiskInfo;
 import cn.reghao.autodop.common.utils.FileOps;
 import cn.reghao.autodop.common.utils.text.TextFile;
 import cn.reghao.autodop.dmaster.app.entity.LocalDir;
-import cn.reghao.autodop.dmaster.app.repository.build.CompilerConfigRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.LocalDirRepository;
 import cn.reghao.autodop.dmaster.auth.service.UserService;
 import cn.reghao.autodop.dmaster.common.config.SysConfig;
@@ -35,24 +36,36 @@ public class AfterAppStart implements ApplicationRunner {
 
     @Override
     public void run(ApplicationArguments args) {
-        String hostId = new TextFile().read("/etc/machine-id").get(0);
-        LocalDir localDir = localDirRepository.findByMachineId(hostId);
+        String machineId = new TextFile().read("/etc/machine-id").get(0);
+        LocalDir localDir = localDirRepository.findByMachineId(machineId);
         if (localDir == null) {
             String home = System.getProperty("user.home");
-            localDir = new LocalDir();
-            localDir.setMachineId(hostId);
-            localDir.setIsDelete(false);
-            localDirRepository.save(localDir);
+            Disk disk = new Disk();
+            DiskInfo diskInfo = disk.diskInfo(home);
+            if (diskInfo != null) {
+                localDir = new LocalDir();
+                localDir.setMachineId(machineId);
+                localDir.setLocalDir(home + "/autodop");
+                localDir.setCapacity(diskInfo.getSize());
+                localDir.setUsed(diskInfo.getUsed());
+                localDir.setAvailable(diskInfo.getAvail());
+                localDir.setIsDelete(false);
+                localDirRepository.save(localDir);
+
+                initialize(localDir);
+                log.info("autodop-master 初始化完成...");
+            } else {
+                log.error("{} 不合法,autodop-master 启动失败...", home);
+                System.exit(1);
+            }
         }
-        initialize(localDir);
-        log.info("autodop-master 初始化完成...");
     }
 
     public void initialize(LocalDir localDir) {
         // TODO 放入缓存
-        SysConfig.localRepo = localDir + "/local-repo";
-        SysConfig.compileDir = localDir + "/compile-dir";
-        SysConfig.packDir = localDir + "/pack-dir";
+        SysConfig.localRepo = localDir.getLocalDir() + "/local-repo";
+        SysConfig.compileDir = localDir.getLocalDir() + "/compile-dir";
+        SysConfig.packDir = localDir.getLocalDir() + "/pack-dir";
         checkAndSetLocalDir();
         userService.checkOrSetAdmin();
     }
@@ -64,19 +77,19 @@ public class AfterAppStart implements ApplicationRunner {
      */
     private void checkAndSetLocalDir() {
         File localRepo = new File(SysConfig.localRepo);
-        if (!localRepo.exists() && !FileOps.mkdir(localRepo)) {
+        if (!localRepo.exists() && !FileOps.mkdirs(localRepo)) {
             log.error("{} 不存在且创建失败...", localRepo.getAbsolutePath());
             throw new IllegalArgumentException(localRepo.getAbsolutePath() + " 不存在且创建失败...");
         }
 
         File compileDir = new File(SysConfig.compileDir);
-        if (!compileDir.exists() && !FileOps.mkdir(compileDir)) {
+        if (!compileDir.exists() && !FileOps.mkdirs(compileDir)) {
             log.error("{} 不存在且创建失败...", compileDir.getAbsolutePath());
             throw new IllegalArgumentException(compileDir.getAbsolutePath() + " 不存在且创建失败...");
         }
 
         File packDir = new File(SysConfig.packDir);
-        if (!packDir.exists() && !FileOps.mkdir(packDir)) {
+        if (!packDir.exists() && !FileOps.mkdirs(packDir)) {
             log.error("{} 不存在且创建失败...", packDir.getAbsolutePath());
             throw new IllegalArgumentException(packDir.getAbsolutePath() + " 不存在且创建失败...");
         }