浏览代码

重构构建部署接口...

reghao 5 年之前
父节点
当前提交
95c2e2e6ac
共有 45 个文件被更改,包括 299 次插入352 次删除
  1. 2 2
      common/src/main/java/cn/reghao/autodop/common/utils/data/db/CrudOps.java
  2. 8 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildDeployController.java
  3. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/ConfigController.java
  4. 6 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/BuildConfigCrudController.java
  5. 3 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/GlobalCrudController.java
  6. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/OrchestrateCrudController.java
  7. 0 37
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/BuildDeployApp.java
  8. 90 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildDeployApp.java
  9. 4 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java
  10. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/ChangedFile.java
  11. 2 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/CommitLog.java
  12. 7 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java
  13. 8 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployResult.java
  14. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/BuildDeployAppRepository.java
  15. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/CommitLogRepository.java
  16. 0 91
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/LogRepository.java
  17. 31 32
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployDispatcher.java
  18. 5 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildService.java
  19. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/StatusManager.java
  20. 3 6
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppIntegrate.java
  21. 2 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/repo/CodeUpdater.java
  22. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/repo/GitImpl.java
  23. 2 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/repo/SvnImpl.java
  24. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/BuildDeployAppCrudService.java
  25. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/CompilerConfigCrudService.java
  26. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/PackerConfigCrudService.java
  27. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/build/RepoConfigCrudService.java
  28. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/global/LocalDirCrudService.java
  29. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/global/NotifierCrudService.java
  30. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/AppCrudService.java
  31. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/ProjCrudService.java
  32. 26 25
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java
  33. 8 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/log/BuildDeployLogConsumer.java
  34. 54 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/log/BuildDeployLogService.java
  35. 0 77
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployAppVO.java
  36. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/CommitLogVO.java
  37. 4 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3CrudController.java
  38. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/ScriptBakJob.java
  39. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakCrudService.java
  40. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakLogCrudService.java
  41. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3CrudService.java
  42. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/MachineMessageDispatcher.java
  43. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/crud/MachineCrudService.java
  44. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/crud/MachineLogCrudService.java
  45. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/mongo/MongoCrud.java

+ 2 - 2
common/src/main/java/cn/reghao/autodop/common/utils/data/db/CrudOps.java

@@ -9,8 +9,8 @@ import java.util.List;
  * @date 2020-06-25 01:34:27
  */
 public interface CrudOps<T> {
-    void addOrModify(T t) throws Exception;
-    default void batchaddOrModify(List<T> list) {
+    void addOrUpdate(T t) throws Exception;
+    default void batchaddOrUpdate(List<T> list) {
     }
 
     PageList<T> getByPage(int page, int size);

+ 8 - 8
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildDeployController.java

@@ -1,8 +1,8 @@
 package cn.reghao.autodop.dmaster.app.controller;
 
 import cn.reghao.autodop.dmaster.app.constant.EnvType;
+import cn.reghao.autodop.dmaster.app.entity.log.BuildDeployApp;
 import cn.reghao.autodop.dmaster.app.vo.SuccessfullyBuildVO;
-import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployAppVO;
 import cn.reghao.autodop.dmaster.app.service.BuildService;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildLogVO;
@@ -41,16 +41,16 @@ public class BuildDeployController {
     @ApiImplicitParams(@ApiImplicitParam(name="appId", value="应用 ID", paramType="query", dataType = "String"))
     @PostMapping("/update")
     public String buildAndDeploy(@RequestParam("appId") String appId) throws Exception {
-        BuildDeployAppVO buildDeployAppVO = buildDeployDispatcher.buildAndDeploy(appId, true);
-        return WebResult.success(buildDeployAppVO);
+        BuildDeployApp buildDeployApp = buildDeployDispatcher.buildAndDeploy(appId, true);
+        return WebResult.success(buildDeployApp.vo());
     }
 
     @ApiOperation(value = "构建应用")
     @ApiImplicitParams(@ApiImplicitParam(name="appId", value="应用 ID", paramType="query", dataType = "String"))
     @PostMapping("/build")
     public String build(@RequestParam("appId") String appId) throws Exception {
-        BuildDeployAppVO buildDeployAppVO = buildDeployDispatcher.buildAndDeploy(appId, false);
-        return WebResult.success(buildDeployAppVO);
+        BuildDeployApp buildDeployApp = buildDeployDispatcher.buildAndDeploy(appId, false);
+        return WebResult.success(buildDeployApp.vo());
     }
 
     @ApiOperation(value = "部署应用")
@@ -60,15 +60,15 @@ public class BuildDeployController {
     })
     @PostMapping("/deploy")
     public String deploy(@RequestParam("appId") String appId, @RequestParam("commitId") String commitId) {
-        BuildDeployAppVO buildDeployAppVO = buildDeployDispatcher.deploy(appId, commitId);
-        return WebResult.success(buildDeployAppVO);
+        BuildDeployApp buildDeployApp = buildDeployDispatcher.deploy(appId, commitId);
+        return WebResult.success(buildDeployApp.vo());
     }
 
     @ApiOperation(value = "某个环境需要构建部署的应用")
     @GetMapping("/list")
     public ResponseEntity<String> buildList(@RequestParam("page") int page, @RequestParam("size") int size,
                                             @RequestParam("env") String env) {
-        PageList<BuildDeployAppVO> pageList = buildService.buildList(page, size, EnvType.valueOf(env).name());
+        PageList<BuildDeployApp> pageList = buildService.buildList(page, size, EnvType.valueOf(env).name());
         return ResponseEntity.ok().body(WebResult.success(pageList));
     }
 

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

@@ -15,7 +15,7 @@ import java.util.Map;
  * @date 2019-08-30 18:49:15
  */
 @Slf4j
-@Api(tags = "配置选项接口")
+@Api(tags = "应用配置接口")
 @RestController
 @RequestMapping("/api/config")
 public class ConfigController {

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

@@ -41,7 +41,7 @@ public class BuildConfigCrudController {
     @PostMapping(value = "/repo", consumes = "application/json")
     public ResponseEntity<String> addRepoConfig(@RequestBody String json) throws Exception {
         RepoConfig repoConfig = (RepoConfig) JsonConverter.jsonToObject(json, RepoConfig.class);
-        repoConfigCrudService.addOrModify(repoConfig);
+        repoConfigCrudService.addOrUpdate(repoConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -56,7 +56,7 @@ public class BuildConfigCrudController {
     @PutMapping("/repo")
     public ResponseEntity<String> modifyRepoConfig(@RequestBody String json) throws Exception {
         RepoConfig repoConfig = (RepoConfig) JsonConverter.jsonToObject(json, RepoConfig.class);
-        repoConfigCrudService.addOrModify(repoConfig);
+        repoConfigCrudService.addOrUpdate(repoConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -72,7 +72,7 @@ public class BuildConfigCrudController {
     @PostMapping(value = "/compiler", consumes = "application/json")
     public ResponseEntity<String> addCompileConfig(@RequestBody String json) throws Exception {
         CompilerConfig compilerConfig = (CompilerConfig) JsonConverter.jsonToObject(json, CompilerConfig.class);
-        compilerConfigCrudService.addOrModify(compilerConfig);
+        compilerConfigCrudService.addOrUpdate(compilerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -87,7 +87,7 @@ public class BuildConfigCrudController {
     @PutMapping("/compiler")
     public ResponseEntity<String> modifyCompileConfig(@RequestBody String json) throws Exception {
         CompilerConfig compilerConfig = (CompilerConfig) JsonConverter.jsonToObject(json, CompilerConfig.class);
-        compilerConfigCrudService.addOrModify(compilerConfig);
+        compilerConfigCrudService.addOrUpdate(compilerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -103,7 +103,7 @@ public class BuildConfigCrudController {
     @PostMapping(value = "/packer", consumes = "application/json")
     public ResponseEntity<String> addPackConfig(@RequestBody String json) throws Exception {
         PackerConfig packerConfig = (PackerConfig) JsonConverter.jsonToObject(json, PackerConfig.class);
-        packerConfigCrudService.addOrModify(packerConfig);
+        packerConfigCrudService.addOrUpdate(packerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -118,7 +118,7 @@ public class BuildConfigCrudController {
     @PutMapping("/packer")
     public ResponseEntity<String> modifyPackConfig(@RequestBody String json) throws Exception {
         PackerConfig packerConfig = (PackerConfig) JsonConverter.jsonToObject(json, PackerConfig.class);
-        packerConfigCrudService.addOrModify(packerConfig);
+        packerConfigCrudService.addOrUpdate(packerConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 

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

@@ -35,7 +35,7 @@ public class GlobalCrudController {
     @PostMapping(value = "/notifier", consumes = "application/json")
     public ResponseEntity<String> addNotifierConfig(@RequestBody String json) throws Exception {
         NotifierConfig notifierConfig = (NotifierConfig) JsonConverter.jsonToObject(json, NotifierConfig.class);
-        notifierCrudService.addOrModify(notifierConfig);
+        notifierCrudService.addOrUpdate(notifierConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -50,7 +50,7 @@ public class GlobalCrudController {
     @PutMapping("/notifier")
     public ResponseEntity<String> modifyNotifierConfig(@RequestBody String json) throws Exception {
         NotifierConfig notifierConfig = (NotifierConfig) JsonConverter.jsonToObject(json, NotifierConfig.class);
-        notifierCrudService.addOrModify(notifierConfig);
+        notifierCrudService.addOrUpdate(notifierConfig);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -79,7 +79,7 @@ public class GlobalCrudController {
     @PutMapping("/localdir")
     public ResponseEntity<String> modifyLocalDir(@RequestBody String json) throws Exception {
         BuildDir buildDir = (BuildDir) JsonConverter.jsonToObject(json, BuildDir.class);
-        localDirCrudService.addOrModify(buildDir);
+        localDirCrudService.addOrUpdate(buildDir);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 

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

@@ -39,7 +39,7 @@ public class OrchestrateCrudController {
     public ResponseEntity<String> addAppOrchestration(@RequestBody String json) throws Exception {
         AppVO appVO = (AppVO) JsonConverter.jsonToObject(json, AppVO.class);
         AppOrchestration app = AppVO.to(appVO);
-        appCrudService.addOrModify(app);
+        appCrudService.addOrUpdate(app);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -69,7 +69,7 @@ public class OrchestrateCrudController {
     @PutMapping("/app")
     public ResponseEntity<String> modifyAppOrchestration(@RequestBody String json) throws Exception {
         AppOrchestration app = (AppOrchestration) JsonConverter.jsonToObject(json, AppOrchestration.class);
-        appCrudService.addOrModify(app);
+        appCrudService.addOrUpdate(app);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -85,7 +85,7 @@ public class OrchestrateCrudController {
     @PostMapping(value = "/proj", consumes = "application/json")
     public ResponseEntity<String> addProjOrchestration(@RequestBody String json) throws Exception {
         ProjOrchestration proj = (ProjOrchestration) JsonConverter.jsonToObject(json, ProjOrchestration.class);
-        projCrudService.addOrModify(proj);
+        projCrudService.addOrUpdate(proj);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
@@ -101,7 +101,7 @@ public class OrchestrateCrudController {
     @PutMapping("/proj")
     public ResponseEntity<String> modifyProjOrchestration(@RequestBody String json) throws Exception {
         ProjOrchestration proj = (ProjOrchestration) JsonConverter.jsonToObject(json, ProjOrchestration.class);
-        projCrudService.addOrModify(proj);
+        projCrudService.addOrUpdate(proj);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 

+ 0 - 37
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/BuildDeployApp.java

@@ -1,37 +0,0 @@
-package cn.reghao.autodop.dmaster.app.entity;
-
-import cn.reghao.autodop.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.persistence.*;
-
-/**
- * 需要构建部署的应用
- *
- * @author reghao
- * @date 2020-05-20 22:09:53
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Entity
-public class BuildDeployApp extends BaseEntity {
-    @Column(nullable = false, unique = true)
-    private String appId;
-    @Column(nullable = false)
-    private String env;
-    @Column(nullable = false)
-    private boolean enable;
-    private String commitId;
-    private String bdType;
-    private String bdTime;
-
-    public static BuildDeployApp fromAppOrchestration(AppOrchestration app) {
-        BuildDeployApp buildDeployApp = new BuildDeployApp();
-        buildDeployApp.setAppId(app.getAppId());
-        buildDeployApp.setEnv(app.getEnv());
-        buildDeployApp.setEnable(app.isEnable());
-        return buildDeployApp;
-    }
-}

+ 90 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildDeployApp.java

@@ -0,0 +1,90 @@
+package cn.reghao.autodop.dmaster.app.entity.log;
+
+import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.*;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 需要构建部署的应用
+ *
+ * @author reghao
+ * @date 2020-05-20 22:09:53
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Entity
+public class BuildDeployApp extends BaseEntity {
+    @Column(nullable = false, unique = true)
+    private String appId;
+    @Column(nullable = false)
+    private String env;
+    @Column(nullable = false)
+    private boolean enable;
+    private String commitId;
+    private String bdType;
+    private LocalDateTime bdTime;
+    // 0 - 成功 1 - 失败
+    private int statusCode;
+    private String errDetail;
+
+    public BuildDeployApp vo() {
+        this.setId(null);
+        this.setIsDelete(null);
+        this.setCreateTime(null);
+        this.setUpdateTime(null);
+        return this;
+    }
+
+    public static BuildDeployApp of(AppOrchestration app) {
+        BuildDeployApp buildDeployApp = new BuildDeployApp();
+        buildDeployApp.setAppId(app.getAppId());
+        buildDeployApp.setEnv(app.getEnv());
+        buildDeployApp.setEnable(app.isEnable());
+        return buildDeployApp;
+    }
+
+    public static BuildDeployApp of(BuildLog buildLog) {
+        BuildDeployApp buildDeployApp = new BuildDeployApp();
+        buildDeployApp.setAppId(buildLog.getAppId());
+        buildDeployApp.setEnv(buildLog.getEnv());
+        buildDeployApp.setEnable(true);
+        buildDeployApp.setCommitId(buildLog.getCommitId());
+        buildDeployApp.setBdType("构建");
+        buildDeployApp.setBdTime(buildLog.getBuildTime());
+        buildDeployApp.setStatusCode(buildLog.getStatusCode());
+        if (buildLog.getStatusCode() != 0) {
+            buildDeployApp.setErrDetail(buildLog.getErrDetail().substring(0, 100));
+        }
+
+        return buildDeployApp;
+    }
+
+    public static BuildDeployApp of(DeployResult deployResult) {
+        BuildDeployApp buildDeployApp = new BuildDeployApp();
+        buildDeployApp.setAppId(deployResult.getAppId());
+        buildDeployApp.setEnv(deployResult.getEnv());
+        buildDeployApp.setEnable(true);
+        buildDeployApp.setCommitId(deployResult.getCommitId());
+        buildDeployApp.setBdType("部署");
+        buildDeployApp.setBdTime(deployResult.getDeployTime());
+
+        List<String> deployFailure = deployResult.getDeployLogs().stream()
+                .filter(log -> log.getStatusCode() != 0)
+                .map(DeployLog::getErrDetail)
+                .collect(Collectors.toList());
+        if (!deployFailure.isEmpty()) {
+            buildDeployApp.setStatusCode(1);
+            buildDeployApp.setErrDetail(deployFailure.toString());
+        } else {
+            buildDeployApp.setStatusCode(0);
+        }
+
+        return buildDeployApp;
+    }
+}

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

@@ -18,10 +18,8 @@ import java.time.LocalDateTime;
 @EqualsAndHashCode(callSuper = false)
 @Document("BuildLog")
 public class BuildLog extends BaseDocument {
-    // 0 - 成功 1 - 失败
-    private int statusCode;
-    private String errDetail;
     private String appId;
+    private String env;
     private BuildStage stage;
     // 代码是否更新
     private boolean isUpdate;
@@ -31,4 +29,7 @@ public class BuildLog extends BaseDocument {
     private long compileTotalTime;
     private long packTotalTime;
     private LocalDateTime buildTime;
+    // 0 - 成功 1 - 失败
+    private int statusCode;
+    private String errDetail;
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/repo/ChangedFile.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/ChangedFile.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.service.build.tools.repo;
+package cn.reghao.autodop.dmaster.app.entity.log;
 
 import lombok.Data;
 

+ 2 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/repo/CommitLog.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/CommitLog.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.service.build.tools.repo;
+package cn.reghao.autodop.dmaster.app.entity.log;
 
 import cn.reghao.autodop.common.orm.BaseDocument;
 import lombok.Data;
@@ -18,6 +18,7 @@ import java.util.List;
 @Document("CommitLog")
 public class CommitLog extends BaseDocument {
     private String appId;
+    private String env;
     // 代码是否更新
     private boolean isUpdate;
     private String remote;

+ 7 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.util.List;
+import java.time.LocalDateTime;
 
 /**
  * 应用部署日志
@@ -18,7 +18,11 @@ import java.util.List;
 @Document("DeployLog")
 public class DeployLog extends BaseDocument {
     private String appId;
+    private String env;
     private String commitId;
-    private String deployTime;
-    private List<DeployResult> deployResults;
+    private String machineId;
+    private long deployCostTime;
+    // 0 - 成功 1 - 失败
+    private int statusCode;
+    private String errDetail;
 }

+ 8 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployResult.java

@@ -2,6 +2,9 @@ package cn.reghao.autodop.dmaster.app.entity.log;
 
 import lombok.Data;
 
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * 应用部署结果
  *
@@ -10,9 +13,9 @@ import lombok.Data;
  */
 @Data
 public class DeployResult {
-    // 0 - 全部成功 1 - 部分成功或全部失败
-    private int statusCode;
-    private String msg;
-    private String machineId;
-    private String deployCostTime;
+    private String appId;
+    private String env;
+    private String commitId;
+    private LocalDateTime deployTime;
+    private List<DeployLog> deployLogs;
 }

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

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

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

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.repository.log;
 
-import cn.reghao.autodop.dmaster.app.service.build.tools.repo.CommitLog;
+import cn.reghao.autodop.dmaster.app.entity.log.CommitLog;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.mongodb.repository.MongoRepository;

+ 0 - 91
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/LogRepository.java

@@ -1,91 +0,0 @@
-package cn.reghao.autodop.dmaster.app.repository.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.repository.BuildDeployAppRepository;
-import cn.reghao.autodop.dmaster.app.service.build.tools.repo.CommitLog;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * 持久化构建、部署日志
- *
- * @author reghao
- * @date 2020-05-26 17:35:26
- */
-@Slf4j
-@Repository
-public class LogRepository {
-    private BuildDeployAppRepository buildDeployAppRepository;
-    private CommitLogRepository commitLogRepository;
-    private BuildLogRepository buildLogRepository;
-    private DeployLogRepository deployLogRepository;
-
-    public LogRepository(BuildDeployAppRepository buildDeployAppRepository,
-                         CommitLogRepository commitLogRepository,
-                         BuildLogRepository buildLogRepository,
-                         DeployLogRepository deployLogRepository) {
-        this.buildDeployAppRepository = buildDeployAppRepository;
-        this.commitLogRepository = commitLogRepository;
-        this.buildLogRepository = buildLogRepository;
-        this.deployLogRepository = deployLogRepository;
-    }
-
-    @Transactional(rollbackFor = {Exception.class})
-    public void saveCommitLog(CommitLog commitLog) {
-        commitLogRepository.save(commitLog);
-    }
-
-    @Transactional(rollbackFor = {Exception.class})
-    public void saveBuildLog(BuildLog buildLog) {
-        buildLogRepository.save(buildLog);
-        /*CommitLog commitLog = buildLog.getCommitLog();
-        CommitLog entity = commitLogRepository.findByIsDeleteFalseAndCommitId(commitLog.getCommitId());
-        if (entity == null) {
-            //commitLog.setIsDelete(false);
-            LocalDateTime now = LocalDateTime.now();
-            *//*commitLog.setCreateTime(now);
-            commitLog.setUpdateTime(now);*//*
-            commitLogRepository.save(commitLog);
-        } else {
-            buildLog.setCommitLog(entity);
-        }
-
-        BuildLog entity1 = buildLogRepository.findByIsDeleteFalseAndCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
-                entity, buildLog.getAppCompile(), buildLog.getAppPack(), buildLog.getAppId(), 0);
-        // 当前 commit 构建成功的 BuildLog 已存在时不再更新
-        if (entity1 == null) {
-            buildLog.setIsDelete(false);
-            LocalDateTime now = LocalDateTime.now();
-            buildLog.setCreateTime(now);
-            buildLog.setUpdateTime(now);
-            buildLogRepository.save(buildLog);
-        }*/
-    }
-
-    @Transactional(rollbackFor = {Exception.class})
-    public void saveDeployLog(DeployLog deployLog) {
-        deployLogRepository.save(deployLog);
-        /*BuildLog buildLog = deployLog.getBuildLog();
-        String commitId = buildLog.getCommitLog().getCommitId();
-        CommitLog entity = commitLogRepository.findByIsDeleteFalseAndCommitId(commitId);
-        if (entity == null) {
-            log.error("{} 的 {} 版本更新日志未持久化...", buildLog.getAppId(), commitId);
-            return;
-        }
-
-        BuildLog entity1 = buildLogRepository.findByIsDeleteFalseAndCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
-                entity, buildLog.getAppCompile(), buildLog.getAppPack(), buildLog.getAppId(), 0);
-        if (entity1 != null) {
-            deployLog.setBuildLog(entity1);
-            deployLog.setIsDelete(false);
-            LocalDateTime now = LocalDateTime.now();
-            deployLog.setCreateTime(now);
-            deployLog.setUpdateTime(now);
-            deployLogRepository.save(deployLog);
-        } else {
-            log.error("{} 的 {} 版本构建日志未持久化...", buildLog.getAppId(), commitId);
-        }*/
-    }
-}

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

@@ -5,15 +5,12 @@ import cn.reghao.autodop.dmaster.app.constant.BuildStage;
 import cn.reghao.autodop.dmaster.app.constant.NotifierType;
 import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployConfig;
-import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
-import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployAppVO;
-import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
+import cn.reghao.autodop.dmaster.app.entity.log.*;
 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.repo.CommitLog;
 import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.repository.log.LogRepository;
-import cn.reghao.autodop.dmaster.app.service.log.LogConsumer;
+import cn.reghao.autodop.dmaster.app.service.log.BuildDeployLogService;
+import cn.reghao.autodop.dmaster.app.service.log.BuildDeployLogConsumer;
 import cn.reghao.autodop.dmaster.common.exception.ExceptionUtil;
 import cn.reghao.autodop.dmaster.common.thread.ThreadPoolWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -41,13 +38,13 @@ public class BuildDeployDispatcher {
     private AppDeployer appDeployer;
 
     private ExecutorService threadPool = ThreadPoolWrapper.threadPool("build-deploy");
-    private LogConsumer logConsumer;
+    private BuildDeployLogConsumer buildDeployLogConsumer;
 
-    public BuildDeployDispatcher(BuildDeployCache buildDeployCache, AppDeployer appDeployer, LogRepository logDAO) {
+    public BuildDeployDispatcher(BuildDeployCache buildDeployCache, AppDeployer appDeployer, BuildDeployLogService logDAO) {
         this.cache = buildDeployCache;
         this.appDeployer = appDeployer;
-        this.logConsumer = new LogConsumer(logDAO);
-        threadPool.submit(logConsumer);
+        this.buildDeployLogConsumer = new BuildDeployLogConsumer(logDAO);
+        threadPool.submit(buildDeployLogConsumer);
     }
 
     /**
@@ -57,7 +54,7 @@ public class BuildDeployDispatcher {
      * @return
      * @date 2021-02-06 上午1:46
      */
-    public BuildDeployAppVO buildAndDeploy(String appId, boolean isDeploy) throws Exception {
+    public BuildDeployApp buildAndDeploy(String appId, boolean isDeploy) throws Exception {
         if (!onBuilding.add(appId)) {
             // TODO 应用正在构建中...
             return null;
@@ -80,10 +77,11 @@ public class BuildDeployDispatcher {
         BuildLog buildLog = buildPipeline(appIntegrate);
         onBuilding.remove(appId);
         if (buildLog.getStatusCode() == 0 && isDeploy) {
-            DeployLog deployLog = deployApp(appId, buildLog.getCommitId(), buildLog.getPackagePath());
-            return BuildDeployAppVO.fromDeployLog(deployLog);
+            DeployResult deployResult = deployApp(buildLog);
+            assert deployResult != null;
+            return BuildDeployApp.of(deployResult);
         } else {
-            return BuildDeployAppVO.fromBuildLog(buildLog);
+            return BuildDeployApp.of(buildLog);
         }
     }
 
@@ -94,7 +92,8 @@ public class BuildDeployDispatcher {
      */
     private BuildLog buildPipeline(AppIntegrate appIntegrate) {
         BuildLog buildLog = new BuildLog();
-        buildLog.setAppId(appIntegrate.appId());
+        buildLog.setAppId(appIntegrate.app().getAppId());
+        buildLog.setEnv(appIntegrate.app().getEnv());
 
         long start = System.currentTimeMillis();
         // TODO 只使用一个 try-catch
@@ -103,10 +102,10 @@ public class BuildDeployDispatcher {
             buildLog.setUpdate(commitLog.isUpdate());
             buildLog.setCommitId(commitLog.getCommitId());
             buildLog.setUpdateTotalTime(System.currentTimeMillis()-start);
-            logConsumer.addCommitLog(commitLog);
+            buildDeployLogConsumer.addCommitLog(commitLog);
         } catch (Exception e) {
             buildException(buildLog, BuildStage.update, e);
-            logConsumer.addBuildLog(buildLog);
+            buildDeployLogConsumer.addBuildLog(buildLog);
             return buildLog;
         }
 
@@ -116,7 +115,7 @@ public class BuildDeployDispatcher {
             buildLog.setCompileTotalTime(System.currentTimeMillis()-start);
         } catch (Exception e) {
             buildException(buildLog, BuildStage.compile, e);
-            logConsumer.addBuildLog(buildLog);
+            buildDeployLogConsumer.addBuildLog(buildLog);
             return buildLog;
         }
 
@@ -127,14 +126,14 @@ public class BuildDeployDispatcher {
             buildLog.setPackTotalTime(System.currentTimeMillis()-start);
         } catch (Exception e) {
             buildException(buildLog, BuildStage.pack, e);
-            logConsumer.addBuildLog(buildLog);
+            buildDeployLogConsumer.addBuildLog(buildLog);
             return buildLog;
         }
 
         buildLog.setStage(BuildStage.done);
         buildLog.setStatusCode(0);
         buildLog.setBuildTime(LocalDateTime.now());
-        logConsumer.addBuildLog(buildLog);
+        buildDeployLogConsumer.addBuildLog(buildLog);
         return buildLog;
     }
 
@@ -152,26 +151,26 @@ public class BuildDeployDispatcher {
      * @return
      * @date 2021-02-06 上午2:02
      */
-    private DeployLog deployApp(String appId, String commitId, String packagePath) {
-        if (!onDeploying.add(appId)) {
+    private DeployResult deployApp(BuildLog buildLog) {
+        if (!onDeploying.add(buildLog.getAppId())) {
             // TODO 应用正在部署中...
             return null;
         }
 
-        List<DeployConfig> deployConfigs = cache.findByAppId(appId).getDeployConfigs();
-        DeployLog deployLog = appDeployer.deploy(appId, commitId, packagePath, deployConfigs);
+        List<DeployConfig> deployConfigs = cache.findByAppId(buildLog.getAppId()).getDeployConfigs();
+        DeployResult deployResult = appDeployer.deploy(buildLog, deployConfigs);
         // TODO 部署完成后发出通知
-        onDeploying.remove(appId);
-        logConsumer.addDeployLog(deployLog);
-        return deployLog;
+        onDeploying.remove(buildLog.getAppId());
+        deployResult.getDeployLogs().forEach(deployLog -> buildDeployLogConsumer.addDeployLog(deployLog));
+        return deployResult;
     }
 
-    public BuildDeployAppVO deploy(String appId, String commitId) {
+    public BuildDeployApp deploy(String appId, String commitId) {
         BuildLog buildLog = cache.findByAppIdAndCommitId(appId, commitId);
-        String packagePath = buildLog.getPackagePath();
-        DeployLog deployLog = deployApp(appId, commitId, packagePath);
-        logConsumer.addDeployLog(deployLog);
-        return BuildDeployAppVO.fromDeployLog(deployLog);
+        DeployResult deployResult = deployApp(buildLog);
+        assert deployResult != null;
+        deployResult.getDeployLogs().forEach(deployLog -> buildDeployLogConsumer.addDeployLog(deployLog));
+        return BuildDeployApp.of(deployResult);
     }
 
     public void deployNotify(NotifierConfig notifierConfig, DeployLog deployLog) {

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

@@ -1,11 +1,11 @@
 package cn.reghao.autodop.dmaster.app.service;
 
-import cn.reghao.autodop.dmaster.app.entity.BuildDeployApp;
+import cn.reghao.autodop.dmaster.app.entity.log.BuildDeployApp;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 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.build.tools.repo.CommitLog;
+import cn.reghao.autodop.dmaster.app.entity.log.CommitLog;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.dmaster.app.service.crud.BuildDeployAppCrudService;
 import cn.reghao.autodop.dmaster.app.vo.SuccessfullyBuildVO;
@@ -37,14 +37,14 @@ public class BuildService {
         this.deployLogRepository = deployLogRepository;
     }
 
-    public PageList<BuildDeployAppVO> buildList(int page, int size, String env) {
+    public PageList<BuildDeployApp> buildList(int page, int size, String env) {
         PageList<BuildDeployApp> pageList = buildDeployAppCrudService.getByPage(page, size);
-        PageList<BuildDeployAppVO> vos = new PageList<>();
+        PageList<BuildDeployApp> vos = new PageList<>();
         vos.setTotalPages(pageList.getTotalPages());
         vos.setTotalSize(pageList.getTotalSize());
         vos.setPageSize(vos.getPageSize());
         vos.setHasNext(pageList.isHasNext());
-        vos.setList(pageList.getList().stream().map(BuildDeployAppVO::fromBuildDeployApp).collect(Collectors.toList()));
+        vos.setList(pageList.getList().stream().map(BuildDeployApp::vo).collect(Collectors.toList()));
 
         return vos;
     }

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

@@ -3,7 +3,7 @@ package cn.reghao.autodop.dmaster.app.service;
 import cn.reghao.autodop.common.deploy.AppStatus;
 import cn.reghao.autodop.common.dockerc.exception.DockerException;
 import cn.reghao.autodop.dmaster.app.cache.BuildDeployCache;
-import cn.reghao.autodop.dmaster.app.entity.BuildDeployApp;
+import cn.reghao.autodop.dmaster.app.entity.log.BuildDeployApp;
 import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.BuildDeployAppRepository;
 import org.springframework.data.domain.Page;

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

@@ -6,7 +6,6 @@ import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
 import cn.reghao.autodop.dmaster.app.entity.config.build.tools.*;
 import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestration;
-import cn.reghao.autodop.dmaster.app.exception.UpdateException;
 import cn.reghao.autodop.dmaster.app.service.build.tools.compiler.CodeCompiler;
 import cn.reghao.autodop.dmaster.app.service.build.tools.compiler.MavenCompiler;
 import cn.reghao.autodop.dmaster.app.service.build.tools.compiler.NullCompiler;
@@ -15,7 +14,7 @@ import cn.reghao.autodop.dmaster.app.service.build.tools.packer.CodePacker;
 import cn.reghao.autodop.dmaster.app.service.build.tools.packer.DockerPack;
 import cn.reghao.autodop.dmaster.app.service.build.tools.packer.ZipPack;
 import cn.reghao.autodop.dmaster.app.service.build.tools.repo.CodeUpdater;
-import cn.reghao.autodop.dmaster.app.service.build.tools.repo.CommitLog;
+import cn.reghao.autodop.dmaster.app.entity.log.CommitLog;
 import cn.reghao.autodop.dmaster.app.service.build.tools.repo.GitImpl;
 import cn.reghao.autodop.dmaster.app.service.build.tools.repo.SvnImpl;
 import cn.reghao.autodop.dmaster.common.config.SysConfig;
@@ -23,8 +22,6 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
-import java.io.IOException;
-
 /**
  * 应用构建部署,每个应用持有一个对象
  *
@@ -51,8 +48,8 @@ public class AppIntegrate {
         init();
     }
 
-    public String appId() {
-        return app.getAppId();
+    public AppOrchestration app() {
+        return app;
     }
 
     /**

+ 2 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/repo/CodeUpdater.java

@@ -1,5 +1,7 @@
 package cn.reghao.autodop.dmaster.app.service.build.tools.repo;
 
+import cn.reghao.autodop.dmaster.app.entity.log.CommitLog;
+
 /**
  * 更新代码
  *

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

@@ -3,7 +3,8 @@ package cn.reghao.autodop.dmaster.app.service.build.tools.repo;
 import cn.reghao.autodop.common.utils.text.TextFile;
 import cn.reghao.autodop.dmaster.app.constant.RepoAuthType;
 import cn.reghao.autodop.dmaster.app.entity.config.build.tools.RepoConfig;
-import cn.reghao.autodop.dmaster.app.exception.GitException;
+import cn.reghao.autodop.dmaster.app.entity.log.ChangedFile;
+import cn.reghao.autodop.dmaster.app.entity.log.CommitLog;
 import cn.reghao.autodop.dmaster.app.exception.UpdateException;
 import com.jcraft.jsch.JSch;
 import com.jcraft.jsch.JSchException;
@@ -12,7 +13,6 @@ import org.eclipse.jgit.api.CloneCommand;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.PullCommand;
 import org.eclipse.jgit.api.TransportConfigCallback;
-import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.diff.DiffEntry;
 import org.eclipse.jgit.internal.storage.file.FileRepository;
 import org.eclipse.jgit.lib.ObjectId;

+ 2 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/repo/SvnImpl.java

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

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

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service.crud;
 
 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.BuildDeployApp;
+import cn.reghao.autodop.dmaster.app.entity.log.BuildDeployApp;
 import cn.reghao.autodop.dmaster.app.repository.BuildDeployAppRepository;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -24,7 +24,7 @@ public class BuildDeployAppCrudService implements CrudOps<BuildDeployApp> {
     }
 
     @Override
-    public void addOrModify(BuildDeployApp buildDeployApp) throws Exception {
+    public void addOrUpdate(BuildDeployApp buildDeployApp) throws Exception {
         BuildDeployApp entity = buildDeployAppRepository.findByAppId(buildDeployApp.getAppId());
         if (entity != null) {
             buildDeployApp.setId(entity.getId());

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

@@ -25,7 +25,7 @@ public class CompilerConfigCrudService implements CrudOps<CompilerConfig> {
     }
 
     @Override
-    public void addOrModify(CompilerConfig appCompile) throws Exception {
+    public void addOrUpdate(CompilerConfig appCompile) throws Exception {
         // TODO 检测本机上是否存在编译器
         //checkScript(script);
 

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

@@ -26,7 +26,7 @@ public class PackerConfigCrudService implements CrudOps<PackerConfig> {
     }
 
     @Override
-    public void addOrModify(PackerConfig packerConfig) throws Exception {
+    public void addOrUpdate(PackerConfig packerConfig) throws Exception {
         if (PackerType.valueOf(packerConfig.getType()) == PackerType.docker) {
             // TODO 检测本机上是否存在 docker
             // checkScript("docker -v");

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

@@ -25,7 +25,7 @@ public class RepoConfigCrudService implements CrudOps<RepoConfig> {
     }
 
     @Override
-    public void addOrModify(RepoConfig repoConfig) throws Exception {
+    public void addOrUpdate(RepoConfig repoConfig) throws Exception {
         RepoConfig repoConfigEntity = repoRepository.findByIsDeleteFalseAndName(repoConfig.getName());
         if (repoConfigEntity != null) {
             repoConfig.setId(repoConfigEntity.getId());

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/global/LocalDirCrudService.java

@@ -27,7 +27,7 @@ public class LocalDirCrudService implements CrudOps<BuildDir> {
     }
 
     @Override
-    public void addOrModify(BuildDir buildDir) throws Exception {
+    public void addOrUpdate(BuildDir buildDir) throws Exception {
         // 检查并创建目录
         checkOrMkdir(buildDir.getLocalDir());
         // 只做修改,不新增

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/global/NotifierCrudService.java

@@ -25,7 +25,7 @@ public class NotifierCrudService implements CrudOps<NotifierConfig> {
     }
 
     @Override
-    public void addOrModify(NotifierConfig notifierConfig) throws Exception {
+    public void addOrUpdate(NotifierConfig notifierConfig) throws Exception {
         NotifierConfig notifierEntity =
                 notifierRepository.findByIsDeleteFalseAndName(notifierConfig.getName());
         if (notifierEntity != null) {

+ 4 - 4
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.BuildDeployApp;
+import cn.reghao.autodop.dmaster.app.entity.log.BuildDeployApp;
 import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.ProjOrchestrationRepository;
@@ -37,7 +37,7 @@ public class AppCrudService implements CrudOps<AppOrchestration> {
     }
 
     @Override
-    public void addOrModify(AppOrchestration app) throws Exception {
+    public void addOrUpdate(AppOrchestration app) throws Exception {
         sharedEntityChecker.checkAndSetBuildConfig(app);
         sharedEntityChecker.checkAndSetNotifier(app);
         sharedEntityChecker.checkAndSetRole(app);
@@ -50,7 +50,7 @@ public class AppCrudService implements CrudOps<AppOrchestration> {
         }
         app.setIsDelete(false);
         appRepository.save(app);
-        buildDeployAppCrudService.addOrModify(BuildDeployApp.fromAppOrchestration(app));
+        buildDeployAppCrudService.addOrUpdate(BuildDeployApp.of(app));
     }
 
     public void copy(String from, String to) throws Exception {
@@ -64,7 +64,7 @@ public class AppCrudService implements CrudOps<AppOrchestration> {
             toApp = (AppOrchestration) fromApp.clone();
             copyToDifferentApp(toApp, to);
             appRepository.save(toApp);
-            buildDeployAppCrudService.addOrModify(BuildDeployApp.fromAppOrchestration(toApp));
+            buildDeployAppCrudService.addOrUpdate(BuildDeployApp.of(toApp));
         }
     }
 

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

@@ -34,7 +34,7 @@ public class ProjCrudService implements CrudOps<ProjOrchestration> {
     }
 
     @Override
-    public void addOrModify(ProjOrchestration proj) throws Exception {
+    public void addOrUpdate(ProjOrchestration proj) throws Exception {
         ProjVO projVO = ProjVO.from(proj);
         /*BuildConfig buildConfig = sharedEntityChecker.checkBuildConfig(projVO.getAppBuild());
         proj.setBuildConfig(buildConfig);*/

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

@@ -6,12 +6,10 @@ 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.common.dagent.machine.api.data.MachineRegistry;
-import cn.reghao.autodop.common.dagent.machine.hardware.network.NetworkInfo;
 import cn.reghao.autodop.common.dockerc.pojo.Config;
-import cn.reghao.autodop.common.utils.DatetimeConverter;
 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.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployResult;
 import cn.reghao.autodop.dmaster.cluster.repository.MachineRegistryRepository;
@@ -19,6 +17,7 @@ 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;
@@ -35,12 +34,10 @@ import java.util.concurrent.Future;
 public class AppDeployer {
     private final String routeKey = "dagent";
     private RabbitProducer sender;
-    private MachineRegistryRepository machineRepository;
     private ExecutorService threadPool = ThreadPoolWrapper.threadPool("deploy");
 
-    public AppDeployer(RabbitProducer sender, MachineRegistryRepository machineRepository) {
+    public AppDeployer(RabbitProducer sender) {
         this.sender = sender;
-        this.machineRepository = machineRepository;
     }
 
     /**
@@ -50,12 +47,12 @@ public class AppDeployer {
      * @return
      * @date 2020-03-13 下午1:00
      */
-    public DeployLog deploy(String appId, String commitId, String packagePath, List<DeployConfig> deployConfigs) {
+    public DeployResult deploy(BuildLog buildLog, List<DeployConfig> deployConfigs) {
         Map<String, Future<RPCResult>> futureMap = new HashMap<>(deployConfigs.size());
         for (DeployConfig deployConfig : deployConfigs) {
             AppDeployArgs appDeployArgs = new AppDeployArgs();
-            appDeployArgs.setAppId(appId);
-            appDeployArgs.setPackagePath(packagePath);
+            appDeployArgs.setAppId(buildLog.getAppId());
+            appDeployArgs.setPackagePath(buildLog.getPackagePath());
             appDeployArgs.setPackerType(deployConfig.getPackerType());
             appDeployArgs.setStartHome(deployConfig.getStartHome());
             appDeployArgs.setStartScript(deployConfig.getStartScript());
@@ -66,14 +63,18 @@ public class AppDeployer {
             futureMap.put(machineId, threadPool.submit(new DeployTask(machineId, appDeployArgs)));
         }
 
-        DeployLog deployLog = new DeployLog();
-        deployLog.setAppId(appId);
-        deployLog.setCommitId(commitId);
-        deployLog.setDeployTime(DatetimeConverter.now());
-        List<DeployResult> deployResults = new ArrayList<>();
+        DeployResult deployResult = new DeployResult();
+        deployResult.setAppId(buildLog.getAppId());
+        deployResult.setEnv(buildLog.getEnv());
+        deployResult.setCommitId(buildLog.getCommitId());
+        deployResult.setDeployTime(LocalDateTime.now());
+        List<DeployLog> deployLogs = new ArrayList<>();
         for (Map.Entry<String, Future<RPCResult>> entry : futureMap.entrySet()) {
-            DeployResult deployResult = new DeployResult();
-            deployResult.setMachineId(entry.getKey());
+            DeployLog deployLog = new DeployLog();
+            deployLog.setAppId(buildLog.getAppId());
+            deployLog.setEnv(buildLog.getEnv());
+            deployLog.setCommitId(buildLog.getCommitId());
+
             Future<RPCResult> future = entry.getValue();
             while (!future.isDone() && !future.isCancelled()) {
                 // 休眠等待异步任务结束
@@ -87,20 +88,20 @@ public class AppDeployer {
             try {
                 RPCResult rpcResult = future.get();
                 if (rpcResult != null) {
-                    deployResult.setStatusCode(rpcResult.getStatusCode());
-                    deployResult.setMsg(rpcResult.getResult());
+                    deployLog.setStatusCode(rpcResult.getStatusCode());
+                    deployLog.setErrDetail(rpcResult.getResult());
                 } else {
-                    deployResult.setStatusCode(1);
-                    deployResult.setMsg("RPC 调用失败");
+                    deployLog.setStatusCode(1);
+                    deployLog.setErrDetail("RPC 调用失败");
                 }
             } catch (InterruptedException | ExecutionException e) {
-                deployResult.setStatusCode(1);
-                deployResult.setMsg(ExceptionUtil.errorMsg(e));
+                deployLog.setStatusCode(1);
+                deployLog.setErrDetail(ExceptionUtil.errorMsg(e));
             }
-            deployResults.add(deployResult);
+            deployLogs.add(deployLog);
         }
-        deployLog.setDeployResults(deployResults);
-        return deployLog;
+        deployResult.setDeployLogs(deployLogs);
+        return deployResult;
     }
 
     class DeployTask implements Callable<RPCResult> {

+ 8 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/log/LogConsumer.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/log/BuildDeployLogConsumer.java

@@ -2,11 +2,9 @@ package cn.reghao.autodop.dmaster.app.service.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.repository.log.LogRepository;
-import cn.reghao.autodop.dmaster.app.service.build.tools.repo.CommitLog;
+import cn.reghao.autodop.dmaster.app.entity.log.CommitLog;
 import lombok.extern.slf4j.Slf4j;
 
-import java.util.List;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 
@@ -17,12 +15,12 @@ import java.util.concurrent.LinkedBlockingQueue;
  * @date 2020-05-15 21:29:32
  */
 @Slf4j
-public class LogConsumer implements Runnable {
+public class BuildDeployLogConsumer implements Runnable {
     private static BlockingQueue<Object> logQueue = new LinkedBlockingQueue<>();
-    private LogRepository logDAO;
+    private BuildDeployLogService logService;
 
-    public LogConsumer(LogRepository logDAO) {
-        this.logDAO = logDAO;
+    public BuildDeployLogConsumer(BuildDeployLogService logService) {
+        this.logService = logService;
     }
 
     public void addCommitLog(CommitLog commitLog) {
@@ -45,15 +43,15 @@ public class LogConsumer implements Runnable {
                 Object object = logQueue.take();
                 if (object instanceof CommitLog) {
                     CommitLog commitLog = (CommitLog) object;
-                    logDAO.saveCommitLog(commitLog);
+                    logService.saveCommitLog(commitLog);
                     log.info("持久化 {} 代码提交日志完成...", commitLog.getAppId());
                 } else if (object instanceof BuildLog) {
                     BuildLog buildLog = (BuildLog) object;
-                    logDAO.saveBuildLog(buildLog);
+                    logService.saveBuildLog(buildLog);
                     log.info("持久化 {} 构建日志完成...", buildLog.getAppId());
                 } else if (object instanceof DeployLog) {
                     DeployLog deployLog = (DeployLog) object;
-                    logDAO.saveDeployLog(deployLog);
+                    logService.saveDeployLog(deployLog);
                     log.info("持久化 {} 部署日志完成...", deployLog.getAppId());
                 }
             } catch (InterruptedException e) {

+ 54 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/log/BuildDeployLogService.java

@@ -0,0 +1,54 @@
+package cn.reghao.autodop.dmaster.app.service.log;
+
+import cn.reghao.autodop.dmaster.app.entity.log.BuildDeployApp;
+import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
+import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
+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.entity.log.CommitLog;
+import cn.reghao.autodop.dmaster.app.service.crud.BuildDeployAppCrudService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 持久化构建、部署日志
+ *
+ * @author reghao
+ * @date 2020-05-26 17:35:26
+ */
+@Slf4j
+@Service
+public class BuildDeployLogService {
+    private CommitLogRepository commitLogRepository;
+    private BuildLogRepository buildLogRepository;
+    private DeployLogRepository deployLogRepository;
+    private BuildDeployAppCrudService buildDeployAppCrudService;
+
+    public BuildDeployLogService(CommitLogRepository commitLogRepository,
+                                 BuildLogRepository buildLogRepository,
+                                 DeployLogRepository deployLogRepository,
+                                 BuildDeployAppCrudService buildDeployAppCrudService) {
+        this.commitLogRepository = commitLogRepository;
+        this.buildLogRepository = buildLogRepository;
+        this.deployLogRepository = deployLogRepository;
+        this.buildDeployAppCrudService = buildDeployAppCrudService;
+    }
+
+    @Transactional(rollbackFor = {Exception.class})
+    public void saveCommitLog(CommitLog commitLog) {
+        commitLogRepository.save(commitLog);
+    }
+
+    @Transactional(rollbackFor = {Exception.class})
+    public void saveBuildLog(BuildLog buildLog) throws Exception {
+        buildLogRepository.save(buildLog);
+        buildDeployAppCrudService.addOrUpdate(BuildDeployApp.of(buildLog));
+    }
+
+    @Transactional(rollbackFor = {Exception.class})
+    public void saveDeployLog(DeployLog deployLog) {
+        deployLogRepository.save(deployLog);
+    }
+}

+ 0 - 77
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployAppVO.java

@@ -1,77 +0,0 @@
-package cn.reghao.autodop.dmaster.app.vo.log;
-
-import cn.reghao.autodop.common.utils.DatetimeConverter;
-import cn.reghao.autodop.dmaster.app.entity.BuildDeployApp;
-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 lombok.NoArgsConstructor;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 应用构建部署结果
- *
- * @author reghao
- * @date 2020-03-12 14:56:05
- */
-@Data
-@NoArgsConstructor
-public class BuildDeployAppVO {
-    // 0 - 成功 1 - 失败
-    private int statusCode;
-    private String msg;
-
-    private String appId;
-    private String commitId;
-    private String bdType;
-    private String bdTime;
-
-    public static BuildDeployAppVO fromBuildDeployApp(BuildDeployApp buildDeployApp) {
-        BuildDeployAppVO buildDeployAppVO = new BuildDeployAppVO();
-        buildDeployAppVO.setAppId(buildDeployApp.getAppId());
-        buildDeployAppVO.setCommitId(buildDeployApp.getCommitId());
-        buildDeployAppVO.setBdType(buildDeployApp.getBdType());
-        buildDeployAppVO.setBdTime(buildDeployApp.getBdTime());
-
-        return buildDeployAppVO;
-    }
-
-    public static BuildDeployAppVO fromBuildLog(BuildLog buildLog) {
-        BuildDeployAppVO buildDeployAppVO = new BuildDeployAppVO();
-        buildDeployAppVO.setAppId(buildLog.getAppId());
-        buildDeployAppVO.setCommitId(buildLog.getCommitId());
-        buildDeployAppVO.setBdType("构建");
-        buildDeployAppVO.setBdTime(DatetimeConverter.format(buildLog.getBuildTime()));
-        buildDeployAppVO.setStatusCode(buildLog.getStatusCode());
-        if (buildLog.getStatusCode() == 0) {
-            buildDeployAppVO.setMsg("构建成功");
-        } else {
-            buildDeployAppVO.setMsg(buildLog.getErrDetail());
-        }
-
-        return buildDeployAppVO;
-    }
-
-    public static BuildDeployAppVO fromDeployLog(DeployLog deployLog) {
-        BuildDeployAppVO buildDeployAppVO = new BuildDeployAppVO();
-        buildDeployAppVO.setAppId(deployLog.getAppId());
-        buildDeployAppVO.setCommitId(deployLog.getCommitId());
-        buildDeployAppVO.setBdType("部署");
-        buildDeployAppVO.setBdTime(deployLog.getDeployTime());
-
-        List<String> deployFailure = deployLog.getDeployResults().stream()
-                .filter(log -> log.getStatusCode() != 0)
-                .map(DeployResult::getMsg)
-                .collect(Collectors.toList());
-        if (deployFailure.isEmpty()) {
-            buildDeployAppVO.setMsg("部署成功");
-        } else {
-            buildDeployAppVO.setMsg(deployFailure.toString());
-        }
-
-        return buildDeployAppVO;
-    }
-}

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

@@ -1,8 +1,8 @@
 package cn.reghao.autodop.dmaster.app.vo.log;
 
 import cn.reghao.autodop.common.utils.DatetimeConverter;
-import cn.reghao.autodop.dmaster.app.service.build.tools.repo.ChangedFile;
-import cn.reghao.autodop.dmaster.app.service.build.tools.repo.CommitLog;
+import cn.reghao.autodop.dmaster.app.entity.log.ChangedFile;
+import cn.reghao.autodop.dmaster.app.entity.log.CommitLog;
 import lombok.Data;
 
 import java.util.List;

+ 4 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/controller/App3CrudController.java

@@ -30,7 +30,7 @@ public class App3CrudController {
     public String addApp3(@RequestBody String jsonData) {
         App3 app3 = (App3) JsonConverter.jsonToObject(jsonData, App3.class);
         if (isApp3Valid(app3)) {
-            app3CrudService.addOrModify(app3);
+            app3CrudService.addOrUpdate(app3);
             return WebResult.success("add done...");
         }
 
@@ -51,7 +51,7 @@ public class App3CrudController {
     public String modifyApp3(@RequestBody String jsonData) {
         App3 app3 = (App3) JsonConverter.jsonToObject(jsonData, App3.class);
         if (isApp3Valid(app3)) {
-            app3CrudService.addOrModify(app3);
+            app3CrudService.addOrUpdate(app3);
             return WebResult.success("put done...");
         }
 
@@ -72,7 +72,7 @@ public class App3CrudController {
     public String addApp3Bak(@RequestBody String jsonData) throws Exception {
         App3Bak app3Bak = (App3Bak) JsonConverter.jsonToObject(jsonData, App3Bak.class);
         if (isApp3BakValid(app3Bak)) {
-            app3BakCrudService.addOrModify(app3Bak);
+            app3BakCrudService.addOrUpdate(app3Bak);
             return WebResult.success("add done...");
         }
 
@@ -93,7 +93,7 @@ public class App3CrudController {
     public String modifyApp3Bak(@RequestBody String jsonData) throws Exception {
         App3Bak app3Bak = (App3Bak) JsonConverter.jsonToObject(jsonData, App3Bak.class);
         if (isApp3BakValid(app3Bak)) {
-            app3BakCrudService.addOrModify(app3Bak);
+            app3BakCrudService.addOrUpdate(app3Bak);
             return WebResult.success("put done...");
         }
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/scheduler/ScriptBakJob.java

@@ -48,7 +48,7 @@ public class ScriptBakJob implements Job {
                 app3BakLog.setSuccess(false);
                 app3BakLog.setResult(shellResult.getStderr());
             }
-            mongoCrud.addOrModify(app3BakLog);
+            mongoCrud.addOrUpdate(app3BakLog);
         } catch (Exception e) {
             app3BakLog.setSuccess(false);
             app3BakLog.setResult(e.getMessage());

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakCrudService.java

@@ -28,7 +28,7 @@ public class App3BakCrudService implements CrudOps<App3Bak> {
     }
 
     @Override
-    public void addOrModify(App3Bak app3Bak) throws Exception {
+    public void addOrUpdate(App3Bak app3Bak) throws Exception {
         String app3Name = app3Bak.getApp3Name();
         App3 app3 = app3Repository.findByIsDeleteFalseAndApp3Name(app3Name);
         if (app3 == null) {

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3BakLogCrudService.java

@@ -22,7 +22,7 @@ public class App3BakLogCrudService implements CrudOps<App3BakLog> {
     }
 
     @Override
-    public void addOrModify(App3BakLog app3BakLog) {
+    public void addOrUpdate(App3BakLog app3BakLog) {
         app3BakLogRepository.save(app3BakLog);
     }
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/service/crud/App3CrudService.java

@@ -24,7 +24,7 @@ public class App3CrudService implements CrudOps<App3> {
     }
 
     @Override
-    public void addOrModify(App3 app3) {
+    public void addOrUpdate(App3 app3) {
         App3 app3Entity = app3Repository.findByIsDeleteFalseAndApp3Name(app3.getApp3Name());
         if (app3Entity != null) {
             // 若是新增,这三项值数据库会自动生成

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/MachineMessageDispatcher.java

@@ -33,7 +33,7 @@ public class MachineMessageDispatcher implements MessageDispatcher {
                 case machineRegistryOps:
                     log.info("机器注册消息...");
                     MachineRegistry machineRegistry = (MachineRegistry) JsonConverter.jsonToObject(payload, MachineRegistry.class);
-                    machineCrudService.addOrModify(machineRegistry);
+                    machineCrudService.addOrUpdate(machineRegistry);
                     break;
                 case machineHeartbeatOps:
                     log.info("机器心跳消息...");
@@ -44,7 +44,7 @@ public class MachineMessageDispatcher implements MessageDispatcher {
                 case machineLogOps:
                     log.info("dagent 日志消息...");
                     MachineLog machineLog = (MachineLog) JsonConverter.jsonToObject(payload, MachineLog.class);
-                    machineLogCrudService.addOrModify(machineLog);
+                    machineLogCrudService.addOrUpdate(machineLog);
                     break;
                 default:
                     log.info("来自机器的消息...");

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/crud/MachineCrudService.java

@@ -22,7 +22,7 @@ public class MachineCrudService implements CrudOps<MachineRegistry> {
     }
 
     @Override
-    public void addOrModify(MachineRegistry machineRegistry) throws Exception {
+    public void addOrUpdate(MachineRegistry machineRegistry) throws Exception {
         // 重复 machineId 则更新
         MachineRegistry machineEntity = machineRepository.findByMachineId(machineRegistry.getMachineId());
         if (machineEntity == null) {

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/crud/MachineLogCrudService.java

@@ -21,7 +21,7 @@ public class MachineLogCrudService implements CrudOps<MachineLog> {
     }
 
     @Override
-    public void addOrModify(MachineLog machineLog) throws Exception {
+    public void addOrUpdate(MachineLog machineLog) throws Exception {
         machineLogRepository.save(machineLog);
     }
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/mongo/MongoCrud.java

@@ -23,7 +23,7 @@ public class MongoCrud<T> implements CrudOps<T> {
     }
 
     @Override
-    public void addOrModify(T t) {
+    public void addOrUpdate(T t) {
     }
 
     @Override