|
@@ -2,6 +2,7 @@ package cn.reghao.autodop.dmaster.app.service;
|
|
|
|
|
|
|
|
import cn.reghao.autodop.common.utils.DateTimeConverter;
|
|
import cn.reghao.autodop.common.utils.DateTimeConverter;
|
|
|
import cn.reghao.autodop.dmaster.app.cache.BuildDeployCache;
|
|
import cn.reghao.autodop.dmaster.app.cache.BuildDeployCache;
|
|
|
|
|
+import cn.reghao.autodop.dmaster.app.constant.BuildDeployResult;
|
|
|
import cn.reghao.autodop.dmaster.app.constant.BuildStage;
|
|
import cn.reghao.autodop.dmaster.app.constant.BuildStage;
|
|
|
import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
|
|
import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
|
|
|
import cn.reghao.autodop.dmaster.app.entity.config.deploy.DeployConfig;
|
|
import cn.reghao.autodop.dmaster.app.entity.config.deploy.DeployConfig;
|
|
@@ -9,6 +10,7 @@ import cn.reghao.autodop.dmaster.app.entity.log.*;
|
|
|
import cn.reghao.autodop.dmaster.app.entity.status.BuildDeployApp;
|
|
import cn.reghao.autodop.dmaster.app.entity.status.BuildDeployApp;
|
|
|
import cn.reghao.autodop.dmaster.app.interceptor.AppIntegrateReinitInterceptor;
|
|
import cn.reghao.autodop.dmaster.app.interceptor.AppIntegrateReinitInterceptor;
|
|
|
import cn.reghao.autodop.dmaster.app.service.build.AppIntegrate;
|
|
import cn.reghao.autodop.dmaster.app.service.build.AppIntegrate;
|
|
|
|
|
+import cn.reghao.autodop.dmaster.app.service.build.tools.repo.CommitInfo;
|
|
|
import cn.reghao.autodop.dmaster.app.service.deploy.AppDeployer;
|
|
import cn.reghao.autodop.dmaster.app.service.deploy.AppDeployer;
|
|
|
import cn.reghao.autodop.dmaster.app.entity.config.AppConfig;
|
|
import cn.reghao.autodop.dmaster.app.entity.config.AppConfig;
|
|
|
import cn.reghao.autodop.dmaster.app.service.deploy.DeployNotifyMsg;
|
|
import cn.reghao.autodop.dmaster.app.service.deploy.DeployNotifyMsg;
|
|
@@ -89,15 +91,11 @@ public class BuildDeployDispatcher {
|
|
|
onBuilding.remove(appId);
|
|
onBuilding.remove(appId);
|
|
|
BuildDeployApp buildDeployApp;
|
|
BuildDeployApp buildDeployApp;
|
|
|
if (buildLog.getStatusCode() == 0 && isDeploy) {
|
|
if (buildLog.getStatusCode() == 0 && isDeploy) {
|
|
|
- List<DeployLog> deployLogs = deployApp(buildLog);
|
|
|
|
|
- if (deployLogs == null) {
|
|
|
|
|
- return BuildDeployApp.onDeploying(appId);
|
|
|
|
|
- }
|
|
|
|
|
- buildDeployApp = BuildDeployApp.of(deployLogs);
|
|
|
|
|
|
|
+ buildDeployApp = deployApp(buildLog);
|
|
|
} else {
|
|
} else {
|
|
|
buildDeployApp = BuildDeployApp.of(buildLog);
|
|
buildDeployApp = BuildDeployApp.of(buildLog);
|
|
|
}
|
|
}
|
|
|
- logConsumer.addBuildDeployApp(BuildDeployApp.of(buildLog));
|
|
|
|
|
|
|
+ logConsumer.addBuildDeployApp(buildDeployApp);
|
|
|
return buildDeployApp;
|
|
return buildDeployApp;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -112,13 +110,12 @@ public class BuildDeployDispatcher {
|
|
|
long start = System.currentTimeMillis();
|
|
long start = System.currentTimeMillis();
|
|
|
// TODO 只使用一个 try-catch
|
|
// TODO 只使用一个 try-catch
|
|
|
try {
|
|
try {
|
|
|
- CommitLog commitLog = appIntegrate.update();
|
|
|
|
|
- buildLog.setIsUpdate(commitLog.isUpdate());
|
|
|
|
|
- buildLog.setCommitId(commitLog.getCommitId());
|
|
|
|
|
- buildLog.setCommitTime(DateTimeConverter.localDateTime(commitLog.getMsCommitTime()));
|
|
|
|
|
|
|
+ CommitInfo commitInfo = appIntegrate.update();
|
|
|
|
|
+ buildLog.setCommitId(commitInfo.getCommitId());
|
|
|
|
|
+ buildLog.setCommitTime(DateTimeConverter.localDateTime(commitInfo.getMsCommitTime()));
|
|
|
buildLog.setUpdateTotalTime(System.currentTimeMillis()-start);
|
|
buildLog.setUpdateTotalTime(System.currentTimeMillis()-start);
|
|
|
|
|
|
|
|
- commitLog.setEnv(appIntegrate.app().getEnv());
|
|
|
|
|
|
|
+ CommitLog commitLog = CommitLog.of(appIntegrate.app(), commitInfo);
|
|
|
logConsumer.addCommitLog(commitLog);
|
|
logConsumer.addCommitLog(commitLog);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
buildException(buildLog, BuildStage.update, e);
|
|
buildException(buildLog, BuildStage.update, e);
|
|
@@ -146,6 +143,7 @@ public class BuildDeployDispatcher {
|
|
|
|
|
|
|
|
buildLog.setStage(BuildStage.done);
|
|
buildLog.setStage(BuildStage.done);
|
|
|
buildLog.setStatusCode(0);
|
|
buildLog.setStatusCode(0);
|
|
|
|
|
+ buildLog.setResult(BuildDeployResult.buildDone.getName());
|
|
|
buildLog.setBuildTime(LocalDateTime.now());
|
|
buildLog.setBuildTime(LocalDateTime.now());
|
|
|
return buildLog;
|
|
return buildLog;
|
|
|
}
|
|
}
|
|
@@ -164,20 +162,27 @@ public class BuildDeployDispatcher {
|
|
|
* @return
|
|
* @return
|
|
|
* @date 2021-02-06 上午2:02
|
|
* @date 2021-02-06 上午2:02
|
|
|
*/
|
|
*/
|
|
|
- private List<DeployLog> deployApp(BuildLog buildLog) {
|
|
|
|
|
- if (!onDeploying.add(buildLog.getAppId())) {
|
|
|
|
|
- return null;
|
|
|
|
|
|
|
+ private BuildDeployApp deployApp(BuildLog buildLog) {
|
|
|
|
|
+ String appId = buildLog.getAppId();
|
|
|
|
|
+ if (!onDeploying.add(appId)) {
|
|
|
|
|
+ return BuildDeployApp.onDeploying(appId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
List<DeployConfig> deployConfigs = cache.findByAppId(buildLog.getAppId()).getDeployConfigs();
|
|
List<DeployConfig> deployConfigs = cache.findByAppId(buildLog.getAppId()).getDeployConfigs();
|
|
|
|
|
+ if (deployConfigs.isEmpty()) {
|
|
|
|
|
+ return BuildDeployApp.deployResult(buildLog, 0, BuildDeployResult.noDeployConfig.getName());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
List<DeployLog> deployLogs = appDeployer.deploy(buildLog, deployConfigs);
|
|
List<DeployLog> deployLogs = appDeployer.deploy(buildLog, deployConfigs);
|
|
|
onDeploying.remove(buildLog.getAppId());
|
|
onDeploying.remove(buildLog.getAppId());
|
|
|
deployLogs.forEach(deployLog -> logConsumer.addDeployLog(deployLog));
|
|
deployLogs.forEach(deployLog -> logConsumer.addDeployLog(deployLog));
|
|
|
|
|
+
|
|
|
// TODO 部署完成后发出通知
|
|
// TODO 部署完成后发出通知
|
|
|
NotifierConfig notifierConfig = cache.findByAppId(buildLog.getAppId()).getNotifierConfig();
|
|
NotifierConfig notifierConfig = cache.findByAppId(buildLog.getAppId()).getNotifierConfig();
|
|
|
DeployNotifyMsg deployNotifyMsg = DeployNotifyMsg.deployNotifyMsg(deployLogs);
|
|
DeployNotifyMsg deployNotifyMsg = DeployNotifyMsg.deployNotifyMsg(deployLogs);
|
|
|
notifyService.notify(notifierConfig, deployNotifyMsg);
|
|
notifyService.notify(notifierConfig, deployNotifyMsg);
|
|
|
- return deployLogs;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ return BuildDeployApp.of(deployLogs);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -189,11 +194,7 @@ public class BuildDeployDispatcher {
|
|
|
*/
|
|
*/
|
|
|
public BuildDeployApp deploy(String appId, String commitId) {
|
|
public BuildDeployApp deploy(String appId, String commitId) {
|
|
|
BuildLog buildLog = cache.findByAppIdAndCommitId(appId, commitId);
|
|
BuildLog buildLog = cache.findByAppIdAndCommitId(appId, commitId);
|
|
|
- List<DeployLog> deployLogs = deployApp(buildLog);
|
|
|
|
|
- if (deployLogs == null) {
|
|
|
|
|
- return BuildDeployApp.onDeploying(appId);
|
|
|
|
|
- }
|
|
|
|
|
- BuildDeployApp buildDeployApp = BuildDeployApp.of(deployLogs);
|
|
|
|
|
|
|
+ BuildDeployApp buildDeployApp = deployApp(buildLog);
|
|
|
logConsumer.addBuildDeployApp(buildDeployApp);
|
|
logConsumer.addBuildDeployApp(buildDeployApp);
|
|
|
return buildDeployApp;
|
|
return buildDeployApp;
|
|
|
}
|
|
}
|