Bläddra i källkod

代码重构中...

reghao 5 år sedan
förälder
incheckning
0ceadaef8e
35 ändrade filer med 215 tillägg och 353 borttagningar
  1. 3 1
      common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppIdArgs.java
  2. 0 12
      common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStartArgs.java
  3. 0 17
      common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStatus.java
  4. 0 12
      common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStatusArgs.java
  5. 0 12
      common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStopArgs.java
  6. 6 3
      common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/deploy/AppDeployArgs.java
  7. 1 5
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineLog.java
  8. 9 9
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildController.java
  9. 4 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/WebhookController.java
  10. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/BuildConfig.java
  11. 0 25
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppLog.java
  12. 1 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppRunning.java
  13. 22 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/DeployConfig.java
  14. 19 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/LogConfig.java
  15. 6 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/RunningConfig.java
  16. 4 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java
  17. 8 26
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestration.java
  18. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/ProjOrchestration.java
  19. 15 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployDispatcher.java
  20. 16 14
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/LogManager.java
  21. 15 15
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OrchestrateService.java
  22. 8 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppIntegrate.java
  23. 0 56
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuildDeployPipeline.java
  24. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/SharedEntityChecker.java
  25. 7 7
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/AppCrudService.java
  26. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/ProjCrudService.java
  27. 46 25
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java
  28. 0 40
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/DeployTask.java
  29. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/AppBuildVO.java
  30. 1 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployResult.java
  31. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/DeployLogVO.java
  32. 5 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/AppVO.java
  33. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/ProjVO.java
  34. 0 5
      dmaster/src/main/resources/application-dev.yml
  35. 2 2
      dmaster/src/test/java/cn/reghao/autodop/common/amqp/RabbitProducerTest.java

+ 3 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppRestartArgs.java → common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppIdArgs.java

@@ -3,10 +3,12 @@ package cn.reghao.autodop.common.dagent.app.api.data;
 import lombok.Data;
 
 /**
+ * 单个 appId 参数,在调用 appStatusOps, appStartOps, appStopOps 以及 appRestartOps 等操作时传入的参数
+ *
  * @author reghao
  * @date 2020-12-25 19:01:15
  */
 @Data
-public class AppRestartArgs {
+public class AppIdArgs {
     private String appId;
 }

+ 0 - 12
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStartArgs.java

@@ -1,12 +0,0 @@
-package cn.reghao.autodop.common.dagent.app.api.data;
-
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2020-12-25 19:01:15
- */
-@Data
-public class AppStartArgs {
-    private String appId;
-}

+ 0 - 17
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStatus.java

@@ -1,17 +0,0 @@
-package cn.reghao.autodop.common.dagent.app.api.data;
-
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-01-29 16:02:15
- */
-@Data
-public class AppStatus {
-    private String appId;
-    private String commitId;
-    private String host;
-    private String status;
-    private String startedTime;
-    private int pid;
-}

+ 0 - 12
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStatusArgs.java

@@ -1,12 +0,0 @@
-package cn.reghao.autodop.common.dagent.app.api.data;
-
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2020-12-25 19:01:15
- */
-@Data
-public class AppStatusArgs {
-    private String appId;
-}

+ 0 - 12
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStopArgs.java

@@ -1,12 +0,0 @@
-package cn.reghao.autodop.common.dagent.app.api.data;
-
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2020-12-25 19:01:15
- */
-@Data
-public class AppStopArgs {
-    private String appId;
-}

+ 6 - 3
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/deploy/AppDeployArgs.java

@@ -3,13 +3,16 @@ package cn.reghao.autodop.common.dagent.app.api.data.deploy;
 import lombok.Data;
 
 /**
+ * 应用部署参数
+ *
  * @author reghao
  * @date 2020-12-25 19:00:54
  */
 @Data
 public class AppDeployArgs {
-    private String packerType;
     private String appId;
-    private String appPath;
-    private String runningDir;
+    private String packagePath;
+    private PackerType packerType;
+    private String runningHome;
+    private String runningScript;
 }

+ 1 - 5
common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineLog.java

@@ -4,7 +4,6 @@ import cn.reghao.autodop.common.orm.BaseDocument;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.data.mongodb.core.mapping.Document;
-import org.springframework.data.mongodb.core.mapping.Field;
 
 /**
  * @author reghao
@@ -12,14 +11,11 @@ import org.springframework.data.mongodb.core.mapping.Field;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Document(collection = "machine_log")
+@Document
 public class MachineLog extends BaseDocument {
-    @Field("machine_id")
     private String machineId;
     private long timestamp;
-    @Field("thread_name")
     private String threadName;
-    @Field("logger_name")
     private String loggerName;
     private String level;
     private String msg;

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

@@ -9,7 +9,7 @@ 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.service.OssService;
-import cn.reghao.autodop.dmaster.app.service.build.BuildDispatcher;
+import cn.reghao.autodop.dmaster.app.service.BuildDeployDispatcher;
 import cn.reghao.autodop.common.result.WebResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -32,12 +32,12 @@ import org.tmatesoft.svn.core.SVNException;
 @RequestMapping("/api/app/bd")
 public class BuildController {
     private BuildService buildService;
-    private BuildDispatcher buildDispatcher;
+    private BuildDeployDispatcher buildDeployDispatcher;
     private OssService ossService;
 
-    public BuildController(BuildService buildService, BuildDispatcher buildDispatcher, OssService ossService) {
+    public BuildController(BuildService buildService, BuildDeployDispatcher buildDeployDispatcher, OssService ossService) {
         this.buildService = buildService;
-        this.buildDispatcher = buildDispatcher;
+        this.buildDeployDispatcher = buildDeployDispatcher;
         this.ossService = ossService;
     }
 
@@ -45,29 +45,29 @@ public class BuildController {
     // TODO docker push 没有成功
     @ApiOperation(value = "构建部署应用")
     @ApiImplicitParams(
-            @ApiImplicitParam(name="appId", value="应用标识(多个应用间使用 , 分隔)",
-                    paramType="query", dataType = "String")
+            @ApiImplicitParam(name="appId", value="应用 ID", paramType="query", dataType = "String")
     )
     @PostMapping("/pipeline")
     public String buildAndDeploy(@RequestParam("appId") String appId) throws Exception {
+        buildDeployDispatcher.buildAndDeploy(appId, true);
         //BuildDeployResult buildDeployResult = buildDispatcher.buildAndDeploy(appId, true);
         return WebResult.success("buildDeployResult");
     }
 
     @ApiOperation(value = "构建应用")
     @ApiImplicitParams(
-            @ApiImplicitParam(name="appId", value="应用标识(多个应用间使用 , 分隔)",
-                    paramType="query", dataType = "String")
+            @ApiImplicitParam(name="appId", value="应用 ID", paramType="query", dataType = "String")
     )
     @PostMapping("/build")
     public String build(@RequestParam("appId") String appId) throws Exception {
+        buildDeployDispatcher.buildAndDeploy(appId, false);
         //BuildDeployResult buildDeployResult = buildDispatcher.buildAndDeploy(appId, false);
         return WebResult.success("buildDeployResult");
     }
 
     @ApiOperation(value = "部署应用")
     @ApiImplicitParams({
-            @ApiImplicitParam(name="appId", value="应用标识", paramType="query", dataType = "String"),
+            @ApiImplicitParam(name="appId", value="应用 ID", paramType="query", dataType = "String"),
             @ApiImplicitParam(name="commitId", value="代码版本", paramType="query", dataType = "String")
     })
     @PostMapping("/deploy")

+ 4 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/WebhookController.java

@@ -1,8 +1,7 @@
 package cn.reghao.autodop.dmaster.app.controller;
 
 import cn.reghao.autodop.common.result.WebResult;
-import cn.reghao.autodop.dmaster.app.service.build.BuildDispatcher;
-import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
+import cn.reghao.autodop.dmaster.app.service.BuildDeployDispatcher;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import io.swagger.annotations.Api;
@@ -18,10 +17,10 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping("/api/hook")
 public class WebhookController {
-    private BuildDispatcher buildDispatcher;
+    private BuildDeployDispatcher buildDeployDispatcher;
 
-    public WebhookController(BuildDispatcher buildDispatcher) {
-        this.buildDispatcher = buildDispatcher;
+    public WebhookController(BuildDeployDispatcher buildDeployDispatcher) {
+        this.buildDeployDispatcher = buildDeployDispatcher;
     }
 
     @PostMapping("/pipeline")

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

@@ -12,7 +12,7 @@ import javax.persistence.*;
  * @date 2020-05-13 16:40:22
  */
 @Data
-public class AppBuild {
+public class BuildConfig {
     private RepoConfig repoConfig;
     private CompilerConfig compilerConfig;
     private PackerConfig packerConfig;

+ 0 - 25
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppLog.java

@@ -1,25 +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 AppLog {
-    @NotNull
-    private String logType;
-    @NotNull
-    private String logLevel;
-    // 相对于 runningDir
-    private String logDir;
-}

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

@@ -2,9 +2,6 @@ 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;
 
 /**
@@ -12,10 +9,8 @@ import java.util.Set;
  * @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;
+    private Set<LogConfig> logs;
 }

+ 22 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/DeployConfig.java

@@ -0,0 +1,22 @@
+package cn.reghao.autodop.dmaster.app.entity.deploy;
+
+import cn.reghao.autodop.common.dagent.app.api.data.deploy.PackerType;
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineRegistry;
+import lombok.Data;
+
+import java.util.Set;
+
+/**
+ * 应用部署配置
+ *
+ * @author reghao
+ * @date 2020-05-13 16:59:20
+ */
+@Data
+public class DeployConfig {
+    private Set<MachineRegistry> machineRegistry;
+    private PackerType packerType;
+    private String runningHome;
+    private String runningScript;
+    // TODO docker 启动参数
+}

+ 19 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/LogConfig.java

@@ -0,0 +1,19 @@
+package cn.reghao.autodop.dmaster.app.entity.deploy;
+
+import cn.reghao.autodop.common.dagent.app.api.data.log.LogLevel;
+import cn.reghao.autodop.common.dagent.app.api.data.log.LogType;
+import lombok.Data;
+
+/**
+ * 应用日志配置
+ *
+ * @author reghao
+ * @date 2020-05-19 09:24:41
+ */
+@Data
+public class LogConfig {
+    private LogType logType;
+    private LogLevel logLevel;
+    // 相对于 runningHome
+    private String logPath;
+}

+ 6 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/RunningConfig.java

@@ -1,17 +1,18 @@
 package cn.reghao.autodop.dmaster.app.entity.deploy;
 
-import cn.reghao.autodop.common.dagent.machine.api.data.MachineRegistry;
 import lombok.Data;
 
+import java.util.List;
+
 /**
- * 应用运行配置
+ * 应用运行配置
  *
  * @author reghao
  * @date 2021-02-05 23:30:27
  */
 @Data
 public class RunningConfig {
-    private MachineRegistry machineRegistry;
-    private String runningHome;
-    private String script;
+    private int httpPort;
+    private String healthCheck;
+    private List<LogConfig> logs;
 }

+ 4 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java

@@ -1,11 +1,11 @@
 package cn.reghao.autodop.dmaster.app.entity.log;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.common.orm.BaseDocument;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
 
-import javax.persistence.*;
 import java.time.LocalDateTime;
 
 /**
@@ -17,14 +17,8 @@ import java.time.LocalDateTime;
 @NoArgsConstructor
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Entity
-public class DeployLog extends BaseEntity {
-    @ManyToOne(cascade = CascadeType.DETACH)
-    @JoinColumn(name = "build_log_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
-    private BuildLog buildLog;
-    private long deployTotalTime;
-    private LocalDateTime deployTime;
-    private String host;
+@Document
+public class DeployLog extends BaseDocument {
     // 0 - 全部成功 1 - 部分成功或全部失败
     private int statusCode;
     private String msg;

+ 8 - 26
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestration.java

@@ -1,16 +1,13 @@
 package cn.reghao.autodop.dmaster.app.entity.orchestration;
 
-import cn.reghao.autodop.common.orm.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.AppRunning;
+import cn.reghao.autodop.dmaster.app.entity.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;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import javax.persistence.*;
-
 /**
  * TODO 添加定时构建部署参数
  *
@@ -19,46 +16,31 @@ import javax.persistence.*;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Entity
-public class AppOrchestration extends BaseEntity implements Cloneable {
-    // TODO 仅允许小写和 ‘_’ ‘-’ 等字符
-    @Column(nullable = false, unique = true)
+public class AppOrchestration implements Cloneable {
+    // TODO 仅允许大小写、数字和 ‘_’ ‘-’ 等字符
     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 boolean alwaysBuild;
-    // 是否启用编排
-    @Column(nullable = false)
     private boolean enable;
 
     // projId 和 appBuild 二者只能存在一个
-    @ManyToOne(cascade = CascadeType.PERSIST)
-    @JoinColumn(name = "proj_orchestration_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private ProjOrchestration proj;
-    private AppBuild appBuild;
-    private AppDeploy appDeploy;
-    private AppRunning appRunning;
+    private BuildConfig buildConfig;
+    private DeployConfig deployConfig;
+    private RunningConfig runningConfig;
 
-    @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;
     // TODO 添加定时构建部署选项
     // TODO 接入到项目管理系统

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

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.entity.orchestration;
 
 import cn.reghao.autodop.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
+import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -23,7 +23,7 @@ public class ProjOrchestration extends BaseEntity implements Cloneable {
     private String projRepo;
     private String branch;
     // 同一个项目内所有应用的构建策略是相同的
-    private AppBuild appBuild;
+    private BuildConfig buildConfig;
 
     @Override
     public Object clone() throws CloneNotSupportedException {

+ 15 - 8
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuildDispatcher.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployDispatcher.java

@@ -1,10 +1,13 @@
-package cn.reghao.autodop.dmaster.app.service.build;
+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.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.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;
@@ -20,14 +23,14 @@ import java.util.concurrent.*;
 
 /**
  * 应用构建部署分发器
- * 多个线程访问同一个 BuildDispatcher 对象
+ * 多个线程访问同一个 BuildDeployDispatcher 对象
  *
  * @author reghao
  * @date 2019-11-12 17:20:27
  */
 @Slf4j
 @Service
-public class BuildDispatcher {
+public class BuildDeployDispatcher {
     // TODO 多线程访问的集合
     private Set<String> onBuilding = new ConcurrentSkipListSet<>();
     private Set<String> onDeploying = new ConcurrentSkipListSet<>();
@@ -36,7 +39,7 @@ public class BuildDispatcher {
     private AppDeployer appDeployer;
     private LogConsumer logConsumer;
 
-    public BuildDispatcher(OrchestrationCache orchestrationCache, AppDeployer appDeployer, LogRepository logDAO) {
+    public BuildDeployDispatcher(OrchestrationCache orchestrationCache, AppDeployer appDeployer, LogRepository logDAO) {
         this.cache = orchestrationCache;
         this.appDeployer = appDeployer;
         this.logConsumer = new LogConsumer(logDAO);
@@ -66,7 +69,7 @@ public class BuildDispatcher {
         onBuilding.remove(appId);
 
         if (isDeploy) {
-            deploy(buildLog);
+            deploy(buildLog.getAppId(), buildLog.getPackagePath());
         }
 
         return null;
@@ -132,13 +135,17 @@ public class BuildDispatcher {
      * @return
      * @date 2021-02-06 上午2:02
      */
-    public DeployResult deploy(BuildLog buildLog) {
-        if (!onDeploying.add(buildLog.getAppId())) {
+    public DeployResult deploy(String appId, String packagePath) {
+        if (!onDeploying.add(appId)) {
             // TODO 应用正在部署中...
             return null;
         }
 
-        onDeploying.remove(buildLog.getAppId());
+        DeployConfig deployConfig = cache.findByAppId(appId).getDeployConfig();
+        List<DeployLog> deployLogs = appDeployer.deploy(appId, packagePath, deployConfig);
+        // TODO 部署完成后发出通知
+
+        onDeploying.remove(appId);
         return null;
     }
 }

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

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service;
 
 import cn.reghao.autodop.dmaster.app.cache.OrchestrationCache;
-import cn.reghao.autodop.dmaster.app.entity.deploy.AppLog;
+import cn.reghao.autodop.dmaster.app.entity.deploy.LogConfig;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.vo.LogFile;
 import org.springframework.stereotype.Service;
@@ -24,18 +24,19 @@ public class LogManager {
 
     public List<LogFile> logFiles(String appId, String host) throws Exception {
         AppOrchestration app = caching.findByAppId(appId);
-        Set<AppLog> appLogs = app.getAppRunning().getLogs();
-        if (appLogs.isEmpty()) {
+        //Set<LogConfig> logConfigs = app.getAppRunning().getLogs();
+        Set<LogConfig> logConfigs = new HashSet<>();
+        if (logConfigs.isEmpty()) {
             throw new Exception("日志未配置");
         }
 
         List<LogFile> logFiles = new ArrayList<>();
-        for (AppLog appLog : appLogs) {
-            String logType = appLog.getLogType();
-            String logLevel = appLog.getLogLevel();
+        for (LogConfig logConfig : logConfigs) {
+            /*String logType = logConfig.getLogType();
+            String logLevel = logConfig.getLogLevel();
             LogFile logFile = new LogFile(logType, logLevel);
-            String logDir = app.getAppDeploy().getRunningDir() + appLog.getLogDir();
-            logFiles.add(logFile);
+            String logDir = app.getAppDeploy().getRunningDir() + logConfig.getLogDir();
+            logFiles.add(logFile);*/
         }
 
         return logFiles;
@@ -43,17 +44,18 @@ public class LogManager {
 
     public List<String> logContent(String appId, String logType, String logLevel, String logName) throws Exception {
         AppOrchestration app = caching.findByAppId(appId);
-        Set<AppLog> appLogs = app.getAppRunning().getLogs();
-        if (appLogs.isEmpty()) {
+        //Set<LogConfig> logConfigs = app.getAppRunning().getLogs();
+        Set<LogConfig> logConfigs = new HashSet<>();
+        if (logConfigs.isEmpty()) {
             throw new Exception("日志未配置");
         }
 
-        String runningDir = app.getAppDeploy().getRunningDir();
+        String runningDir = "app.getAppDeploy().getRunningDir()";
         String logfilePath = null;
-        for (AppLog appLog : appLogs) {
-            if (appLog.getLogType().equals(logType) && appLog.getLogLevel().equals(logLevel)) {
+        for (LogConfig logConfig : logConfigs) {
+            if (logConfig.getLogType().equals(logType) && logConfig.getLogLevel().equals(logLevel)) {
                 // TODO 只有控制台日志的 logPath 才为 null
-                logfilePath = runningDir + appLog.getLogDir() + "/" + logName;
+                //logfilePath = runningDir + logConfig.getLogDir() + "/" + logName;
                 break;
             }
         }

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

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service;
 
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
-import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
+import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
 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;
@@ -55,9 +55,9 @@ public class OrchestrateService {
             case 1:
                 // 项目编排
                 ProjVO projVO = (ProjVO) JsonConverter.jsonToObject(json, ProjVO.class);
-                AppBuild appBuild = checkSharedBuildConfig(projVO.getAppBuild());
+                BuildConfig buildConfig = checkSharedBuildConfig(projVO.getAppBuild());
                 ProjOrchestration proj = ProjVO.to(projVO);
-                proj.setAppBuild(appBuild);
+                proj.setBuildConfig(buildConfig);
 
                 ProjOrchestration projEntity = projRepository.findByIsDeleteFalseAndProjId(proj.getProjId());
                 if (projEntity != null) {
@@ -73,8 +73,8 @@ public class OrchestrateService {
                 AppVO appVO = (AppVO) JsonConverter.jsonToObject(json, AppVO.class);
                 AppOrchestration app = AppVO.to(appVO);
                 if (appVO.getProjId() == null) {
-                    AppBuild appBuild1 = checkSharedBuildConfig(appVO.getAppBuild());
-                    app.setAppBuild(appBuild1);
+                    BuildConfig buildConfig1 = checkSharedBuildConfig(appVO.getAppBuild());
+                    app.setBuildConfig(buildConfig1);
 
                     String notifier = appVO.getNotifier();
                     checkSharedNotification(app, notifier);
@@ -89,11 +89,11 @@ public class OrchestrateService {
 
                 AppOrchestration appEntity = appRepository.findByIsDeleteFalseAndAppId(app.getAppId());
                 if (appEntity != null) {
-                    app.setId(appEntity.getId());
+                    /*app.setId(appEntity.getId());
                     app.setCreateTime(appEntity.getCreateTime());
-                    app.setUpdateTime(LocalDateTime.now());
+                    app.setUpdateTime(LocalDateTime.now());*/
                 }
-                app.setIsDelete(false);
+                //app.setIsDelete(false);
                 appRepository.save(app);
                 break;
             default:
@@ -108,8 +108,8 @@ public class OrchestrateService {
      * @return
      * @date 2020-09-30 下午3:17
      */
-    private AppBuild checkSharedBuildConfig(AppBuildVO buildVO) throws Exception {
-        AppBuild appBuild = new AppBuild();
+    private BuildConfig checkSharedBuildConfig(AppBuildVO buildVO) throws Exception {
+        BuildConfig buildConfig = new BuildConfig();
         String updater = buildVO.getUpdater();
         AppUpdate appUpdate = appUpdateRepository.findByIsDeleteFalseAndRepoName(updater);
         if (appUpdate == null) {
@@ -130,7 +130,7 @@ public class OrchestrateService {
             throw new Exception(packer + " 不存在...");
         }
         //appBuild.setAppPack(appPack);
-        return appBuild;
+        return buildConfig;
     }
 
     /**
@@ -166,12 +166,12 @@ public class OrchestrateService {
                 }
                 newApp = (AppOrchestration) appEntity.clone();
                 newApp.setAppId(to);
-                newApp.setId(null);
+                /*newApp.setId(null);
                 newApp.setCreateTime(LocalDateTime.now());
-                newApp.setUpdateTime(LocalDateTime.now());
+                newApp.setUpdateTime(LocalDateTime.now());*/
                 // 处理共享集合
                 //newApp.getAppDeploy().setHosts(null);
-                newApp.getAppRunning().setLogs(null);
+                //newApp.getAppRunning().setLogs(null);
                 appRepository.save(newApp);
                 break;
             default:
@@ -232,7 +232,7 @@ public class OrchestrateService {
                 if (appEntity == null) {
                     throw new Exception(appId + " 不存在");
                 }
-                appEntity.setIsDelete(true);
+                //appEntity.setIsDelete(true);
                 appRepository.save(appEntity);
                 break;
             default:

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

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service.build;
 
-import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
+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;
@@ -83,17 +83,17 @@ public class AppIntegrate {
      * @date 2021-02-05 下午11:01
      */
     private void initBuildConfig() {
-        AppBuild appBuild;
+        BuildConfig buildConfig;
         ProjOrchestration proj = app.getProj();
         if (proj != null) {
-            appBuild = proj.getAppBuild();
-            app.setAppBuild(appBuild);
+            buildConfig = proj.getBuildConfig();
+            app.setBuildConfig(buildConfig);
         } else {
-            appBuild = app.getAppBuild();
+            buildConfig = app.getBuildConfig();
         }
 
         // 初始化更新配置
-        RepoConfig repoConfig = appBuild.getRepoConfig();
+        RepoConfig repoConfig = buildConfig.getRepoConfig();
         switch (repoConfig.getType()) {
             case git:
                 codeUpdater = new GitImpl(repoConfig);
@@ -105,7 +105,7 @@ public class AppIntegrate {
         }
 
         // 初始化编译配置
-        CompilerConfig compilerConfig = appBuild.getCompilerConfig();
+        CompilerConfig compilerConfig = buildConfig.getCompilerConfig();
         switch (compilerConfig.getType()) {
             case shell:
                 codeCompiler = new ShellCompiler(compilerConfig);
@@ -124,7 +124,7 @@ public class AppIntegrate {
         }
 
         // 初始化打包配置
-        PackerConfig packerConfig = appBuild.getPackerConfig();
+        PackerConfig packerConfig = buildConfig.getPackerConfig();
         switch (packerConfig.getType()) {
             case docker:
                 codePacker = new DockerPack(packerConfig);

+ 0 - 56
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuildDeployPipeline.java

@@ -1,56 +0,0 @@
-package cn.reghao.autodop.dmaster.app.service.build;
-
-import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
-import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
-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;
-
-/**
- * 应用更新 -> 编译 -> 打包 -> 部署流水线
- * 每个应用都对应一个构建任务
- *
- * @author reghao
- * @date 2019-11-16 21:39:53
- */
-@Slf4j
-public class BuildDeployPipeline implements Callable<BuildDeployResult> {
-    private AppIntegrate appIntegrate;
-    private boolean isDeploy;
-    private LogConsumer logConsumer;
-
-    public BuildDeployPipeline(AppIntegrate appIntegrate, boolean isDeploy, LogConsumer logConsumer) {
-        this.appIntegrate = appIntegrate;
-        this.isDeploy = isDeploy;
-        this.logConsumer = logConsumer;
-    }
-
-    /**
-     * 更新 -> 编译 -> 打包 -> 部署流水线
-     *
-     * @param
-     * @return 返回 JSON
-     * @date 2019-11-07 下午10:14
-     */
-    @Override
-    public BuildDeployResult call() {
-        BuildLog buildLog = new BuildLog();
-        // 更新代码成功后才持久化构建日志
-        /*if (buildLog.getCommitLog() != null) {
-            logConsumer.addBuildLog(buildLog);
-        }*/
-
-        /*if (buildLog.getStatusCode() == 0 && isDeploy) {
-            List<DeployLog> deployLogs = appIntegrate.deploy(buildLog, null);
-            logConsumer.addDeployLogs(deployLogs);
-            return BuildDeployResult.fromDeployLogs(deployLogs);
-        } else {
-            return BuildDeployResult.fromBuildLog(buildLog);
-        }*/
-
-        return BuildDeployResult.fromBuildLog(buildLog);
-    }
-}

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

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service.crud;
 
 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.BuildConfig;
 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;
@@ -41,8 +41,8 @@ public class SharedEntityChecker {
      * @return
      * @date 2020-09-30 下午3:17
      */
-    public AppBuild checkBuildConfig(AppBuildVO buildVO) throws Exception {
-        AppBuild appBuild = new AppBuild();
+    public BuildConfig checkBuildConfig(AppBuildVO buildVO) throws Exception {
+        BuildConfig buildConfig = new BuildConfig();
         String updater = buildVO.getUpdater();
         AppUpdate appUpdate = appUpdateRepository.findByIsDeleteFalseAndRepoName(updater);
         if (appUpdate == null) {
@@ -63,7 +63,7 @@ public class SharedEntityChecker {
             throw new Exception(packer + " 不存在...");
         }
         //appBuild.setAppPack(appPack);
-        return appBuild;
+        return buildConfig;
     }
 
     /**

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

@@ -2,7 +2,7 @@ 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.AppBuild;
+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.repository.orchestration.AppOrchestrationRepository;
@@ -38,8 +38,8 @@ public class AppCrudService implements CrudOps<AppOrchestration> {
     public void addOrModify(AppOrchestration app) throws Exception {
         AppVO appVO = AppVO.from(app);
         if (appVO.getProjId() == null) {
-            AppBuild appBuild1 = sharedEntityChecker.checkBuildConfig(appVO.getAppBuild());
-            app.setAppBuild(appBuild1);
+            BuildConfig buildConfig1 = sharedEntityChecker.checkBuildConfig(appVO.getAppBuild());
+            app.setBuildConfig(buildConfig1);
 
             String notifier = appVO.getNotifier();
             sharedEntityChecker.checkNotification(app, notifier);
@@ -54,11 +54,11 @@ public class AppCrudService implements CrudOps<AppOrchestration> {
 
         AppOrchestration appEntity = appRepository.findByIsDeleteFalseAndAppId(app.getAppId());
         if (appEntity != null) {
-            app.setId(appEntity.getId());
+            /*app.setId(appEntity.getId());
             app.setCreateTime(appEntity.getCreateTime());
-            app.setUpdateTime(LocalDateTime.now());
+            app.setUpdateTime(LocalDateTime.now());*/
         }
-        app.setIsDelete(false);
+        //app.setIsDelete(false);
         appRepository.save(app);
     }
 
@@ -86,7 +86,7 @@ public class AppCrudService implements CrudOps<AppOrchestration> {
         if (appEntity == null) {
             throw new Exception(uniqueKey + " 不存在");
         }
-        appEntity.setIsDelete(true);
+        //appEntity.setIsDelete(true);
         appRepository.save(appEntity);
     }
 }

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

@@ -2,7 +2,7 @@ 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.AppBuild;
+import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.ProjOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.ProjOrchestrationRepository;
@@ -36,8 +36,8 @@ public class ProjCrudService implements CrudOps<ProjOrchestration> {
     @Override
     public void addOrModify(ProjOrchestration proj) throws Exception {
         ProjVO projVO = ProjVO.from(proj);
-        AppBuild appBuild = sharedEntityChecker.checkBuildConfig(projVO.getAppBuild());
-        proj.setAppBuild(appBuild);
+        BuildConfig buildConfig = sharedEntityChecker.checkBuildConfig(projVO.getAppBuild());
+        proj.setBuildConfig(buildConfig);
 
         ProjOrchestration projEntity = projRepository.findByIsDeleteFalseAndProjId(proj.getProjId());
         if (projEntity != null) {

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

@@ -1,30 +1,36 @@
 package cn.reghao.autodop.dmaster.app.service.deploy;
 
+import cn.reghao.autodop.common.amqp.MQMessage;
+import cn.reghao.autodop.common.amqp.MessageType;
 import cn.reghao.autodop.common.amqp.RPCResult;
+import cn.reghao.autodop.common.dagent.app.api.AppOps;
 import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
 import cn.reghao.autodop.common.amqp.RabbitProducer;
-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.common.dagent.machine.api.data.MachineRegistry;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
+import cn.reghao.autodop.dmaster.app.entity.deploy.DeployConfig;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 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.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 
 /**
+ * 应用部署
+ *
  * @author reghao
  * @date 2020-03-13 10:26:22
  */
 @Component
 public class AppDeployer {
+    private final String routeKey = "dagent";
     private RabbitProducer sender;
-    private ExecutorService threadPool = ThreadPoolWrapper.threadPool("deploy");
+    private ExecutorService threadPool = ThreadPoolWrapper.threadPool("app-deploy");
 
     public AppDeployer(RabbitProducer sender) {
         this.sender = sender;
@@ -37,29 +43,24 @@ public class AppDeployer {
      * @return
      * @date 2020-03-13 下午1:00
      */
-    public List<DeployLog> deploy(BuildLog buildLog, AppDeploy appDeploy, Set<String> hosts) {
-        //AppPack appPack = buildLog.getAppPack();
-
+    public List<DeployLog> deploy(String appId, String packagePath, DeployConfig deployConfig) {
         AppDeployArgs appDeployArgs = new AppDeployArgs();
-        /*appDeployArgs.setPackerType(appPack.getPackerType());
-        appDeployArgs.setAppId(buildLog.getAppId());
-        appDeployArgs.setAppPath(buildLog.getAppPath());
-        appDeployArgs.setRunningDir(appDeploy.getRunningDir());*/
-
-        if (hosts == null) {
-            //hosts = appDeploy.getHosts();
-        }
+        appDeployArgs.setAppId(appId);
+        appDeployArgs.setPackagePath(packagePath);
+        appDeployArgs.setPackerType(deployConfig.getPackerType());
+        appDeployArgs.setRunningHome(deployConfig.getRunningHome());
+        appDeployArgs.setRunningScript(deployConfig.getRunningScript());
 
-        // TODO 处理 hosts 为空的情况,这会导致 deployLogs 为空
         long startTime = System.currentTimeMillis();
         Map<String, Future<RPCResult>> futureMap = new HashMap<>();
-        for (String host : hosts) {
-            futureMap.put(host, threadPool.submit(new DeployTask(sender, appDeployArgs)));
+        for (MachineRegistry machine : deployConfig.getMachineRegistry()) {
+            futureMap.put(machine.getMachineId(),
+                    threadPool.submit(new DeployTask(machine.getMachineId(), appDeployArgs)));
         }
 
         List<DeployLog> deployLogs = new ArrayList<>();
         for (Map.Entry<String, Future<RPCResult>> entry : futureMap.entrySet()) {
-            String host = entry.getKey();
+            String machineId = entry.getKey();
             Future<RPCResult> future = entry.getValue();
             while (!future.isDone() && !future.isCancelled()) {
                 // 休眠等待异步任务结束
@@ -71,10 +72,6 @@ public class AppDeployer {
             }
 
             DeployLog deployLog = new DeployLog();
-            deployLog.setBuildLog(buildLog);
-            deployLog.setHost(host);
-            deployLog.setDeployTime(LocalDateTime.now());
-            deployLog.setDeployTotalTime(System.currentTimeMillis()-startTime);
             try {
                 RPCResult rpcResult = future.get();
                 if (rpcResult != null) {
@@ -82,7 +79,7 @@ public class AppDeployer {
                     deployLog.setMsg(rpcResult.getResult());
                 } else {
                     deployLog.setStatusCode(1);
-                    deployLog.setMsg("RPC 调用失败");
+                    deployLog.setMsg(machineId + " RPC 调用失败");
                 }
             } catch (InterruptedException | ExecutionException e) {
                 deployLog.setStatusCode(1);
@@ -90,6 +87,30 @@ public class AppDeployer {
             }
             deployLogs.add(deployLog);
         }
+
+        long costTime = System.currentTimeMillis() - startTime;
         return deployLogs;
     }
+
+    class DeployTask implements Callable<RPCResult> {
+        private String machineId;
+        private AppDeployArgs appDeployArgs;
+
+        public DeployTask(String machineId, AppDeployArgs appDeployArgs) {
+            this.machineId = machineId;
+            this.appDeployArgs = appDeployArgs;
+        }
+
+        @Override
+        public RPCResult call() {
+            MQMessage mqMessage = new MQMessage();
+            mqMessage.setMachineId(machineId);
+            mqMessage.setSendTime(System.currentTimeMillis());
+            mqMessage.setRpc(true);
+            mqMessage.setType(MessageType.appType.name());
+            mqMessage.setOps(AppOps.appDeployOps.name());
+            mqMessage.setPayload(JsonConverter.objectToJson(appDeployArgs));
+            return sender.callRemote(routeKey, mqMessage);
+        }
+    }
 }

+ 0 - 40
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/DeployTask.java

@@ -1,40 +0,0 @@
-package cn.reghao.autodop.dmaster.app.service.deploy;
-
-import cn.reghao.autodop.common.dagent.app.api.AppOps;
-import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
-import cn.reghao.autodop.common.amqp.*;
-import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
-
-import java.util.concurrent.Callable;
-
-/**
- * 应用部署任务
- *
- * @author reghao
- * @date 2019-11-16 21:39:53
- */
-public class DeployTask implements Callable<RPCResult> {
-    private RabbitProducer sender;
-    private AppDeployArgs appDeployArgs;
-
-    public DeployTask(RabbitProducer sender, AppDeployArgs appDeployArgs) {
-        this.sender = sender;
-        this.appDeployArgs = appDeployArgs;
-    }
-
-    @Override
-    public RPCResult call() {
-        String routeKey = "dagent";
-        String machineId = "5d1a727991f34d3a9c1220a1899e6ebd";
-
-        MQMessage mqMessage = new MQMessage();
-        mqMessage.setMachineId(machineId);
-        mqMessage.setSendTime(System.currentTimeMillis());
-        mqMessage.setRpc(true);
-        mqMessage.setType(MessageType.appType.name());
-        mqMessage.setOps(AppOps.appDeployOps.name());
-        mqMessage.setPayload(JsonConverter.objectToJson(appDeployArgs));
-        RPCResult rpcResult = sender.callRemote(routeKey, mqMessage);
-        return rpcResult;
-    }
-}

+ 3 - 3
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.AppBuild;
+import cn.reghao.autodop.dmaster.app.entity.build.BuildConfig;
 import lombok.Data;
 
 /**
@@ -13,7 +13,7 @@ public class AppBuildVO {
     private String compiler;
     private String packer;
 
-    public static AppBuildVO from(AppBuild appBuild) {
+    public static AppBuildVO from(BuildConfig buildConfig) {
         AppBuildVO vo = new AppBuildVO();
         //vo.updater = appBuild.getAppUpdate().getRepoName();
         //vo.compiler = appBuild.getAppCompile().getCompilerName();
@@ -21,7 +21,7 @@ public class AppBuildVO {
         return vo;
     }
 
-    public static AppBuild to(AppBuildVO vo) {
+    public static BuildConfig to(AppBuildVO vo) {
         return null;
     }
 }

+ 1 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployResult.java

@@ -1,13 +1,11 @@
 package cn.reghao.autodop.dmaster.app.vo.log;
 
-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 lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 应用构建部署结果
@@ -57,8 +55,8 @@ public class BuildDeployResult {
     }
 
     public static BuildDeployResult fromDeployLogs(List<DeployLog> deployLogs) {
-        BuildLog buildLog = deployLogs.get(0).getBuildLog();
         BuildDeployResult buildDeployResult = new BuildDeployResult();
+        //BuildLog buildLog = deployLogs.get(0).getBuildLog();
         /*buildDeployResult.setAppId(buildLog.getAppId());
         buildDeployResult.setBuildTime(DatetimeConverter.format(buildLog.getBuildTime()));
         buildDeployResult.setDeploy(true);

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

@@ -17,14 +17,14 @@ public class DeployLogVO {
     private String msg;
 
     public static DeployLogVO from(DeployLog deployLog) {
-        BuildLog buildLog = deployLog.getBuildLog();
         DeployLogVO deployLogVO = new DeployLogVO();
+        /*BuildLog buildLog = deployLog.getBuildLog();
         deployLogVO.appId = buildLog.getAppId();
-        //deployLogVO.commitId = buildLog.getCommitLog().getCommitId();
+        deployLogVO.commitId = buildLog.getCommitLog().getCommitId();
         deployLogVO.host = deployLog.getHost();
         deployLogVO.deployTime = DatetimeConverter.format(deployLog.getDeployTime());
         deployLogVO.deployTotalTime = deployLog.getDeployTotalTime();
-        deployLogVO.msg = deployLog.getMsg();
+        deployLogVO.msg = deployLog.getMsg();*/
         return deployLogVO;
     }
 }

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

@@ -40,10 +40,10 @@ public class AppVO {
         vo.compileDir = app.getCompileDir();
         vo.enable = app.isEnable();
         vo.alwaysBuild = app.isAlwaysBuild();
-        vo.appDeploy = app.getAppDeploy();
-        vo.appRunning = app.getAppRunning();
+        /*vo.appDeploy = app.getAppDeploy();
+        vo.appRunning = app.getAppRunning();*/
         vo.notifier = app.getNotification().getNotifierName();
-        vo.appBuild = AppBuildVO.from(app.getAppBuild());
+        vo.appBuild = AppBuildVO.from(app.getBuildConfig());
         return vo;
     }
 
@@ -59,8 +59,8 @@ public class AppVO {
         app.setCompileDir(vo.compileDir);
         app.setEnable(vo.enable);
         app.setAlwaysBuild(vo.alwaysBuild);
-        app.setAppDeploy(vo.appDeploy);
-        app.setAppRunning(vo.appRunning);
+        /*app.setAppDeploy(vo.appDeploy);
+        app.setAppRunning(vo.appRunning);*/
         return app;
     }
 }

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

@@ -22,7 +22,7 @@ public class ProjVO {
         vo.description = proj.getDescription();
         vo.projRepo = proj.getProjRepo();
         vo.branch = proj.getBranch();
-        vo.appBuild = AppBuildVO.from(proj.getAppBuild());;
+        vo.appBuild = AppBuildVO.from(proj.getBuildConfig());;
         return vo;
     }
     

+ 0 - 5
dmaster/src/main/resources/application-dev.yml

@@ -7,11 +7,6 @@ spring:
     mongodb:
       uri: mongodb://localhost/reghao_autodop_rdb
   rabbitmq:
-#    host: mq.srv.iquizoo.com
-#    port: 5672
-#    username: iquizoo-mq1
-#    password: z2pT1PXR
-#    virtual-host: /
     host: localhost
     port: 5672
     virtual-host: /

+ 2 - 2
dmaster/src/test/java/cn/reghao/autodop/common/amqp/RabbitProducerTest.java

@@ -49,10 +49,10 @@ class RabbitProducerTest {
         machineShellArgs.setContent("cat /etc/nginx/nginx.conf");
 
         AppDeployArgs appDeployArgs = new AppDeployArgs();
-        appDeployArgs.setPackerType(PackerType.docker.name());
+        /*appDeployArgs.setPackerType(PackerType.docker.name());
         appDeployArgs.setAppId("admin-sys");
         appDeployArgs.setAppPath("docker.alpha.iquizoo.com/iq3x/dnkt:56d47672");
-        appDeployArgs.setRunningDir("");
+        appDeployArgs.setRunningDir("");*/
 
         String queueName = "dagent";
         String machineId = "5d1a727991f34d3a9c1220a1899e6ebd";