|
|
@@ -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;
|
|
|
}
|
|
|
}
|