Sfoglia il codice sorgente

update DeployStatImpl

reghao 1 anno fa
parent
commit
eca66dd4dc

+ 2 - 0
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/AppDeployingNode.java

@@ -8,6 +8,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import javax.persistence.Embeddable;
+import javax.persistence.OneToOne;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
@@ -22,6 +23,7 @@ public class AppDeployingNode implements Serializable {
     private static final long serialVersionUID = 1L;
 
     //private Integer deployConfigId;
+    @OneToOne
     private AppDeployConfig deployConfig;
     private LocalDateTime deployTime;
     private String deployResult;

+ 2 - 6
web/src/main/java/cn/reghao/bnt/web/devops/app/model/vo/AppDeployingVO.java

@@ -23,14 +23,12 @@ public class AppDeployingVO {
     private String deployTime;
     private String deployResult;
 
-    public AppDeployingVO(AppDeploying appDeploying, String machineStatus, String deployResult) {
-        AppDeployingNode deployingNode = appDeploying.getDeployingNodes().get(0);
+    public AppDeployingVO(AppDeployingNode deployingNode, BuildLog buildLog, String machineStatus, String deployResult) {
         MachineHost machineHost = deployingNode.getDeployConfig().getMachineHost();
         this.machineId = machineHost.getMachineId();
         this.machineIpv4 = machineHost.getMachineIpv4();
         this.machineStatus = machineStatus;
 
-        BuildLog buildLog = appDeploying.getBuildLog();
         if (buildLog != null) {
             this.commitId = buildLog.getCommitId() != null ? buildLog.getCommitId() : NotAvailable.na.getDesc();
             this.packagePath = buildLog.getPackagePath() != null ? buildLog.getPackagePath() : NotAvailable.na.getDesc();
@@ -46,14 +44,12 @@ public class AppDeployingVO {
         this.deployResult = deployResult;
     }
 
-    public AppDeployingVO(AppDeploying appDeploying, String machineStatus) {
-        AppDeployingNode deployingNode = appDeploying.getDeployingNodes().get(0);
+    public AppDeployingVO(AppDeployingNode deployingNode, BuildLog buildLog, String machineStatus) {
         MachineHost machineHost = deployingNode.getDeployConfig().getMachineHost();
         this.machineId = machineHost.getMachineId();
         this.machineIpv4 = machineHost.getMachineIpv4();
         this.machineStatus = machineStatus;
 
-        BuildLog buildLog = appDeploying.getBuildLog();
         if (buildLog != null) {
             this.commitId = buildLog.getCommitId() != null ? buildLog.getCommitId() : NotAvailable.na.getDesc();
             this.packagePath = buildLog.getPackagePath() != null ? buildLog.getPackagePath() : NotAvailable.na.getDesc();

+ 20 - 29
web/src/main/java/cn/reghao/bnt/web/devops/app/service/bd/impl/DeployStatImpl.java

@@ -112,12 +112,12 @@ public class DeployStatImpl implements DeployStat {
 
     @Override
     public void afterBuild(AppBuilding appBuilding) {
-        String appId = appBuilding.getAppConfig().getAppId();
-        /*List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
-        list.forEach(appDeploying -> {
-            appDeploying.afterBuild(appBuilding);
-        });
-        deployingRepository.saveAll(list);*/
+        AppConfig appConfig = appBuilding.getAppConfig();
+        AppDeploying appDeploying = deployingRepository.findByAppConfig(appConfig);
+        if (appDeploying != null) {
+            appDeploying.setBuildLog(appBuilding.getBuildLog());
+            deployingRepository.save(appDeploying);
+        }
     }
 
     @Override
@@ -196,32 +196,23 @@ public class DeployStatImpl implements DeployStat {
 
     @Override
     public List<AppDeployingVO> get(String appId, AppBuilding appBuilding) {
-        List<AppDeploying> list = Collections.emptyList();
-        if (list.isEmpty()) {
+        AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
+        if (appDeploying == null) {
             return Collections.emptyList();
         }
 
-        return list.stream().map(appDeploying -> {
-                    MachineHost machineHost = appDeploying.getDeployingNodes().get(0).getDeployConfig().getMachineHost();
-                    String machineStatus = machineService.isAgentOnline(machineHost.getMachineId())
-                            ? NodeStatus.Online.name() : NodeStatus.Offline.name();
-
-                    if (appBuilding == null || appBuilding.getBuildCode() != ResultStatus.SUCCESS.getCode()) {
-                        return new AppDeployingVO(appDeploying, machineStatus);
-                    }
-
-                    AppDeployingVO appDeployingVO;
-                    String buildLogId1 = appDeploying.getBuildLog().getBuildLogId();
-                    if (buildLogId1.equals(appBuilding.getBuildLog().getBuildLogId())) {
-                        appDeployingVO = new AppDeployingVO(appDeploying, machineStatus);
-                    } else {
-                        appDeployingVO = new AppDeployingVO(appDeploying, machineStatus, DeployStatus.neverDeploy.getDesc());
-                    }
-                    return appDeployingVO;
-                })
-                // 降序
-                .sorted(Comparator.comparing(AppDeployingVO::getDeployTime).reversed())
-                .collect(Collectors.toList());
+        BuildLog buildLog = appDeploying.getBuildLog();
+        return appDeploying.getDeployingNodes().stream().map(appDeployingNode -> {
+            MachineHost machineHost = appDeployingNode.getDeployConfig().getMachineHost();
+            String machineStatus = machineService.isAgentOnline(machineHost.getMachineId())
+                    ? NodeStatus.Online.name() : NodeStatus.Offline.name();
+
+            if (buildLog == null || buildLog.getCode() != ResultStatus.SUCCESS.getCode()) {
+                return new AppDeployingVO(appDeployingNode, null, machineStatus);
+            }
+
+            return new AppDeployingVO(appDeployingNode, buildLog, machineStatus, DeployStatus.neverDeploy.getDesc());
+        }).sorted(Comparator.comparing(AppDeployingVO::getDeployTime).reversed()).collect(Collectors.toList());
     }
 
     @Override

+ 34 - 6
web/src/test/java/cn/reghao/bnt/web/devops/AppConfigTest.java

@@ -6,6 +6,10 @@ import cn.reghao.bnt.web.devops.app.db.repository.AppDeployingRepository;
 import cn.reghao.bnt.web.devops.app.db.repository.config.AppConfigRepository;
 import cn.reghao.bnt.web.devops.app.db.repository.config.AppDeployConfigRepository;
 import cn.reghao.bnt.web.devops.app.model.po.AppBuilding;
+import cn.reghao.bnt.web.devops.app.model.po.AppDeploying;
+import cn.reghao.bnt.web.devops.app.model.po.AppDeployingNode;
+import cn.reghao.bnt.web.devops.app.model.po.config.AppConfig;
+import cn.reghao.bnt.web.devops.app.model.po.config.AppDeployConfig;
 import cn.reghao.bnt.web.sys.service.NotifyService;
 import cn.reghao.bnt.web.sys.db.repository.EmailAccountRepository;
 import cn.reghao.bnt.web.sys.db.repository.NotifyReceiverRepository;
@@ -17,6 +21,8 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.List;
+
 /**
  * @author reghao
  * @date 2022-08-17 15:53:04
@@ -51,14 +57,36 @@ public class AppConfigTest {
     AppDeployConfigRepository deployConfigRepository;
     @Test
     public void appConfigTest() {
-        configRepository.findAll().forEach(appConfig -> {
+        /*configRepository.findAll().forEach(appConfig -> {
             AppBuilding appBuilding = new AppBuilding(appConfig);
             buildingRepository.save(appBuilding);
-        });
-
-        /*deployConfigRepository.findAll().forEach(appDeployConfig -> {
-            AppDeploying appDeploying = new AppDeploying(appDeployConfig);
-            deployingRepository.save(appDeploying);
         });*/
+
+        deployConfigRepository.findAll().forEach(appDeployConfig -> {
+            AppConfig appConfig = appDeployConfig.getAppConfig();
+            AppDeploying appDeploying = deployingRepository.findByAppConfig(appConfig);
+            if (appDeploying == null) {
+                appDeploying = new AppDeploying(appDeployConfig);
+                deployingRepository.save(appDeploying);
+            } else {
+                String machineId = appDeployConfig.getMachineHost().getMachineId();
+
+                boolean exist = false;
+                List<AppDeployingNode> deployingNodes = appDeploying.getDeployingNodes();
+                for (AppDeployingNode deployingNode : deployingNodes) {
+                    AppDeployConfig deployConfig = deployingNode.getDeployConfig();
+                    String machineId1 = deployConfig.getMachineHost().getMachineId();
+                    if (machineId.equals(machineId1)) {
+                        exist = true;
+                        break;
+                    }
+                }
+
+                if (!exist) {
+                    deployingNodes.add(new AppDeployingNode(appDeployConfig));
+                    deployingRepository.save(appDeploying);
+                }
+            }
+        });
     }
 }