reghao 5 gadi atpakaļ
vecāks
revīzija
8d0e080206
17 mainītis faili ar 173 papildinājumiem un 181 dzēšanām
  1. 0 0
      dagent/src/main/resources/logback-spring.xml.bak
  2. 43 0
      dagent/src/main/resources/logback.xml
  3. 14 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildController.java
  4. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java
  5. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestration.java
  6. 3 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/BuildLogRepository.java
  7. 23 46
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/LogRepository.java
  8. 48 77
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildService.java
  9. 4 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/OrchestrateService.java
  10. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/BuildDispatcher.java
  11. 1 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java
  12. 1 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/tools/updater/CommitLog.java
  13. 0 24
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/AppToBuild.java
  14. 17 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/SuccessfullyBuildVO.java
  15. 13 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildDeployResult.java
  16. 0 21
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/log/BuildLogVO.java
  17. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/config/WebSecurityConfig.java

+ 0 - 0
dagent/src/main/resources/logback-spring.xml → dagent/src/main/resources/logback-spring.xml.bak


+ 43 - 0
dagent/src/main/resources/logback.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false">
+    <!--定义日志文件的绝对路径-->
+    <property name="LOG_HOME" value="/home/reghao/dev/logs" />
+
+    <!-- 控制台输出 -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="RABBITMQ" class="org.springframework.amqp.rabbit.logback.AmqpAppender">
+        <layout>
+            <pattern><![CDATA[ %d %p %t [%c] - <%m>%n ]]></pattern>
+        </layout>
+        <!--rabbitmq地址 -->
+        <addresses>localhost:5672</addresses>
+        <username>reghao</username>
+        <password>12345678</password>
+        <declareExchange>true</declareExchange>
+        <exchangeType>direct</exchangeType>
+        <exchangeName>rabbit.log</exchangeName>
+        <routingKeyPattern>info</routingKeyPattern>
+        <generateId>true</generateId>
+        <charset>UTF-8</charset>
+        <durable>true</durable>
+        <deliveryMode>NON_PERSISTENT</deliveryMode>
+        <autoDelete>false</autoDelete>
+    </appender>
+
+    <logger name="cn.reghao.rabbitmq" level="info" additivity="false">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="RABBITMQ"/>
+    </logger>
+
+    <!-- 日志输出级别,level 默认值 DEBUG,root 其实是 logger,它是 logger 的根 -->
+    <root level="INFO">
+        <appender-ref ref="STDOUT" />
+        <appender-ref ref="RABBITMQ" />
+    </root>
+</configuration>

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

@@ -1,9 +1,9 @@
 package cn.reghao.autodop.dmaster.app.controller;
 
 import cn.reghao.autodop.dmaster.app.constant.EnvType;
+import cn.reghao.autodop.dmaster.app.vo.SuccessfullyBuildVO;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import cn.reghao.autodop.dmaster.app.service.BuildService;
-import cn.reghao.autodop.dmaster.app.vo.AppToBuild;
 import cn.reghao.autodop.dmaster.app.vo.PageList;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildLogVO;
 import cn.reghao.autodop.dmaster.app.vo.log.CommitLogVO;
@@ -94,9 +94,19 @@ public class BuildController {
                                             @RequestParam("size") int size) {
         String env1 = EnvType.valueOf(env).name();
         PageRequest pageRequest =
-                PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "updateTime"));
-        buildService.buildList1(env1, pageRequest);
-        PageList<AppToBuild> pageList = buildService.buildList(env1, pageRequest);
+                PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "createTime"));
+        PageList<BuildDeployResult> pageList = buildService.buildList(env1, pageRequest);
+        return ResponseEntity.ok().body(WebResult.success(pageList));
+    }
+
+    @ApiOperation(value = "某个应用成功的构建列表")
+    @GetMapping("/list/successfully")
+    public ResponseEntity<String> successfullyBuilds(@RequestParam("appId") String appId,
+                                            @RequestParam("page") int page,
+                                            @RequestParam("size") int size) {
+        PageRequest pageRequest =
+                PageRequest.of(page-1, size, Sort.by(Sort.Direction.DESC, "createTime"));
+        PageList<SuccessfullyBuildVO> pageList = buildService.successfullyBuilds(appId, pageRequest);
         return ResponseEntity.ok().body(WebResult.success(pageList));
     }
 

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

@@ -25,7 +25,7 @@ public class BuildLog extends BaseEntity {
     // 0 - 成功 1 - 失败 2 - 未更改
     private int statusCode;
     private String msg;
-    // TODO 由于错误详情的长度不定,单独存放到一张表中
+    // TODO Data too long for column 'err_detail' at row 1
     @Column(length = 1024)
     private String errDetail;
 

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

@@ -21,7 +21,7 @@ import javax.persistence.*;
 @EqualsAndHashCode(callSuper = false)
 @Entity
 public class AppOrchestration extends BaseEntity implements Cloneable {
-    /* 不可更改的属性 */
+    // TODO 仅允许小写和 ‘_’ ‘-’ 等字符
     @Column(nullable = false, unique = true)
     private String appId;
     @Column(nullable = false)

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

@@ -13,7 +13,9 @@ import org.springframework.data.jpa.repository.JpaRepository;
  * @date 2020-01-21 14:53:03
  */
 public interface BuildLogRepository extends JpaRepository<BuildLog, Long> {
-    Page<BuildLog> findByAppId(String env, Pageable pageable);
+    BuildLog findFirstByAppIdOrderByCreateTimeDesc(String appId);
+    // 应用成功构建的列表
+    Page<BuildLog> findByAppIdAndStatusCode(String appId, int statusCode, Pageable pageable);
     // 应用每个版本正确构建的日志只有唯一一条记录
     BuildLog findByCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
             CommitLog commitLog, AppCompile appCompile, AppPack appPack, String appId, int statusCode);

+ 23 - 46
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/repository/log/LogRepository.java

@@ -1,10 +1,7 @@
 package cn.reghao.autodop.dmaster.app.repository.log;
 
-import cn.reghao.autodop.dmaster.app.entity.deploy.DeployedApp;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
-import cn.reghao.autodop.dmaster.app.repository.deploy.DeployedAppRepository;
-import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
 import cn.reghao.autodop.dmaster.app.vo.log.BuildDeployResult;
 import lombok.extern.slf4j.Slf4j;
@@ -32,39 +29,33 @@ public class LogRepository {
     private CommitLogRepository commitLogRepository;
     private BuildLogRepository buildLogRepository;
     private DeployLogRepository deployLogRepository;
-    private DeployedAppRepository deployedAppRepository;
-    private AppOrchestrationRepository appRepository;
 
     public LogRepository(CommitLogRepository commitLogRepository,
                          BuildLogRepository buildLogRepository,
-                         DeployLogRepository deployLogRepository,
-                         DeployedAppRepository deployedAppRepository,
-                         AppOrchestrationRepository appRepository) {
+                         DeployLogRepository deployLogRepository) {
         this.commitLogRepository = commitLogRepository;
         this.buildLogRepository = buildLogRepository;
         this.deployLogRepository = deployLogRepository;
-        this.deployedAppRepository = deployedAppRepository;
-        this.appRepository = appRepository;
     }
 
     @Transactional(rollbackFor = {Exception.class})
     public void saveBuildLog(BuildLog buildLog) {
         CommitLog commitLog = buildLog.getCommitLog();
-        CommitLog e = commitLogRepository.findByCommitId(commitLog.getCommitId());
-        if (e != null) {
-            buildLog.setCommitLog(e);
-        } else {
+        CommitLog entity = commitLogRepository.findByCommitId(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 entity = buildLogRepository.findByCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
-                commitLog, buildLog.getAppCompile(), buildLog.getAppPack(), buildLog.getAppId(), 0);
+        BuildLog entity1 = buildLogRepository.findByCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
+                entity, buildLog.getAppCompile(), buildLog.getAppPack(), buildLog.getAppId(), 0);
         // 当前 commit 构建成功的 BuildLog 已存在时不再更新
-        if (entity == null) {
+        if (entity1 == null) {
             buildLog.setIsDelete(false);
             LocalDateTime now = LocalDateTime.now();
             buildLog.setCreateTime(now);
@@ -75,44 +66,30 @@ public class LogRepository {
 
     @Transactional(rollbackFor = {Exception.class})
     public void saveDeployLog(DeployLog deployLog) {
-        /*BuildLog buildLog = deployLog.getBuildLog();
-        AppOrchestration app = buildLog.getApp();
+        BuildLog buildLog = deployLog.getBuildLog();
         String commitId = buildLog.getCommitLog().getCommitId();
-        BuildLog entity = buildLogRepository.findByAppAndAppCompileAndAppPackAndCommitLog_CommitIdAndStatusCode(
-                app, app.getAppBuild().getAppCompile(), app.getAppBuild().getAppPack(), commitId, 0);
-        if (entity != null) {
-            deployLog.setBuildLog(entity);
+        CommitLog entity = commitLogRepository.findByCommitId(commitId);
+        if (entity == null) {
+            log.error("{} 的 {} 版本更新日志未持久化...", buildLog.getAppId(), commitId);
+            return;
+        }
+
+        BuildLog entity1 = buildLogRepository.findByCommitLogAndAppCompileAndAppPackAndAppIdAndStatusCode(
+                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);
-        }*/
-    }
-
-    private void saveOrUpdateDeployedApp(BuildLog buildLog) {
-        /*AppOrchestration app = buildLog.getApp();
-        DeployedApp entity = deployedAppRepository.findByApp(app);
-        // TODO 新增或更新
-        if (entity == null) {
-            entity = deployedApp(buildLog);
-            deployedAppRepository.save(entity);
         } else {
-            entity.setCommitId(buildLog.getCommitLog().getCommitId());
-            entity.setUpdateTime(LocalDateTime.now());
-            deployedAppRepository.save(entity);
-        }*/
-    }
-
-    private DeployedApp deployedApp(BuildLog buildLog) {
-        DeployedApp deployedApp = new DeployedApp();
-        /*deployedApp.setApp(buildLog.getApp());
-        deployedApp.setCommitId(buildLog.getCommitLog().getCommitId());*/
-        return deployedApp;
+            log.error("{} 的 {} 版本构建日志未持久化...", buildLog.getAppId(), commitId);
+        }
     }
 
-    public void test() {
-        Specification spec = new Specification<BuildDeployResult>() {
+    public void list() {
+        Specification<BuildDeployResult> spec = new Specification<BuildDeployResult>() {
             @Override
             public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) {
                 List<Predicate> list = new ArrayList<>();

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

@@ -3,12 +3,11 @@ package cn.reghao.autodop.dmaster.app.service;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import cn.reghao.autodop.dmaster.app.entity.orchestration.AppOrchestration;
-import cn.reghao.autodop.dmaster.app.repository.dao.AppDAO;
 import cn.reghao.autodop.dmaster.app.repository.log.BuildLogRepository;
 import cn.reghao.autodop.dmaster.app.repository.log.DeployLogRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.*;
-import cn.reghao.autodop.dmaster.app.vo.AppToBuild;
 import cn.reghao.autodop.dmaster.app.vo.PageList;
+import cn.reghao.autodop.dmaster.app.vo.SuccessfullyBuildVO;
 import cn.reghao.autodop.dmaster.app.vo.log.*;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -16,7 +15,6 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -25,100 +23,73 @@ import java.util.stream.Collectors;
  */
 @Service
 public class BuildService {
+    private AppOrchestrationRepository appRepository;
     private BuildLogRepository buildLogRepository;
     private DeployLogRepository deployLogRepository;
-    private AppOrchestrationRepository appRepository;
-    private AppDAO appDAO;
 
-    public BuildService(BuildLogRepository buildLogRepository,
-                        DeployLogRepository deployLogRepository,
-                        AppOrchestrationRepository appRepository,
-                        AppDAO appDAO) {
+    public BuildService(AppOrchestrationRepository appRepository,
+                        BuildLogRepository buildLogRepository,
+                        DeployLogRepository deployLogRepository) {
+        this.appRepository = appRepository;
         this.buildLogRepository = buildLogRepository;
         this.deployLogRepository = deployLogRepository;
-        this.appRepository = appRepository;
-        this.appDAO = appDAO;
     }
 
-    public PageList<BuildDeployResult> buildList1(String env, PageRequest pageRequest) {
-        List<BuildDeployResult> results = new ArrayList<>();
+    public PageList<BuildDeployResult> buildList(String env, PageRequest pageRequest) {
+        PageList<BuildDeployResult> results = new PageList<>();
         Page<AppOrchestration> apps = appRepository.findAllByIsDeleteIsFalseAndEnableIsTrueAndEnv(env, pageRequest);
-        // 找出每个 app 最新的构建日志
-
-        // 若 app 构建成功,则找出其部署日志
-
-        return null;
-    }
+        results.setTotalPages(apps.getTotalPages());
+        results.setTotalSize(apps.getTotalElements());
+        results.setHasNext(apps.hasNext());
 
-    public PageList<AppToBuild> buildList(String env, PageRequest pageRequest) {
-        PageList<AppToBuild> pageList = new PageList<>();
-        // 找出所有需要构建部署的应用
-        Page<AppOrchestration> apps = appRepository.findAllByIsDeleteIsFalseAndEnableIsTrueAndEnv(env, pageRequest);
-        pageList.setTotalSize(apps.getTotalElements());
-        pageList.setTotalPages(apps.getTotalPages());
-        Set<String> appIds = apps.stream()
-                .map(AppOrchestration::getAppId)
-                .collect(Collectors.toSet());
-
-        List<AppToBuild> appToBuilds = new ArrayList<>();
-        // TODO appRepository 和 appDAO 使用的同一个 session,appDAO 显式关闭 session 后前者无法再使用
-        List list = appDAO.findBuildApps(env);
-        list.forEach(ele -> {
-            Object[] objects = (Object[]) ele;
-            if (appIds.contains(String.valueOf(objects[0]))) {
-                appToBuilds.add(new AppToBuild(String.valueOf(objects[0]), String.valueOf(objects[1]),
-                        String.valueOf(objects[2]), String.valueOf(objects[3])));
-                appIds.remove(String.valueOf(objects[0]));
+        // TODO 待优化代码,使用一条 SQL 语句完成?
+        // 找出每个 app 最新的构建日志
+        List<BuildDeployResult> list = new ArrayList<>();
+        for (AppOrchestration app : apps.getContent()) {
+            BuildLog buildLog = buildLogRepository.findFirstByAppIdOrderByCreateTimeDesc(app.getAppId());
+            if (buildLog != null) {
+                // 若 app 构建成功,则找出其部署日志
+                List<DeployLog> deployLogs = deployLogRepository.findByBuildLog(buildLog);
+                if (!deployLogs.isEmpty()) {
+                    list.add(BuildDeployResult.fromDeployLogs(deployLogs));
+                } else {
+                    list.add(BuildDeployResult.fromBuildLog(buildLog));
+                }
+            } else {
+                list.add(new BuildDeployResult(app.getAppId()));
             }
-        });
-        appIds.forEach(appId -> {
-            appToBuilds.add(new AppToBuild(appId, env));
-        });
-        pageList.setList(appToBuilds);
-        return pageList;
+        }
+        results.setList(list);
+        return results;
     }
 
-    public PageList<CommitLogVO> commitLogs(String env, PageRequest pageRequest) {
-        Page<BuildLog> buildLogs = buildLogRepository.findByAppId(env, pageRequest);
-        PageList<CommitLogVO> pageList = new PageList<>();
-        pageList.setTotalSize(buildLogs.getTotalElements());
+    public PageList<SuccessfullyBuildVO> successfullyBuilds(String appId, PageRequest pageRequest) {
+        PageList<SuccessfullyBuildVO> pageList = new PageList<>();
+        Page<BuildLog> buildLogs = buildLogRepository.findByAppIdAndStatusCode(appId, 0, pageRequest);
         pageList.setTotalPages(buildLogs.getTotalPages());
-        /*pageList.setList(buildLogs.getContent().stream()
-                .map(buildLog -> CommitLogVO.of(buildLog.getApp().getAppId(), buildLog.getCommitLog()))
-                .collect(Collectors.toList()));*/
-        return pageList;
-    }
-
-    public PageList<BuildLogVO> buildLogs(String env, PageRequest pageRequest) {
-        Page<BuildLog> buildLogs = buildLogRepository.findByAppId(env, pageRequest);
-        PageList<BuildLogVO> pageList = new PageList<>();
         pageList.setTotalSize(buildLogs.getTotalElements());
-        pageList.setTotalPages(buildLogs.getTotalPages());
+        pageList.setHasNext(buildLogs.hasNext());
         pageList.setList(buildLogs.stream()
-                .map(BuildLogVO::of)
+                .map(buildLog -> {
+                    String commitId = buildLog.getCommitLog().getCommitId();
+                    String commitMsg = buildLog.getCommitLog().getCommitMsg();
+                    String appPath = buildLog.getAppPath();
+                    String buildTime = buildLog.getBuildTime().toString();
+                    return new SuccessfullyBuildVO(commitId, commitMsg, appPath, buildTime);
+                })
                 .collect(Collectors.toList()));
-
         return pageList;
     }
 
-    public PageList<DeployLogVO> deployLogs(String env, PageRequest pageRequest) {
-        Page<DeployLog> deployLogs = deployLogRepository.findByBuildLog(null, pageRequest);
-        PageList<DeployLogVO> pageList = new PageList<>();
-        pageList.setTotalSize(deployLogs.getTotalElements());
-        pageList.setTotalPages(deployLogs.getTotalPages());
+    public PageList<CommitLogVO> commitLogs(String env, PageRequest pageRequest) {
+        return null;
+    }
 
-        /*List<DeployLogVO> list = new ArrayList<>();
-        for (DeployLog deployLog : deployLogs) {
-            BuildLog buildLog = deployLog.getBuildLog();
-            String appId = buildLog.getApp().getAppId();
-            String commitId = buildLog.getCommitLog().getCommitId();
+    public PageList<BuildLogVO> buildLogs(String env, PageRequest pageRequest) {
+        return null;
+    }
 
-            Set<DeployResultVO> deployResultVOS = deployLogs.stream()
-                    .map(DeployResultVO::of)
-                    .collect(Collectors.toSet());
-            list.add(new DeployLogVO(appId, env, commitId, deployResultVOS));
-        }
-        pageList.setList(list);*/
-        return pageList;
+    public PageList<DeployLogVO> deployLogs(String env, PageRequest pageRequest) {
+        return null;
     }
 }

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

@@ -72,15 +72,18 @@ public class OrchestrateService {
                     ProjOrchestration entity = projRepository.findByProjId(appVO.getProjId());
                     app.setProj(entity);
                 }
-
+                // 新增
                 if ("add".equals(type1)) {
+                    app.setIsDelete(false);
                     appRepository.save(app);
                 } else {
+                    // 修改
                     AppOrchestration entity = appRepository.findByAppId(app.getAppId());
                     if (entity == null) {
                         throw new Exception(app.getAppId() + " 不存在...");
                     }
                     app.setId(entity.getId());
+                    app.setIsDelete(false);
                     app.setCreateTime(entity.getCreateTime());
                     app.setUpdateTime(LocalDateTime.now());
                     appRepository.save(app);

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

@@ -103,8 +103,9 @@ public class BuildDispatcher {
             }
         } catch (InterruptedException | ExecutionException e) {
             e.printStackTrace();
+        } finally {
+            onBuilding.remove(appId);
         }
-        onBuilding.remove(appId);
         return buildDeployResult;
     }
 
@@ -153,7 +154,7 @@ public class BuildDispatcher {
         AppIntegrate appIntegrate = map.get(app.getAppId());
         if (appIntegrate == null) {
             appIntegrate = new AppIntegrate(app, appDeployer);
-            // TODO 注意 AppIntegrate 的失效时机
+            // TODO AppOrchestration 更新后 AppIntegrate 需要重新获取
             map.put(app.getAppId(), appIntegrate);
         }
         return appIntegrate;

+ 1 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java

@@ -50,6 +50,7 @@ public class AppDeployer {
             hosts = appDeploy.getHosts();
         }
 
+        // TODO 处理 hosts 为空的情况,这会导致 deployLogs 为空
         long startTime = System.currentTimeMillis();
         Map<String, Future<RpcResult>> futureMap = new HashMap<>();
         for (String host : hosts) {

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

@@ -21,6 +21,7 @@ public class CommitLog extends BaseEntity {
     private String branch;
     private String commitId;
     private String commitAuthor;
+    // TODO Data too long for column 'commit_msg' at row 1
     private String commitMsg;
     // 毫秒级时间戳
     private long commitTime;

+ 0 - 24
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/AppToBuild.java

@@ -1,24 +0,0 @@
-package cn.reghao.autodop.dmaster.app.vo;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-/**
- * 需要构建部署的应用
- *
- * @author reghao
- * @date 2020-05-25 11:23:28
- */
-@AllArgsConstructor
-@Data
-public class AppToBuild {
-    private String appId;
-    private String env;
-    private String commitId;
-    private String status;
-
-    public AppToBuild(String appId, String env) {
-        this.appId = appId;
-        this.env = env;
-    }
-}

+ 17 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/SuccessfullyBuildVO.java

@@ -0,0 +1,17 @@
+package cn.reghao.autodop.dmaster.app.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2020-06-02 14:32:45
+ */
+@AllArgsConstructor
+@Data
+public class SuccessfullyBuildVO {
+    private String commitId;
+    private String commitMsg;
+    private String appPath;
+    private String buildTime;
+}

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

@@ -3,6 +3,7 @@ package cn.reghao.autodop.dmaster.app.vo.log;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.List;
 import java.util.Set;
@@ -15,28 +16,37 @@ import java.util.stream.Collectors;
  * @date 2020-03-12 14:56:05
  */
 @Data
+@NoArgsConstructor
 public class BuildDeployResult {
     private String appId;
     private String commitId;
+    private String commitMsg;
     private boolean isDeploy;
     // 0 - 成功 1 - 失败
     private int statusCode;
     private String msg;
     private String errDetail;
 
+    public BuildDeployResult(String appId) {
+        this.appId = appId;
+        this.isDeploy = false;
+    }
+
     public static BuildDeployResult fromBuildLog(BuildLog buildLog) {
         BuildDeployResult buildDeployResult = new BuildDeployResult();
-        //buildDeployResult.setAppId(buildLog.getApp().getAppId());
+        buildDeployResult.setAppId(buildLog.getAppId());
         buildDeployResult.setDeploy(false);
         buildDeployResult.setStatusCode(buildLog.getStatusCode());
         buildDeployResult.setMsg(buildLog.getMsg());
         if (buildLog.getStatusCode() == 0) {
             buildDeployResult.setCommitId(buildLog.getCommitLog().getCommitId());
+            buildDeployResult.setCommitMsg(buildLog.getCommitLog().getCommitMsg());
             return buildDeployResult;
         } else {
             buildDeployResult.setErrDetail(buildLog.getErrDetail());
             if (buildLog.getCommitLog() != null) {
                 buildDeployResult.setCommitId(buildLog.getCommitLog().getCommitId());
+                buildDeployResult.setCommitMsg(buildLog.getCommitLog().getCommitMsg());
             }
             return buildDeployResult;
         }
@@ -45,9 +55,10 @@ public class BuildDeployResult {
     public static BuildDeployResult fromDeployLogs(List<DeployLog> deployLogs) {
         BuildLog buildLog = deployLogs.get(0).getBuildLog();
         BuildDeployResult buildDeployResult = new BuildDeployResult();
-        //buildDeployResult.setAppId(buildLog.getApp().getAppId());
+        buildDeployResult.setAppId(buildLog.getAppId());
         buildDeployResult.setDeploy(true);
         buildDeployResult.setCommitId(buildLog.getCommitLog().getCommitId());
+        buildDeployResult.setCommitMsg(buildLog.getCommitLog().getCommitMsg());
 
         Set<String> failedHosts = deployLogs.stream()
                 .filter(deployLog -> deployLog.getStatusCode() != 0)

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

@@ -1,8 +1,5 @@
 package cn.reghao.autodop.dmaster.app.vo.log;
 
-import cn.reghao.autodop.common.utils.DateTimeUtil;
-import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
-import cn.reghao.autodop.dmaster.app.service.tools.updater.CommitLog;
 import lombok.Data;
 
 /**
@@ -20,22 +17,4 @@ public class BuildLogVO {
     private String buildTime;
     private int code;
     private String msg;
-
-    public static BuildLogVO of(BuildLog buildLog) {
-        BuildLogVO buildLogVO = new BuildLogVO();
-        /*buildLogVO.setAppId(buildLog.getApp().getAppId());
-        buildLogVO.setEnv(buildLog.getApp().getEnv());*/
-
-        CommitLog commitLog = buildLog.getCommitLog();
-        if (commitLog != null) {
-            buildLogVO.setCommitId(commitLog.getCommitId());
-        }
-
-        buildLogVO.setAppPath(buildLog.getAppPath());
-        buildLogVO.setBuildTime(DateTimeUtil.format(buildLog.getBuildTime()));
-        buildLogVO.setCode(buildLog.getStatusCode());
-        buildLogVO.setMsg(buildLog.getMsg());
-
-        return buildLogVO;
-    }
 }

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

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