reghao 5 лет назад
Родитель
Сommit
07ce24d492
46 измененных файлов с 340 добавлено и 467 удалено
  1. 10 7
      common/src/main/java/cn/reghao/autodop/common/utils/NetworkUtil.java
  2. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/constant/ConfigType.java
  3. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/constant/EnvType.java
  4. 7 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildController.java
  5. 26 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/ConfigController.java
  6. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/ManageController.java
  7. 12 15
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/OrchestrateController.java
  8. 4 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppCompile.java
  9. 6 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppPack.java
  10. 4 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppUpdate.java
  11. 0 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppDeploy.java
  12. 21 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppRunning.java
  13. 0 23
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/ConfigFile.java
  14. 5 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java
  15. 5 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java
  16. 15 17
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestration.java
  17. 10 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/dao/AppDAO.java
  18. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/BuildLogRepository.java
  19. 12 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/CommitLogRepository.java
  20. 2 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/DeployLogRepository.java
  21. 44 13
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/LogRepository.java
  22. 2 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/orchestration/AppOrchestrationRepository.java
  23. 21 13
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildService.java
  24. 21 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/ConfigService.java
  25. 2 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/LogManager.java
  26. 5 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OrchestrateService.java
  27. 10 19
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppIntegrate.java
  28. 4 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuildDeployPipeline.java
  29. 21 14
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuildDispatcher.java
  30. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuilderUtil.java
  31. 19 25
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java
  32. 5 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/log/LogConsumer.java
  33. 1 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/updater/CodeUpdater.java
  34. 7 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/updater/CommitLog.java
  35. 2 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/updater/GitImpl.java
  36. 8 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/updater/SvnImpl.java
  37. 10 16
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployResult.java
  38. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildLogVO.java
  39. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/DeployLogVO.java
  40. 2 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/config/WebSecurityConfig.java
  41. 0 16
      dmaster/src/test/java/cn/reghao/autodop/common/notification/DingNotifyTest.java
  42. 0 18
      dmaster/src/test/java/cn/reghao/autodop/common/utils/compression/TarUtilTest.java
  43. 0 114
      dmaster/src/test/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestrationTest.java
  44. 0 47
      dmaster/src/test/java/cn/reghao/autodop/dmaster/app/entity/orchestration/ProjOrchestrationTest.java
  45. 0 23
      dmaster/src/test/java/cn/reghao/autodop/dmaster/app/service/tools/updater/GitImplTest.java
  46. 0 16
      dmaster/src/test/java/cn/reghao/autodop/dmaster/app/service/tools/updater/SvnImplTest.java

+ 10 - 7
common/src/main/java/cn/reghao/autodop/common/utils/NetworkUtil.java

@@ -3,11 +3,9 @@ package cn.reghao.autodop.common.utils;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
+import java.net.*;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Enumeration;
 import java.util.List;
 
@@ -50,8 +48,13 @@ public class NetworkUtil {
         private String address;
     }
 
-    public static void main(String[] args) throws SocketException {
-        List<IPAddress> list = NetworkUtil.ipv4();
-        System.out.println(list.get(0).getAddress());
+    public static void main(String[] args) throws SocketException, UnknownHostException {
+        /*List<IPAddress> list = NetworkUtil.ipv4();
+        System.out.println(list.get(0).getAddress());*/
+
+        String domain = "mq.reghao.cn";
+        domain = "taobao.com";
+        InetAddress[] addr = InetAddress.getAllByName(domain);
+        System.out.println(Arrays.toString(addr));
     }
 }

+ 3 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/constant/ConfigType.java

@@ -7,10 +7,11 @@ package cn.reghao.autodop.dmaster.app.constant;
  * @date 2019-10-18 14:31:29
  */
 public enum ConfigType {
-    appEnv("AppEnv"),
+    app("App"), env("Env"),
     localDir("LocalDir"), notifier("Notifier"),
     repo("Repo"), compiler("Compiler"), packer("Packer"),
-    repoAuth("RepoAuth");
+    repoAuth("RepoAuth"),
+    update("Update"), compile("Compile"), pack("Pack");
 
     private String value;
 

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/constant/AppEnv.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/constant/EnvType.java

@@ -6,12 +6,12 @@ package cn.reghao.autodop.dmaster.app.constant;
  * @author reghao
  * @date 2019-10-18 14:31:29
  */
-public enum AppEnv {
+public enum EnvType {
     dev("开发环境"), test("测试环境"), prod("生产环境");
 
     private String value;
 
-    AppEnv(String value) {
+    EnvType(String value) {
         this.value = value;
     }
 

+ 7 - 6
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.constant.AppEnv;
+import cn.reghao.autodop.dmaster.app.constant.EnvType;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import cn.reghao.autodop.dmaster.app.service.BuildService;
 import cn.reghao.autodop.dmaster.app.vo.AppToBuild;
@@ -87,14 +87,15 @@ public class BuildController {
         return WebResult.success("ok");
     }
 
-    @ApiOperation(value = "需要构建的应用")
+    @ApiOperation(value = "某个环境需要构建部署的应用")
     @GetMapping("/list")
     public ResponseEntity<String> buildList(@RequestParam("env") String env,
                                             @RequestParam("page") int page,
                                             @RequestParam("size") int size) {
-        String env1 = AppEnv.valueOf(env).name();
+        String env1 = EnvType.valueOf(env).name();
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
+        buildService.buildList1(env1, pageRequest);
         PageList<AppToBuild> pageList = buildService.buildList(env1, pageRequest);
         return ResponseEntity.ok().body(WebResult.success(pageList));
     }
@@ -104,7 +105,7 @@ public class BuildController {
     public ResponseEntity<String> commitLogs(@RequestParam("env") String env,
                                              @RequestParam("page") int page,
                                              @RequestParam("size") int size) {
-        String env1 = AppEnv.valueOf(env).name();
+        String env1 = EnvType.valueOf(env).name();
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "createTime"));
         PageList<CommitLogVO> pageList = buildService.commitLogs(env1, pageRequest);
@@ -116,7 +117,7 @@ public class BuildController {
     public ResponseEntity<String> buildLogs(@RequestParam("env") String env,
                                             @RequestParam("page") int page,
                                             @RequestParam("size") int size) {
-        String env1 = AppEnv.valueOf(env).name();
+        String env1 = EnvType.valueOf(env).name();
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "createTime"));
         PageList<BuildLogVO> pageList = buildService.buildLogs(env1, pageRequest);
@@ -128,7 +129,7 @@ public class BuildController {
     public ResponseEntity<String> deployLogs(@RequestParam("env") String env,
                                              @RequestParam("page") int page,
                                              @RequestParam("size") int size) {
-        String env1 = AppEnv.valueOf(env).name();
+        String env1 = EnvType.valueOf(env).name();
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "createTime"));
         PageList<DeployLogVO> pageList = buildService.deployLogs(env1, pageRequest);

+ 26 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/ConfigController.java

@@ -66,13 +66,21 @@ public class ConfigController {
         configService.delete(configType, uniqueKey);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
-    
+
+    /**
+     * 各种配置类型
+     *
+     * @param
+     * @return
+     * @date 2020-09-16 下午2:12
+     */
     @GetMapping("/types/{configType}")
     public ResponseEntity<String> getConfigType(@PathVariable("configType") String configType) {
         Map<String, String> map = new HashMap<>();
+        // TODO 配置类型可以动态修改
         switch (ConfigType.valueOf(configType)) {
             case localDir:
-                for (AppEnv config : AppEnv.values()) {
+                for (EnvType config : EnvType.values()) {
                     map.put(config.name(), config.getValue());
                 }
                 break;
@@ -101,6 +109,21 @@ public class ConfigController {
                     map.put(config.name(), config.getValue());
                 }
                 break;
+            case app:
+                for (AppType config : AppType.values()) {
+                    map.put(config.name(), config.getValue());
+                }
+                break;
+            case env:
+                for (EnvType config : EnvType.values()) {
+                    map.put(config.name(), config.getValue());
+                }
+                break;
+            case update:
+            case compile:
+            case pack:
+                map.putAll(configService.buildConfigs(configType));
+                break;
             default:
         }
 
@@ -109,7 +132,7 @@ public class ConfigController {
 
     @GetMapping("/{configType}/list")
     public ResponseEntity<String> getConfigList(@PathVariable("configType") String configType) throws Exception {
-        configService.buildConfigs();
+        configService.buildConfigs("");
         return ResponseEntity.ok().body(WebResult.success("pageList"));
     }
 }

+ 2 - 2
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.constant.AppEnv;
+import cn.reghao.autodop.dmaster.app.constant.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;
@@ -61,7 +61,7 @@ public class ManageController {
     public ResponseEntity<String> status(@RequestParam("env") String env,
                                          @RequestParam("page") int page,
                                          @RequestParam("size") int size) throws DockerException {
-        String env1 = AppEnv.valueOf(env).name();
+        String env1 = EnvType.valueOf(env).name();
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
         List<AppStatus> statusList = statusManager.status(env1, pageRequest);

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

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.controller;
 
-import cn.reghao.autodop.dmaster.app.constant.AppEnv;
+import cn.reghao.autodop.dmaster.app.constant.EnvType;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.service.OrchestrateService;
 import cn.reghao.autodop.dmaster.app.vo.BuildConfig;
@@ -47,21 +47,10 @@ public class OrchestrateController {
             default:
                 break;
         }*/
-        //orchestrateService.add(type, json);
+        orchestrateService.add(type, json);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
-    private void checkApp(AppOrchestration app) {
-        app.setConfigFiles(app.getConfigFiles().stream()
-                .filter(configFile -> !configFile.getName().isEmpty())
-                .collect(Collectors.toSet()));
-
-        app.setDependencyRepos(app.getDependencyRepos().stream()
-                .filter(dep -> !dep.isEmpty())
-                .collect(Collectors.toSet()));
-
-    }
-
     @ApiOperation(value = "拷贝项目/应用编排")
     @PostMapping(value = "/copy/{type}")
     public ResponseEntity<String> copyOrchestration(@PathVariable("type") int type,
@@ -88,7 +77,7 @@ public class OrchestrateController {
                                                         @RequestParam("env") String env,
                                                         @RequestParam("page") int page,
                                                         @RequestParam("size") int size) {
-        String env1 = AppEnv.valueOf(env).name();
+        String env1 = EnvType.valueOf(env).name();
         PageRequest pageRequest =
                 PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
         Object res = orchestrateService.getByPage(type, env1, pageRequest);
@@ -120,7 +109,15 @@ public class OrchestrateController {
     @ApiOperation(value = "获取编排应用时需要用到的配置")
     @GetMapping("/build")
     public ResponseEntity<String> buildConfigs() {
-        BuildConfig buildConfig = orchestrateService.buildConfig();
+        /*BuildConfig buildConfig = orchestrateService.buildConfig();
+        return ResponseEntity.ok().body(WebResult.success(buildConfig));*/
+        return ResponseEntity.ok().body(WebResult.success("buildConfig"));
+    }
+
+    @ApiOperation(value = "获取编排应用时需要用到的配置")
+    @GetMapping("/configs/{type}")
+    public ResponseEntity<String> getConfigs(@PathVariable("type") String type) {
+        BuildConfig buildConfig = orchestrateService.buildConfig(type);
         return ResponseEntity.ok().body(WebResult.success(buildConfig));
     }
 }

+ 4 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppCompile.java

@@ -1,7 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.build;
 
 import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
-import cn.reghao.autodop.dmaster.app.vo.ClassUtil;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -24,7 +23,10 @@ public class AppCompile extends BaseEntity {
     private String script;
 
     public AppCompile vo() {
-        ClassUtil.setParentFieldNull(this);
+        this.setId(null);
+        this.setIsDelete(null);
+        this.setCreateTime(null);
+        this.setUpdateTime(null);
         return this;
     }
 }

+ 6 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppPack.java

@@ -1,7 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.build;
 
 import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
-import cn.reghao.autodop.dmaster.app.vo.ClassUtil;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -19,12 +18,15 @@ public class AppPack extends BaseEntity {
     private String packerType;
     @Column(nullable = false, unique = true)
     private String packerName;
-    // 应用打包后存放的位置,可以是一个本地位置,也可以是一个网络位置
+    // 打包后的应用存放的位置,可以是一个本地位置,也可以是一个网络位置
     // 根据打包类型来确定
-    private String packerPath;
+    private String location;
 
     public AppPack vo() {
-        ClassUtil.setParentFieldNull(this);
+        this.setId(null);
+        this.setIsDelete(null);
+        this.setCreateTime(null);
+        this.setUpdateTime(null);
         return this;
     }
 }

+ 4 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppUpdate.java

@@ -1,7 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.build;
 
 import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
-import cn.reghao.autodop.dmaster.app.vo.ClassUtil;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -28,7 +27,10 @@ public class AppUpdate extends BaseEntity {
     private String password;
 
     public AppUpdate vo() {
-        ClassUtil.setParentFieldNull(this);
+        this.setId(null);
+        this.setIsDelete(null);
+        this.setCreateTime(null);
+        this.setUpdateTime(null);
         return this;
     }
 }

+ 0 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppDeploy.java

@@ -14,10 +14,6 @@ import java.util.Set;
 public class AppDeploy {
     @ElementCollection(fetch = FetchType.EAGER)
     private Set<String> hosts;
-    private int httpPort;
-    private String healthCheck;
     // 绝对路径
     private String runningDir;
-    @ElementCollection(fetch = FetchType.EAGER)
-    private Set<AppLog> logs;
 }

+ 21 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppRunning.java

@@ -0,0 +1,21 @@
+package cn.reghao.autodop.dmaster.app.entity.deploy;
+
+import lombok.Data;
+
+import javax.persistence.ElementCollection;
+import javax.persistence.Embeddable;
+import javax.persistence.FetchType;
+import java.util.Set;
+
+/**
+ * @author reghao
+ * @date 2020-05-13 16:59:20
+ */
+@Data
+@Embeddable
+public class AppRunning {
+    private int httpPort;
+    private String healthCheck;
+    @ElementCollection(fetch = FetchType.EAGER)
+    private Set<AppLog> logs;
+}

+ 0 - 23
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/ConfigFile.java

@@ -1,23 +0,0 @@
-package cn.reghao.autodop.dmaster.app.entity.deploy;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.Embeddable;
-import javax.validation.constraints.NotNull;
-
-/**
- * @author reghao
- * @date 2020-05-19 09:24:41
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Embeddable
-public class ConfigFile {
-    @NotNull
-    private String name;
-    @NotNull
-    private String content;
-}

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

@@ -3,7 +3,6 @@ package cn.reghao.autodop.dmaster.app.entity.log;
 import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -30,16 +29,18 @@ public class BuildLog extends BaseEntity {
     @Column(length = 1024)
     private String errDetail;
 
+    private String appId;
+    private String appType;
+    private String env;
     @ManyToOne(cascade = CascadeType.DETACH)
-    @JoinColumn(name = "app_orchestration_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
-    private AppOrchestration app;
+    @JoinColumn(name = "commit_log_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
+    private CommitLog commitLog;
     @ManyToOne(cascade = CascadeType.DETACH)
     @JoinColumn(name = "app_compile_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private AppCompile appCompile;
     @ManyToOne(cascade = CascadeType.DETACH)
     @JoinColumn(name = "app_pack_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private AppPack appPack;
-    private CommitLog commitLog;
     private String appPath;
     private long updateTotalTime;
     private long compileTotalTime;

+ 5 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java

@@ -6,7 +6,6 @@ import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import javax.persistence.*;
-import java.util.Set;
 
 /**
  * 应用部署日志
@@ -19,12 +18,12 @@ import java.util.Set;
 @EqualsAndHashCode(callSuper = false)
 @Entity
 public class DeployLog extends BaseEntity {
-    // 0 - 全部成功 1 - 部分成功或全部失败
-    private int statusCode;
     @ManyToOne(cascade = CascadeType.DETACH)
     @JoinColumn(name = "build_log_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private BuildLog buildLog;
-    private long deployTotalTime;
-    @ElementCollection(fetch = FetchType.EAGER)
-    private Set<DeployResult> deployResults;
+    private long deployTime;
+    private String host;
+    // 0 - 全部成功 1 - 部分成功或全部失败
+    private int statusCode;
+    private String msg;
 }

+ 15 - 17
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestration.java

@@ -4,13 +4,12 @@ import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.Notification;
 import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
 import cn.reghao.autodop.dmaster.app.entity.deploy.AppDeploy;
-import cn.reghao.autodop.dmaster.app.entity.deploy.ConfigFile;
+import cn.reghao.autodop.dmaster.app.entity.deploy.AppRunning;
 import cn.reghao.autodop.dmaster.auth.entity.Role;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import javax.persistence.*;
-import java.util.Set;
 
 /**
  * TODO 添加定时构建部署参数
@@ -22,30 +21,30 @@ import java.util.Set;
 @EqualsAndHashCode(callSuper = false)
 @Entity
 public class AppOrchestration extends BaseEntity implements Cloneable {
+    /* 不可更改的属性 */
     @Column(nullable = false, unique = true)
     private String appId;
     @Column(nullable = false)
     private String appType;
+    @Column(nullable = false)
+    private String env;
+    @Column(nullable = false)
+    private String appRepo;
+    private String branch;
+
     // 应用代码所在目录的名字
     @Column(nullable = false)
     private String dirname;
+    // 编译 app 时所处的目录,以仓库目录为起点
+    private String compileDir;
+
     private String description;
-    @Column(nullable = false)
-    private String env;
     // 是否总是构建
     @Column(nullable = false)
     private boolean alwaysBuild;
-    // 编译 app 时所处的目录,以仓库目录为起点
-    private String compileDir;
-    // 配置文件
-    @ElementCollection(fetch = FetchType.EAGER)
-    private Set<ConfigFile> configFiles;
+    // 是否启用编排
     @Column(nullable = false)
-    private String appRepo;
-    private String branch;
-    @Column(length = 1024)
-    @ElementCollection(fetch = FetchType.EAGER)
-    private Set<String> dependencyRepos;
+    private boolean enable;
 
     // projId 和 appBuild 二者只能存在一个
     @ManyToOne(cascade = CascadeType.PERSIST)
@@ -53,15 +52,14 @@ public class AppOrchestration extends BaseEntity implements Cloneable {
     private ProjOrchestration proj;
     private AppBuild appBuild;
     private AppDeploy appDeploy;
+    private AppRunning appRunning;
+
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "notification_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private Notification notification;
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "role_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private Role role;
-    // 是否启用编排
-    @Column(nullable = false)
-    private boolean enable;
     // TODO 添加定时构建部署选项
     // TODO 接入到项目管理系统
 

+ 10 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/dao/AppDAO.java

@@ -19,6 +19,16 @@ public class AppDAO {
         this.em = em;
     }
 
+    public List findAppBuildLog() {
+        String hql = "select app.appId,app.env,log.commitLog.commitId,log.msg " +
+                "from AppOrchestration app,BuildLog log " +
+                "where app.env=:env and log.app = app and app.enable=:enable and log.id in " +
+                "(select max(id) from BuildLog log1 group by log1.app.id) " +
+                "order by log.updateTime desc";
+
+        return null;
+    }
+
     public List findBuildApps(String env) {
         try (Session session = (Session) em.getDelegate()) {
             // 实际执行 cross join

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/BuildLogRepository.java

@@ -3,7 +3,7 @@ package cn.reghao.autodop.dmaster.app.repository.log;
 import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
-import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
+import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -13,8 +13,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
  * @date 2020-01-21 14:53:03
  */
 public interface BuildLogRepository extends JpaRepository<BuildLog, Long> {
-    Page<BuildLog> findByAppEnv(String env, Pageable pageable);
+    Page<BuildLog> findByAppId(String env, Pageable pageable);
     // 应用每个版本正确构建的日志只有唯一一条记录
-    BuildLog findByAppAndAppCompileAndAppPackAndCommitLog_CommitIdAndStatusCode(
-            AppOrchestration app, AppCompile appCompile, AppPack appPack, String commitId, int statusCode);
+    BuildLog findByCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
+            CommitLog commitLog, AppCompile appCompile, AppPack appPack, String appId, int statusCode);
 }

+ 12 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/CommitLogRepository.java

@@ -0,0 +1,12 @@
+package cn.reghao.autodop.dmaster.app.repository.log;
+
+import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+/**
+ * @author reghao
+ * @date 2020-01-21 14:53:03
+ */
+public interface CommitLogRepository extends JpaRepository<CommitLog, Long> {
+    CommitLog findByCommitId(String commitId);
+}

+ 2 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/DeployLogRepository.java

@@ -13,7 +13,6 @@ import java.util.List;
  * @date 2020-01-21 14:53:03
  */
 public interface DeployLogRepository extends JpaRepository<DeployLog, Long> {
-    List<DeployLog> findByBuildLogOrderByCreateTimeDesc(BuildLog buildLog);
-    DeployLog findFirstByBuildLogOrderByCreateTimeDesc(BuildLog buildLog);
-    Page<DeployLog> findByBuildLog_App_Env(String env, Pageable pageable);
+    List<DeployLog> findByBuildLog(BuildLog buildLog);
+    Page<DeployLog> findByBuildLog(BuildLog buildLog, Pageable pageable);
 }

+ 44 - 13
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/LogRepository.java

@@ -3,14 +3,22 @@ package cn.reghao.autodop.dmaster.app.repository.log;
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployedApp;
 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.repository.deploy.DeployedAppRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
+import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
+import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 持久化构建、部署日志
@@ -21,15 +29,18 @@ import java.time.LocalDateTime;
 @Slf4j
 @Repository
 public class LogRepository {
+    private CommitLogRepository commitLogRepository;
     private BuildLogRepository buildLogRepository;
     private DeployLogRepository deployLogRepository;
     private DeployedAppRepository deployedAppRepository;
     private AppOrchestrationRepository appRepository;
 
-    public LogRepository(BuildLogRepository buildLogRepository,
+    public LogRepository(CommitLogRepository commitLogRepository,
+                         BuildLogRepository buildLogRepository,
                          DeployLogRepository deployLogRepository,
                          DeployedAppRepository deployedAppRepository,
                          AppOrchestrationRepository appRepository) {
+        this.commitLogRepository = commitLogRepository;
         this.buildLogRepository = buildLogRepository;
         this.deployLogRepository = deployLogRepository;
         this.deployedAppRepository = deployedAppRepository;
@@ -38,11 +49,21 @@ public class LogRepository {
 
     @Transactional(rollbackFor = {Exception.class})
     public void saveBuildLog(BuildLog buildLog) {
-        AppOrchestration app = buildLog.getApp();
-        String commitId = buildLog.getCommitLog().getCommitId();
-        BuildLog entity = buildLogRepository.findByAppAndAppCompileAndAppPackAndCommitLog_CommitIdAndStatusCode(
-                app, app.getAppBuild().getAppCompile(), app.getAppBuild().getAppPack(), commitId, 0);
-        // BuildLog 已存在时不再更新
+        CommitLog commitLog = buildLog.getCommitLog();
+        CommitLog e = commitLogRepository.findByCommitId(commitLog.getCommitId());
+        if (e != null) {
+            buildLog.setCommitLog(e);
+        } else {
+            commitLog.setIsDelete(false);
+            LocalDateTime now = LocalDateTime.now();
+            commitLog.setCreateTime(now);
+            commitLog.setUpdateTime(now);
+            commitLogRepository.save(commitLog);
+        }
+
+        BuildLog entity = buildLogRepository.findByCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
+                commitLog, buildLog.getAppCompile(), buildLog.getAppPack(), buildLog.getAppId(), 0);
+        // 当前 commit 构建成功的 BuildLog 已存在时不再更新
         if (entity == null) {
             buildLog.setIsDelete(false);
             LocalDateTime now = LocalDateTime.now();
@@ -54,7 +75,7 @@ public class LogRepository {
 
     @Transactional(rollbackFor = {Exception.class})
     public void saveDeployLog(DeployLog deployLog) {
-        BuildLog buildLog = deployLog.getBuildLog();
+        /*BuildLog buildLog = deployLog.getBuildLog();
         AppOrchestration app = buildLog.getApp();
         String commitId = buildLog.getCommitLog().getCommitId();
         BuildLog entity = buildLogRepository.findByAppAndAppCompileAndAppPackAndCommitLog_CommitIdAndStatusCode(
@@ -66,11 +87,11 @@ public class LogRepository {
             deployLog.setCreateTime(now);
             deployLog.setUpdateTime(now);
             deployLogRepository.save(deployLog);
-        }
+        }*/
     }
 
     private void saveOrUpdateDeployedApp(BuildLog buildLog) {
-        AppOrchestration app = buildLog.getApp();
+        /*AppOrchestration app = buildLog.getApp();
         DeployedApp entity = deployedAppRepository.findByApp(app);
         // TODO 新增或更新
         if (entity == null) {
@@ -80,13 +101,23 @@ public class LogRepository {
             entity.setCommitId(buildLog.getCommitLog().getCommitId());
             entity.setUpdateTime(LocalDateTime.now());
             deployedAppRepository.save(entity);
-        }
+        }*/
     }
 
     private DeployedApp deployedApp(BuildLog buildLog) {
         DeployedApp deployedApp = new DeployedApp();
-        deployedApp.setApp(buildLog.getApp());
-        deployedApp.setCommitId(buildLog.getCommitLog().getCommitId());
+        /*deployedApp.setApp(buildLog.getApp());
+        deployedApp.setCommitId(buildLog.getCommitLog().getCommitId());*/
         return deployedApp;
     }
+
+    public void test() {
+        Specification spec = new Specification<BuildDeployResult>() {
+            @Override
+            public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) {
+                List<Predicate> list = new ArrayList<>();
+                return null;
+            }
+        };
+    }
 }

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

@@ -15,7 +15,8 @@ import javax.transaction.Transactional;
  */
 public interface AppOrchestrationRepository extends JpaRepository<AppOrchestration, Long> {
     Page<AppOrchestration> findByEnv(String env, Pageable pageable);
-    Page<AppOrchestration> findAllByEnableIsTrueAndIsDeleteIsFalseAndEnv(String env, Pageable pageable);
+    Page<AppOrchestration> findByIsDeleteFalseAndEnvAndAppType(String env, String appType, Pageable pageable);
+    Page<AppOrchestration> findAllByIsDeleteIsFalseAndEnableIsTrueAndEnv(String env, Pageable pageable);
     AppOrchestration findByAppId(String appId);
     AppOrchestration findByAppRepoAndBranch(String appRepo, String branch);
 

+ 21 - 13
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildService.java

@@ -9,10 +9,7 @@ import cn.reghao.autodop.dmaster.app.repository.log.DeployLogRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.*;
 import cn.reghao.autodop.dmaster.app.vo.AppToBuild;
 import cn.reghao.autodop.dmaster.app.vo.PageList;
-import cn.reghao.autodop.dmaster.app.vo.log.BuildLogVO;
-import cn.reghao.autodop.dmaster.app.vo.log.CommitLogVO;
-import cn.reghao.autodop.dmaster.app.vo.log.DeployLogVO;
-import cn.reghao.autodop.dmaster.app.vo.log.DeployResultVO;
+import cn.reghao.autodop.dmaster.app.vo.log.*;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
@@ -43,9 +40,20 @@ public class BuildService {
         this.appDAO = appDAO;
     }
 
+    public PageList<BuildDeployResult> buildList1(String env, PageRequest pageRequest) {
+        List<BuildDeployResult> results = new ArrayList<>();
+        Page<AppOrchestration> apps = appRepository.findAllByIsDeleteIsFalseAndEnableIsTrueAndEnv(env, pageRequest);
+        // 找出每个 app 最新的构建日志
+
+        // 若 app 构建成功,则找出其部署日志
+
+        return null;
+    }
+
     public PageList<AppToBuild> buildList(String env, PageRequest pageRequest) {
         PageList<AppToBuild> pageList = new PageList<>();
-        Page<AppOrchestration> apps = appRepository.findAllByEnableIsTrueAndIsDeleteIsFalseAndEnv(env, pageRequest);
+        // 找出所有需要构建部署的应用
+        Page<AppOrchestration> apps = appRepository.findAllByIsDeleteIsFalseAndEnableIsTrueAndEnv(env, pageRequest);
         pageList.setTotalSize(apps.getTotalElements());
         pageList.setTotalPages(apps.getTotalPages());
         Set<String> appIds = apps.stream()
@@ -71,18 +79,18 @@ public class BuildService {
     }
 
     public PageList<CommitLogVO> commitLogs(String env, PageRequest pageRequest) {
-        Page<BuildLog> buildLogs = buildLogRepository.findByAppEnv(env, pageRequest);
+        Page<BuildLog> buildLogs = buildLogRepository.findByAppId(env, pageRequest);
         PageList<CommitLogVO> pageList = new PageList<>();
         pageList.setTotalSize(buildLogs.getTotalElements());
         pageList.setTotalPages(buildLogs.getTotalPages());
-        pageList.setList(buildLogs.getContent().stream()
+        /*pageList.setList(buildLogs.getContent().stream()
                 .map(buildLog -> CommitLogVO.of(buildLog.getApp().getAppId(), buildLog.getCommitLog()))
-                .collect(Collectors.toList()));
+                .collect(Collectors.toList()));*/
         return pageList;
     }
 
     public PageList<BuildLogVO> buildLogs(String env, PageRequest pageRequest) {
-        Page<BuildLog> buildLogs = buildLogRepository.findByAppEnv(env, pageRequest);
+        Page<BuildLog> buildLogs = buildLogRepository.findByAppId(env, pageRequest);
         PageList<BuildLogVO> pageList = new PageList<>();
         pageList.setTotalSize(buildLogs.getTotalElements());
         pageList.setTotalPages(buildLogs.getTotalPages());
@@ -94,23 +102,23 @@ public class BuildService {
     }
 
     public PageList<DeployLogVO> deployLogs(String env, PageRequest pageRequest) {
-        Page<DeployLog> deployLogs = deployLogRepository.findByBuildLog_App_Env(env, pageRequest);
+        Page<DeployLog> deployLogs = deployLogRepository.findByBuildLog(null, pageRequest);
         PageList<DeployLogVO> pageList = new PageList<>();
         pageList.setTotalSize(deployLogs.getTotalElements());
         pageList.setTotalPages(deployLogs.getTotalPages());
 
-        List<DeployLogVO> list = new ArrayList<>();
+        /*List<DeployLogVO> list = new ArrayList<>();
         for (DeployLog deployLog : deployLogs) {
             BuildLog buildLog = deployLog.getBuildLog();
             String appId = buildLog.getApp().getAppId();
             String commitId = buildLog.getCommitLog().getCommitId();
 
-            Set<DeployResultVO> deployResultVOS = deployLog.getDeployResults().stream()
+            Set<DeployResultVO> deployResultVOS = deployLogs.stream()
                     .map(DeployResultVO::of)
                     .collect(Collectors.toSet());
             list.add(new DeployLogVO(appId, env, commitId, deployResultVOS));
         }
-        pageList.setList(list);
+        pageList.setList(list);*/
         return pageList;
     }
 }

+ 21 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/ConfigService.java

@@ -21,6 +21,7 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -250,8 +251,26 @@ public class ConfigService {
         }
     }
 
-    public Map<String, Map<String, String[]>> buildConfigs() {
-        Map<String, Map<String, String[]>> map = configDAO.buildConfigs();
+    public Map<String, String> buildConfigs(String buildConfig) {
+        Map<String, String> map = new HashMap<>();
+        switch (ConfigType.valueOf(buildConfig)) {
+            case update:
+                for (AppUpdate appUpdate : updateRepository.findAll()) {
+                    map.put(appUpdate.getRepoType(), appUpdate.getRepoName());
+                }
+                break;
+            case compile:
+                for (AppCompile appCompile : compileRepository.findAll()) {
+                    map.put(appCompile.getCompilerType(), appCompile.getCompilerName());
+                }
+                break;
+            case pack:
+                for (AppPack appPack : packRepository.findAll()) {
+                    map.put(appPack.getPackerType(), appPack.getPackerName());
+                }
+                break;
+            default:
+        }
         return map;
     }
 }

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

@@ -25,8 +25,7 @@ public class LogManager {
 
     public List<LogFile> logFiles(String appId, String host) throws Exception {
         AppOrchestration app = caching.findByAppId(appId);
-        AppDeploy appDeploy = app.getAppDeploy();
-        Set<AppLog> appLogs = appDeploy.getLogs();
+        Set<AppLog> appLogs = app.getAppRunning().getLogs();
         if (appLogs.isEmpty()) {
             throw new Exception("日志未配置");
         }
@@ -45,8 +44,7 @@ public class LogManager {
 
     public List<String> logContent(String appId, String logType, String logLevel, String logName) throws Exception {
         AppOrchestration app = caching.findByAppId(appId);
-        AppDeploy appDeploy = app.getAppDeploy();
-        Set<AppLog> appLogs = appDeploy.getLogs();
+        Set<AppLog> appLogs = app.getAppRunning().getLogs();
         if (appLogs.isEmpty()) {
             throw new Exception("日志未配置");
         }

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

@@ -121,10 +121,10 @@ public class OrchestrateService {
                     app.setAppId(to);
                     app.setId(null);
                     // TODO 复制共享引用
-                    app.setConfigFiles(null);
+                    /*
                     app.setDependencyRepos(null);
                     app.getAppDeploy().setHosts(null);
-                    app.getAppDeploy().setLogs(null);
+                    app.getAppDeploy().setLogs(null);*/
                     saveApp(app);
                     return true;
                 }
@@ -262,7 +262,9 @@ public class OrchestrateService {
         }
     }
 
-    public BuildConfig buildConfig() {
+    public BuildConfig buildConfig(String type) {
+
+
         BuildConfig buildConfig = repository.buildConfig();
         repository.projs(buildConfig);
         return buildConfig;

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

@@ -5,7 +5,6 @@ import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
 import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
 import cn.reghao.autodop.dmaster.app.entity.build.AppUpdate;
-import cn.reghao.autodop.dmaster.app.constant.AppStage;
 import cn.reghao.autodop.dmaster.app.constant.CompilerType;
 import cn.reghao.autodop.common.deploy.PackerType;
 import cn.reghao.autodop.dmaster.app.constant.RepoType;
@@ -29,6 +28,7 @@ import lombok.extern.slf4j.Slf4j;
 import java.io.File;
 import java.io.IOException;
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -126,7 +126,7 @@ public class AppIntegrate {
         // 初始化打包配置
         AppPack appPack = appBuild.getAppPack();
         if (appPack.getPackerType().equals(PackerType.docker.name())) {
-            codePacker = new DockerPack(appPack.getPackerPath());
+            codePacker = new DockerPack(appPack.getLocation());
         } else if (appPack.getPackerType().equals(PackerType.zip.name())) {
             codePacker = new ZipPack(appPackDir);
         }
@@ -136,7 +136,11 @@ public class AppIntegrate {
     // TODO 处理集群部署时,不同节点使用不同配置文件的问题
     public BuildLog build() {
         BuildLog buildLog = new BuildLog();
-        buildLog.setApp(app);
+        buildLog.setAppId(app.getAppId());
+        buildLog.setAppType(app.getAppType());
+        buildLog.setEnv(app.getEnv());
+        buildLog.setAppCompile(app.getAppBuild().getAppCompile());
+        buildLog.setAppPack(app.getAppBuild().getAppPack());
 
         boolean isUpdate;
         try {
@@ -180,8 +184,6 @@ public class AppIntegrate {
 
         buildLog.setMsg("构建成功");
         buildLog.setStatusCode(0);
-        buildLog.setAppCompile(app.getAppBuild().getAppCompile());
-        buildLog.setAppPack(app.getAppBuild().getAppPack());
         buildLog.setBuildTime(LocalDateTime.now());
         return buildLog;
     }
@@ -233,15 +235,6 @@ public class AppIntegrate {
         }
 
         // TODO 拉取应用依赖的其他仓库(若存在)
-        Set<String> deps = app.getDependencyRepos();
-        if (app.getProj() == null && deps != null) {
-            for (String repo : deps) {
-                if (!repo.isEmpty()) {
-                    codeUpdater.update(repo, app.getBranch(), appLocalRepo + app.getDirname());
-                }
-            }
-        }
-
         return new UpdateStatus(current, true);
     }
 
@@ -257,12 +250,10 @@ public class AppIntegrate {
     }
 
     /* 部署 */
-    public DeployLog deploy(BuildLog buildLog, Set<String> hosts) {
-        long totalTime = System.currentTimeMillis();
-        DeployLog deployLog = appDeployer.deploy(buildLog, hosts);
-        deployLog.setDeployTotalTime(System.currentTimeMillis() - totalTime);
+    public List<DeployLog> deploy(BuildLog buildLog, Set<String> hosts) {
+        List<DeployLog> deployLogs = appDeployer.deploy(buildLog, app.getAppDeploy(), hosts);
         log.info("{} 部署完成...", app.getAppId());
-        return deployLog;
+        return deployLogs;
     }
 
     @Data

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

@@ -6,6 +6,7 @@ import cn.reghao.autodop.dmaster.app.service.log.LogConsumer;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.List;
 import java.util.concurrent.Callable;
 
 /**
@@ -43,9 +44,9 @@ public class BuildDeployPipeline implements Callable<BuildDeployResult> {
         }
 
         if (buildLog.getStatusCode() == 0 && isDeploy) {
-            DeployLog deployLog = appIntegrate.deploy(buildLog, null);
-            logConsumer.addDeployLog(deployLog);
-            return BuildDeployResult.fromDeployLog(deployLog);
+            List<DeployLog> deployLogs = appIntegrate.deploy(buildLog, null);
+            logConsumer.addDeployLogs(deployLogs);
+            return BuildDeployResult.fromDeployLogs(deployLogs);
         } else {
             return BuildDeployResult.fromBuildLog(buildLog);
         }

+ 21 - 14
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuildDispatcher.java

@@ -5,13 +5,15 @@ import cn.reghao.autodop.common.notification.Notify;
 import cn.reghao.autodop.dmaster.app.cache.OrchestrationCache;
 import cn.reghao.autodop.dmaster.app.constant.NotifierType;
 import cn.reghao.autodop.dmaster.app.entity.Notification;
+import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
 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.log.DeployResult;
 import cn.reghao.autodop.dmaster.app.repository.log.BuildLogRepository;
+import cn.reghao.autodop.dmaster.app.repository.log.CommitLogRepository;
 import cn.reghao.autodop.dmaster.app.repository.log.DeployLogRepository;
 import cn.reghao.autodop.dmaster.app.service.deploy.AppDeployer;
 import cn.reghao.autodop.dmaster.app.service.deploy.NotifyTask;
+import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.log.LogRepository;
@@ -34,6 +36,7 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class BuildDispatcher {
+    private CommitLogRepository commitLogRepository;
     private BuildLogRepository buildLogRepository;
     private DeployLogRepository deployLogRepository;
     private AppDeployer appDeployer;
@@ -45,10 +48,12 @@ public class BuildDispatcher {
     private ExecutorService threadPool;
 
     public BuildDispatcher(AppDeployer appDeployer,
+                           CommitLogRepository commitLogRepository,
                            BuildLogRepository buildLogRepository,
                            DeployLogRepository deployLogRepository,
                            OrchestrationCache caching,
                            LogRepository logDAO) {
+        this.commitLogRepository = commitLogRepository;
         this.buildLogRepository = buildLogRepository;
         this.deployLogRepository = deployLogRepository;
         this.appDeployer = appDeployer;
@@ -105,21 +110,23 @@ public class BuildDispatcher {
 
     public BuildDeployResult deploy(String appId, String commitId) {
         AppOrchestration app = caching.findByAppId(appId);
-        BuildLog buildLog = buildLogRepository.findByAppAndAppCompileAndAppPackAndCommitLog_CommitIdAndStatusCode(
-                app, app.getAppBuild().getAppCompile(), app.getAppBuild().getAppPack(), commitId, 0);
+        CommitLog commitLog = commitLogRepository.findByCommitId(commitId);
+        AppBuild appBuild = app.getAppBuild();
+        BuildLog buildLog = buildLogRepository.findByCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
+                commitLog, appBuild.getAppCompile(), appBuild.getAppPack(), appId, 0);
         if (buildLog != null) {
+            Set<String> toDeployHosts = app.getAppDeploy().getHosts();
             // 当前 commit 最近一次部署的结果
-            DeployLog deployLog = deployLogRepository.findFirstByBuildLogOrderByCreateTimeDesc(buildLog);
-            if (deployLog.getStatusCode() != 0) {
-                // 找出当前 commit 未部署成功的节点,重新部署
-                Set<String> hosts = deployLog.getDeployResults().stream()
-                        .filter(deployResult -> deployResult.getStatusCode() != 0)
-                        .map(DeployResult::getHost)
-                        .collect(Collectors.toSet());
-
-                DeployLog deployLog1 = getAppIntegrate(app).deploy(buildLog, hosts);
-                logConsumer.addDeployLog(deployLog1);
-                BuildDeployResult buildDeployResult = BuildDeployResult.fromDeployLog(deployLog1);
+            List<DeployLog> deployLogs = deployLogRepository.findByBuildLog(buildLog);
+            Set<String> hosts = deployLogs.stream()
+                    .filter(deployLog -> deployLog.getStatusCode() != 0)
+                    .map(DeployLog::getHost)
+                    .collect(Collectors.toSet());
+            // TODO 比较 toDeployHosts 和 hosts,查看是否有新添加但未部署的主机
+            if (!hosts.isEmpty()) {
+                List<DeployLog> deployLogs1 = getAppIntegrate(app).deploy(buildLog, hosts);
+                logConsumer.addDeployLogs(deployLogs1);
+                BuildDeployResult buildDeployResult = BuildDeployResult.fromDeployLogs(deployLogs1);
                 notifyAsync(app, buildDeployResult);
                 return buildDeployResult;
             } else {

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

@@ -51,14 +51,14 @@ public class BuilderUtil {
 
     private static void copy(String from, String to, AppOrchestration app) throws IOException {
         FileUtil.copyDirToDir(from + "/" + app.getDirname(), to);
-        Set<String> dep = app.getDependencyRepos();
+        /*Set<String> dep = app.getDependencyRepos();
         if (dep != null && !dep.isEmpty()) {
             for (String repo : dep) {
                 if (!repo.isEmpty()) {
                     FileUtil.copyDirToDir(from + dirname(repo), to);
                 }
             }
-        }
+        }*/
     }
 
     /**

+ 19 - 25
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java

@@ -8,13 +8,11 @@ import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
 import cn.reghao.autodop.dmaster.app.entity.deploy.AppDeploy;
 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.log.DeployResult;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.common.exception.ExceptionUtil;
 import cn.reghao.autodop.dmaster.common.thread.ThreadPoolWrapper;
 import org.springframework.stereotype.Component;
 
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -40,13 +38,10 @@ public class AppDeployer {
      * @return
      * @date 2020-03-13 下午1:00
      */
-    public DeployLog deploy(BuildLog buildLog, Set<String> hosts) {
-        AppOrchestration app = buildLog.getApp();
-        AppPack appPack = app.getAppBuild().getAppPack();
-        AppDeploy appDeploy = app.getAppDeploy();
-
+    public List<DeployLog> deploy(BuildLog buildLog, AppDeploy appDeploy, Set<String> hosts) {
+        AppPack appPack = buildLog.getAppPack();
         DeployConfig deployConfig = new DeployConfig();
-        deployConfig.setAppId(app.getAppId());
+        deployConfig.setAppId(buildLog.getAppId());
         deployConfig.setAppPath(buildLog.getAppPath());
         deployConfig.setPackerType(appPack.getPackerType());
         deployConfig.setRunningDir(appDeploy.getRunningDir());
@@ -54,14 +49,14 @@ public class AppDeployer {
         if (hosts == null) {
             hosts = appDeploy.getHosts();
         }
+
+        long startTime = System.currentTimeMillis();
         Map<String, Future<RpcResult>> futureMap = new HashMap<>();
         for (String host : hosts) {
             futureMap.put(host, threadPool.submit(new AppDeployTask(sender, deployConfig, host)));
         }
 
-        DeployLog deployLog = new DeployLog();
-        deployLog.setBuildLog(buildLog);
-        Set<DeployResult> deployResults = new HashSet<>();
+        List<DeployLog> deployLogs = new ArrayList<>();
         for (Map.Entry<String, Future<RpcResult>> entry : futureMap.entrySet()) {
             String host = entry.getKey();
             Future<RpcResult> future = entry.getValue();
@@ -74,33 +69,32 @@ public class AppDeployer {
                 }
             }
 
-            DeployResult deployResult = new DeployResult();
-            deployResult.setHost(host);
-            deployResult.setDeployTime(LocalDateTime.now());
+            DeployLog deployLog = new DeployLog();
+            deployLog.setBuildLog(buildLog);
+            deployLog.setHost(host);
+            deployLog.setDeployTime(System.currentTimeMillis()-startTime);
             try {
                 RpcResult rpcResult = future.get();
                 if (rpcResult != null) {
-                    deployResult.setStatusCode(rpcResult.getStatusCode());
-                    deployResult.setMsg(rpcResult.getMsg());
+                    deployLog.setStatusCode(rpcResult.getStatusCode());
+                    deployLog.setMsg(rpcResult.getMsg());
                 } else {
-                    deployResult.setStatusCode(1);
-                    deployResult.setMsg("RPC 调用失败");
+                    deployLog.setStatusCode(1);
+                    deployLog.setMsg("RPC 调用失败");
                 }
             } catch (InterruptedException | ExecutionException e) {
-                deployResult.setStatusCode(1);
-                deployResult.setMsg(ExceptionUtil.errorMsg(e));
+                deployLog.setStatusCode(1);
+                deployLog.setMsg(ExceptionUtil.errorMsg(e));
             }
-            deployResults.add(deployResult);
+            deployLogs.add(deployLog);
         }
-
-        deployLog.setDeployResults(deployResults);
-        return deployLog;
+        return deployLogs;
     }
 
     private String appPath(AppOrchestration app, String commitId) {
         String appId = app.getAppId();
         AppPack appPack = app.getAppBuild().getAppPack();
-        String packerPath = appPack.getPackerPath();
+        String packerPath = appPack.getLocation();
         switch (PackerType.valueOf(appPack.getPackerType())) {
             case docker:
                 return packerPath + appId + ":" + commitId;

+ 5 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/log/LogConsumer.java

@@ -5,6 +5,7 @@ import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import cn.reghao.autodop.dmaster.app.repository.log.LogRepository;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 
@@ -27,8 +28,8 @@ public class LogConsumer implements Runnable {
         logQueue.add(buildLog);
     }
 
-    public void addDeployLog(DeployLog deployLog) {
-        logQueue.add(deployLog);
+    public void addDeployLogs(List<DeployLog> deployLogs) {
+        logQueue.addAll(deployLogs);
     }
 
     @Override
@@ -40,11 +41,11 @@ public class LogConsumer implements Runnable {
                 if (object instanceof BuildLog) {
                     BuildLog buildLog = (BuildLog) object;
                     logDAO.saveBuildLog(buildLog);
-                    log.info("持久化 {} 构建日志完成...", buildLog.getApp().getAppId());
+                    log.info("持久化 {} 构建日志完成...", buildLog.getAppId());
                 } else if (object instanceof DeployLog) {
                     DeployLog deployLog = (DeployLog) object;
                     logDAO.saveDeployLog(deployLog);
-                    log.info("持久化 {} 部署日志完成...", deployLog.getBuildLog().getApp().getAppId());
+                    log.info("持久化 {} 部署日志完成...", deployLog.getBuildLog().getAppId());
                 }
             } catch (InterruptedException e) {
                 // 中断线程

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

@@ -29,6 +29,7 @@ public interface CodeUpdater {
 
     /**
      * 本地代码仓库最近一次提交的信息
+     * TODO 并不能获取到远程仓库的 URL,需要在调用后手动设置
      *
      * @param local 本地代码仓库路径
      * @date 2019-10-30 下午5:23

+ 7 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/updater/CommitLog.java

@@ -1,6 +1,8 @@
 package cn.reghao.autodop.dmaster.app.service.tools.updater;
 
+import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import javax.persistence.*;
 import java.util.List;
@@ -12,8 +14,11 @@ import java.util.List;
  * @date 2020-05-13 22:50:38
  */
 @Data
-@Embeddable
-public class CommitLog {
+@EqualsAndHashCode(callSuper = false)
+@Entity
+public class CommitLog extends BaseEntity {
+    private String remote;
+    private String branch;
     private String commitId;
     private String commitAuthor;
     private String commitMsg;

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

@@ -96,6 +96,8 @@ public class GitImpl implements CodeUpdater {
                 commitLog.setChangedFiles(changedFileList(repo, branch));
             }
         }
+        commitLog.setRemote(remote);
+        commitLog.setBranch(branch);
         return commitLog;
     }
 

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

@@ -45,7 +45,10 @@ public class SvnImpl implements CodeUpdater {
                     true, false);
         }
 
-        return lastCommitInfo(local, branch);
+        CommitLog commitLog = lastCommitInfo(local, branch);
+        commitLog.setRemote(remote);
+        commitLog.setBranch(branch);
+        return commitLog;
     }
 
     private List<ChangedFile> changedFileList(Map<String, SVNLogEntryPath> changedPaths) {
@@ -87,7 +90,10 @@ public class SvnImpl implements CodeUpdater {
 
         SVNStatus status = statusClient.doStatus(localRepo, false);
         long version = status.getCommittedRevision().getNumber();
-        return commitInfo(localRepo, version);
+
+        CommitLog commitLog = commitInfo(localRepo, version);
+        commitLog.setBranch(branch);
+        return commitLog;
     }
 
     private CommitLog commitInfo(File localRepo, long version) throws SVNException {

+ 10 - 16
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployResult.java

@@ -2,11 +2,11 @@ package cn.reghao.autodop.dmaster.app.vo.log;
 
 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.log.DeployResult;
 import lombok.Data;
 
-import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 应用构建部署结果
@@ -26,7 +26,7 @@ public class BuildDeployResult {
 
     public static BuildDeployResult fromBuildLog(BuildLog buildLog) {
         BuildDeployResult buildDeployResult = new BuildDeployResult();
-        buildDeployResult.setAppId(buildLog.getApp().getAppId());
+        //buildDeployResult.setAppId(buildLog.getApp().getAppId());
         buildDeployResult.setDeploy(false);
         buildDeployResult.setStatusCode(buildLog.getStatusCode());
         buildDeployResult.setMsg(buildLog.getMsg());
@@ -42,28 +42,22 @@ public class BuildDeployResult {
         }
     }
 
-    public static BuildDeployResult fromDeployLog(DeployLog deployLog) {
-        BuildLog buildLog = deployLog.getBuildLog();
+    public static BuildDeployResult fromDeployLogs(List<DeployLog> deployLogs) {
+        BuildLog buildLog = deployLogs.get(0).getBuildLog();
         BuildDeployResult buildDeployResult = new BuildDeployResult();
-        buildDeployResult.setAppId(buildLog.getApp().getAppId());
+        //buildDeployResult.setAppId(buildLog.getApp().getAppId());
         buildDeployResult.setDeploy(true);
         buildDeployResult.setCommitId(buildLog.getCommitLog().getCommitId());
 
+        Set<String> failedHosts = deployLogs.stream()
+                .filter(deployLog -> deployLog.getStatusCode() != 0)
+                .map(DeployLog::getHost)
+                .collect(Collectors.toSet());
         // 根据部署结果中成功的数量设置返回结果
-        Set<DeployResult> deployResults = deployLog.getDeployResults();
-        Set<String> failedHosts = new HashSet<>();
-        for (DeployResult deployResult : deployResults) {
-            if (deployResult.getStatusCode() != 0) {
-                failedHosts.add(deployResult.getHost());
-            }
-        }
-
         if (failedHosts.isEmpty()) {
-            deployLog.setStatusCode(0);
             buildDeployResult.setStatusCode(0);
             buildDeployResult.setMsg("所有节点部署成功");
         } else {
-            deployLog.setStatusCode(1);
             buildDeployResult.setStatusCode(1);
             buildDeployResult.setMsg("节点 " + failedHosts.toString() + " 部署失败");
         }

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildLogVO.java

@@ -23,8 +23,8 @@ public class BuildLogVO {
 
     public static BuildLogVO of(BuildLog buildLog) {
         BuildLogVO buildLogVO = new BuildLogVO();
-        buildLogVO.setAppId(buildLog.getApp().getAppId());
-        buildLogVO.setEnv(buildLog.getApp().getEnv());
+        /*buildLogVO.setAppId(buildLog.getApp().getAppId());
+        buildLogVO.setEnv(buildLog.getApp().getEnv());*/
 
         CommitLog commitLog = buildLog.getCommitLog();
         if (commitLog != null) {

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/DeployLogVO.java

@@ -23,12 +23,12 @@ public class DeployLogVO {
 
     public static DeployLogVO of(DeployLog deployLog) {
         DeployLogVO deployLogVO = new DeployLogVO();
-        deployLogVO.appId = deployLog.getBuildLog().getApp().getAppId();
+        /*deployLogVO.appId = deployLog.getBuildLog().getApp().getAppId();
         deployLogVO.env = deployLog.getBuildLog().getApp().getEnv();
         deployLogVO.commitId = deployLog.getBuildLog().getCommitLog().getCommitId();
         deployLogVO.deployResults = deployLog.getDeployResults().stream()
                 .map(DeployResultVO::of)
-                .collect(Collectors.toSet());
+                .collect(Collectors.toSet());*/
 
         return deployLogVO;
     }

+ 2 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/config/WebSecurityConfig.java

@@ -41,6 +41,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         http.authorizeRequests()
                 .expressionHandler(webExpressionHandler())
                 .antMatchers("/**").permitAll()
+                // TODO 放行所有接口(测试时使用)
+                .antMatchers("/api/**").permitAll()
                 //.antMatchers("/*").permitAll()
                 .antMatchers("/actuator/health").permitAll()
                 .anyRequest().authenticated();

+ 0 - 16
dmaster/src/test/java/cn/reghao/autodop/common/notification/DingNotifyTest.java

@@ -1,16 +0,0 @@
-package cn.reghao.autodop.common.notification;
-
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class DingNotifyTest {
-    @Test
-    void main() throws Exception {
-        String webhook = "https://oapi.dingtalk.com/robot/send?access_token=ba9cf0d846cff8c471168e0d2f91ec0c44645a086cf5e4e421697c9b0c606bd2";
-        DingNotify dingNotify = new DingNotify();
-
-        String content = "maven 打包测试";
-        dingNotify.send(webhook, content);
-    }
-}

+ 0 - 18
dmaster/src/test/java/cn/reghao/autodop/common/utils/compression/TarUtilTest.java

@@ -1,18 +0,0 @@
-package cn.reghao.autodop.common.utils.compression;
-
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
-
-import static cn.reghao.autodop.common.utils.compression.TarUtil.tar;
-import static org.junit.jupiter.api.Assertions.*;
-
-class TarUtilTest {
-
-    @Test
-    void main() throws IOException {
-        String srcPath = "/home/reghao/tmp/autodop/zzz/Com.IQuizoo.ContentService";
-        String dstPath = "/tmp/Dockerfile";
-        tar(srcPath, dstPath);
-    }
-}

+ 0 - 114
dmaster/src/test/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestrationTest.java

@@ -1,114 +0,0 @@
-package cn.reghao.autodop.dmaster.app.entity.orchestration;
-
-import cn.reghao.autodop.common.utils.JsonUtil;
-import cn.reghao.autodop.dmaster.app.entity.Notification;
-import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
-import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
-import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
-import cn.reghao.autodop.dmaster.app.entity.build.AppUpdate;
-import cn.reghao.autodop.dmaster.app.constant.CompilerType;
-import cn.reghao.autodop.dmaster.app.constant.NotifierType;
-import cn.reghao.autodop.common.deploy.PackerType;
-import cn.reghao.autodop.dmaster.app.constant.RepoType;
-import cn.reghao.autodop.dmaster.app.entity.deploy.AppDeploy;
-import cn.reghao.autodop.dmaster.app.entity.deploy.AppLog;
-import org.junit.jupiter.api.Test;
-
-import java.util.HashSet;
-import java.util.Set;
-
-class AppOrchestrationTest {
-    ProjOrchestration proj() {
-        AppUpdate appUpdate = new AppUpdate();
-        appUpdate.setRepoName("svn-214");
-        appUpdate.setRepoType(RepoType.svn.name());
-        appUpdate.setUsername("gjs");
-        appUpdate.setPassword("gjs1234");
-
-        AppCompile appCompile = new AppCompile();
-        appCompile.setCompilerName("dotnet2.2");
-        appCompile.setCompilerType(CompilerType.shell.name());
-        appCompile.setCompilerHome("/home/reghao/opt/env/dotnet/dotnet-sdk-2.2.101");
-        appCompile.setScript("dotnet publish");
-
-        AppPack appPack = new AppPack();
-        appPack.setPackerName("docker");
-        appPack.setPackerType(PackerType.docker.name());
-        appPack.setPackerPath("192.168.0.222:5000/iq3x");
-
-        AppBuild appBuild = new AppBuild();
-        appBuild.setAppUpdate(appUpdate);
-        appBuild.setAppCompile(appCompile);
-        appBuild.setAppPack(appPack);
-
-        ProjOrchestration proj = new ProjOrchestration();
-        proj.setProjId("branch-20200509");
-        proj.setDescription("20200509 分支");
-        proj.setProjRepo("svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Service/branches/20200509");
-        proj.setAppBuild(appBuild);
-        return proj;
-    }
-
-    @Test
-    void main() {
-        AppUpdate appUpdate = new AppUpdate();
-        appUpdate.setRepoName("svn-214");
-        appUpdate.setRepoType(RepoType.svn.name());
-        appUpdate.setUsername("gjs");
-        appUpdate.setPassword("gjs1234");
-
-        AppCompile appCompile = new AppCompile();
-        appCompile.setCompilerName("dotnet2.2");
-        appCompile.setCompilerType(CompilerType.shell.name());
-        appCompile.setCompilerHome("/home/reghao/opt/env/dotnet/dotnet-sdk-2.2.101");
-        appCompile.setScript("dotnet publish");
-
-        AppPack appPack = new AppPack();
-        appPack.setPackerName("docker");
-        appPack.setPackerType(PackerType.docker.name());
-        appPack.setPackerPath("192.168.0.222:5000/iq3x");
-
-        AppBuild appBuild = new AppBuild();
-        appBuild.setAppUpdate(appUpdate);
-        appBuild.setAppCompile(appCompile);
-        appBuild.setAppPack(appPack);
-
-        Set<AppLog> appLogs = new HashSet<>();
-        appLogs.add(new AppLog("console", "info", null));
-        appLogs.add(new AppLog("console", "error", null));
-        appLogs.add(new AppLog("file", "info", "/Logs/Info/2020-05-19.log"));
-        appLogs.add(new AppLog("file", "error", "/Logs/Error/2020-05-19.log"));
-
-        AppDeploy appDeploy = new AppDeploy();
-        //appDeploy.setHosts("localhost");
-        appDeploy.setHttpPort(8002);
-        appDeploy.setHealthCheck("/health");
-        appDeploy.setRunningDir("");
-        appDeploy.setLogs(appLogs);
-
-        Notification notification = new Notification();
-        notification.setNotifierName("ding 通知");
-        notification.setNotifierType(NotifierType.webhook.name());
-        notification.setUrl("https://oapi.dingtalk.com/robot/send?access_token=ba9cf0d846cff8c471168e0d2f91ec0c44645a086cf5e4e421697c9b0c606bd2");
-
-        AppOrchestration app = new AppOrchestration();
-        app.setAppId("content");
-        app.setDirname("ContentService");
-        app.setDescription("内容服务");
-        app.setAppRepo("svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Service/branches/20200509/ContentService");
-        /*app.setDependencyRepos("svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Service/branches/20200509/DataCenter," +
-                "svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Service/branches/20200509/ContentService," +
-                "svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Service/branches/20200509/UserService," +
-                "svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Service/branches/20200509/DotNetCore");*/
-        app.setEnv("dev");
-        app.setCompileDir("/ContentService/4-ContentPresentation/Com.IQuizoo.ContentService");
-
-        app.setProj(proj());
-        //app.setAppBuild(appBuild);
-
-        app.setNotification(notification);
-        app.setAppDeploy(appDeploy);
-
-        System.out.println("\n" + JsonUtil.objectToJson(app));
-    }
-}

+ 0 - 47
dmaster/src/test/java/cn/reghao/autodop/dmaster/app/entity/orchestration/ProjOrchestrationTest.java

@@ -1,47 +0,0 @@
-package cn.reghao.autodop.dmaster.app.entity.orchestration;
-
-import cn.reghao.autodop.common.utils.JsonUtil;
-import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
-import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
-import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
-import cn.reghao.autodop.dmaster.app.entity.build.AppUpdate;
-import cn.reghao.autodop.dmaster.app.constant.CompilerType;
-import cn.reghao.autodop.common.deploy.PackerType;
-import cn.reghao.autodop.dmaster.app.constant.RepoType;
-import org.junit.jupiter.api.Test;
-
-class ProjOrchestrationTest {
-
-    @Test
-    void main() {
-        AppUpdate appUpdate = new AppUpdate();
-        appUpdate.setRepoName("svn-214");
-        appUpdate.setRepoType(RepoType.svn.name());
-        appUpdate.setUsername("gjs");
-        appUpdate.setPassword("gjs1234");
-
-        AppCompile appCompile = new AppCompile();
-        appCompile.setCompilerName("dotnet2.2");
-        appCompile.setCompilerType(CompilerType.shell.name());
-        appCompile.setCompilerHome("/home/reghao/opt/env/dotnet/dotnet-sdk-2.2.101");
-        appCompile.setScript("dotnet publish");
-
-        AppPack appPack = new AppPack();
-        appPack.setPackerName("docker");
-        appPack.setPackerType(PackerType.docker.name());
-        appPack.setPackerPath("192.168.0.222:5000/iq3x");
-
-        AppBuild appBuild = new AppBuild();
-        appBuild.setAppUpdate(appUpdate);
-        appBuild.setAppCompile(appCompile);
-        appBuild.setAppPack(appPack);
-
-        ProjOrchestration proj = new ProjOrchestration();
-        proj.setProjId("branch-20200509");
-        proj.setDescription("20200509 分支");
-        proj.setProjRepo("svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Service/branches/20200509");
-        proj.setAppBuild(appBuild);
-
-        System.out.println("\n" + JsonUtil.objectToJson(proj));
-    }
-}

+ 0 - 23
dmaster/src/test/java/cn/reghao/autodop/dmaster/app/service/tools/updater/GitImplTest.java

@@ -1,23 +0,0 @@
-package cn.reghao.autodop.dmaster.app.service.tools.updater;
-
-import org.junit.jupiter.api.Test;
-
-class GitImplTest {
-
-    @Test
-    void main() throws Exception {
-        String prikeyFile = "/home/reghao/id_rsa_codeup";
-        GitImpl git = new GitImpl(prikeyFile);
-        String iqbms = "git@codeup.aliyun.com:5f1f8daf6207a1a8b17f6742/FrontEnd/IQuizoo.BMS.git";
-        String dnkt = "git@codeup.aliyun.com:5f1f8daf6207a1a8b17f6742/FrontEnd/IQuizoo.Game.git";
-        String spiderlab = "git@git.reghao.cn:reghao/spiderlab.git";
-
-        String local = "/home/reghao/Downloads/codeup/spiderlab";
-        String branch = "master";
-        CommitLog commitLog = git.update(spiderlab, branch, local);
-        System.out.println();
-
-        /*String spiderlab = "http://git.reghao.cn/reghao/spiderlab.git";
-        GitImpl git1 = new GitImpl("reghao", "gjs");*/
-    }
-}

+ 0 - 16
dmaster/src/test/java/cn/reghao/autodop/dmaster/app/service/tools/updater/SvnImplTest.java

@@ -1,16 +0,0 @@
-package cn.reghao.autodop.dmaster.app.service.tools.updater;
-
-import org.junit.jupiter.api.Test;
-import org.tmatesoft.svn.core.SVNException;
-
-class SvnImplTest {
-
-    @Test
-    void main() throws SVNException {
-        String remote = "svn://192.168.0.214/azy/CodeRepositories/IQuizoo.Web.BMS/branches/20200205/IQuizoo_FrontEnd";
-        String local = "/home/reghao/tmp/autodop/opt/data/svn/IQuizoo_FrontEnd";
-        SvnImpl svn = new SvnImpl("gjs", "gjs1234");
-        CommitLog commitLog = svn.lastCommitInfo("/home/reghao/tmp/autodop/opt/data/local-repo/dev-branch-20200509", "");
-        //System.out.println(svn.localVersion(local));
-    }
-}