单独同步GIT
This commit is contained in:
parent
e89f7a90e8
commit
58491de2f0
@ -28,25 +28,24 @@ public class RepositoryBranchApiController extends BaseController<RepositoryBran
|
||||
@Resource
|
||||
private IRepositoryBranchService repositoryBranchService;
|
||||
|
||||
@Operation(summary = "同步Git分支", description = "支持三种同步模式:1)只传externalSystemId-全量同步 2)传externalSystemId+repoGroupId-同步仓库组 3)传externalSystemId+repoGroupId+repoProjectId-同步单个项目")
|
||||
@Operation(summary = "同步Git分支", description = "异步同步,支持三种模式:1)只传externalSystemId-全量同步 2)传externalSystemId+repoGroupId-同步仓库组 3)传externalSystemId+repoGroupId+repoProjectId-同步单个项目")
|
||||
@PostMapping("/sync")
|
||||
public Response<Integer> sync(
|
||||
public Response<Void> sync(
|
||||
@Parameter(description = "外部系统ID", required = true) @RequestParam Long externalSystemId,
|
||||
@Parameter(description = "仓库组ID(可选)", required = false) @RequestParam(required = false) Long repoGroupId,
|
||||
@Parameter(description = "仓库项目ID(可选,传此参数时repoGroupId必传)", required = false) @RequestParam(required = false) Long repoProjectId
|
||||
) {
|
||||
Integer count;
|
||||
if (repoProjectId != null) {
|
||||
// 同步单个项目
|
||||
count = repositoryBranchService.syncBranches(externalSystemId, repoGroupId, repoProjectId);
|
||||
repositoryBranchService.syncBranches(externalSystemId, repoGroupId, repoProjectId);
|
||||
} else if (repoGroupId != null) {
|
||||
// 同步仓库组
|
||||
count = repositoryBranchService.syncBranches(externalSystemId, repoGroupId);
|
||||
repositoryBranchService.syncBranches(externalSystemId, repoGroupId);
|
||||
} else {
|
||||
// 全量同步
|
||||
count = repositoryBranchService.syncBranches(externalSystemId);
|
||||
repositoryBranchService.syncBranches(externalSystemId);
|
||||
}
|
||||
return Response.success(count);
|
||||
return Response.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -28,13 +28,13 @@ public class RepositoryGroupApiController extends BaseController<RepositoryGroup
|
||||
@Resource
|
||||
private IRepositoryGroupService repositoryGroupService;
|
||||
|
||||
@Operation(summary = "同步Git仓库组", description = "同步指定外部系统的所有仓库组")
|
||||
@Operation(summary = "同步Git仓库组", description = "异步同步指定外部系统的所有仓库组,立即返回")
|
||||
@PostMapping("/sync")
|
||||
public Response<Integer> sync(
|
||||
public Response<Void> sync(
|
||||
@Parameter(description = "外部系统ID", required = true) @RequestParam Long externalSystemId
|
||||
) {
|
||||
Integer count = repositoryGroupService.syncGroups(externalSystemId);
|
||||
return Response.success(count);
|
||||
repositoryGroupService.syncGroups(externalSystemId);
|
||||
return Response.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -28,21 +28,20 @@ public class RepositoryProjectApiController extends BaseController<RepositoryPro
|
||||
@Resource
|
||||
private IRepositoryProjectService repositoryProjectService;
|
||||
|
||||
@Operation(summary = "同步Git项目", description = "支持两种同步模式:1)只传externalSystemId-全量同步 2)传externalSystemId+repoGroupId-同步单个仓库组")
|
||||
@Operation(summary = "同步Git项目", description = "异步同步,支持两种模式:1)只传externalSystemId-全量同步 2)传externalSystemId+repoGroupId-同步单个仓库组")
|
||||
@PostMapping("/sync")
|
||||
public Response<Integer> sync(
|
||||
public Response<Void> sync(
|
||||
@Parameter(description = "外部系统ID", required = true) @RequestParam Long externalSystemId,
|
||||
@Parameter(description = "仓库组ID(可选)", required = false) @RequestParam(required = false) Long repoGroupId
|
||||
) {
|
||||
Integer count;
|
||||
if (repoGroupId != null) {
|
||||
// 同步单个仓库组
|
||||
count = repositoryProjectService.syncProjects(externalSystemId, repoGroupId);
|
||||
repositoryProjectService.syncProjects(externalSystemId, repoGroupId);
|
||||
} else {
|
||||
// 全量同步
|
||||
count = repositoryProjectService.syncProjects(externalSystemId);
|
||||
repositoryProjectService.syncProjects(externalSystemId);
|
||||
}
|
||||
return Response.success(count);
|
||||
return Response.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -11,31 +11,28 @@ import com.qqchen.deploy.backend.framework.service.IBaseService;
|
||||
public interface IRepositoryBranchService extends IBaseService<RepositoryBranch, RepositoryBranchDTO, RepositoryBranchQuery, Long> {
|
||||
|
||||
/**
|
||||
* 同步指定外部系统下的所有分支(全量同步)
|
||||
* 同步指定外部系统下的所有分支(异步执行,全量同步)
|
||||
*
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @return 同步的分支数量
|
||||
*/
|
||||
Integer syncBranches(Long externalSystemId);
|
||||
void syncBranches(Long externalSystemId);
|
||||
|
||||
/**
|
||||
* 同步指定仓库组下所有项目的分支
|
||||
* 同步指定仓库组下所有项目的分支(异步执行)
|
||||
*
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @param repoGroupId 仓库组ID
|
||||
* @return 同步的分支数量
|
||||
*/
|
||||
Integer syncBranches(Long externalSystemId, Long repoGroupId);
|
||||
void syncBranches(Long externalSystemId, Long repoGroupId);
|
||||
|
||||
/**
|
||||
* 同步指定项目的分支
|
||||
* 同步指定项目的分支(异步执行)
|
||||
*
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @param repoGroupId 仓库组ID
|
||||
* @param repoProjectId 仓库项目ID
|
||||
* @return 同步的分支数量
|
||||
*/
|
||||
Integer syncBranches(Long externalSystemId, Long repoGroupId, Long repoProjectId);
|
||||
void syncBranches(Long externalSystemId, Long repoGroupId, Long repoProjectId);
|
||||
|
||||
/**
|
||||
* 统计指定外部系统下的分支数量
|
||||
|
||||
@ -13,12 +13,11 @@ import java.util.List;
|
||||
public interface IRepositoryGroupService extends IBaseService<RepositoryGroup, RepositoryGroupDTO, RepositoryGroupQuery, Long> {
|
||||
|
||||
/**
|
||||
* 同步指定外部系统的所有仓库组(包含同步历史记录)
|
||||
* 同步指定外部系统的所有仓库组(异步执行,包含同步历史记录)
|
||||
*
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @return 同步的仓库组数量
|
||||
*/
|
||||
Integer syncGroups(Long externalSystemId);
|
||||
void syncGroups(Long externalSystemId);
|
||||
|
||||
/**
|
||||
* 统计外部系统的仓库组数量
|
||||
|
||||
@ -13,21 +13,19 @@ import java.util.List;
|
||||
public interface IRepositoryProjectService extends IBaseService<RepositoryProject, RepositoryProjectDTO, RepositoryProjectQuery, Long> {
|
||||
|
||||
/**
|
||||
* 同步指定外部系统下的所有项目(全量同步)
|
||||
* 同步指定外部系统下的所有项目(异步执行,全量同步)
|
||||
*
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @return 同步的项目数量
|
||||
*/
|
||||
Integer syncProjects(Long externalSystemId);
|
||||
void syncProjects(Long externalSystemId);
|
||||
|
||||
/**
|
||||
* 同步指定仓库组下的所有项目
|
||||
* 同步指定仓库组下的所有项目(异步执行)
|
||||
*
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @param repoGroupId 仓库组ID
|
||||
* @return 同步的项目数量
|
||||
*/
|
||||
Integer syncProjects(Long externalSystemId, Long repoGroupId);
|
||||
void syncProjects(Long externalSystemId, Long repoGroupId);
|
||||
|
||||
/**
|
||||
* 统计指定外部系统下的项目数量
|
||||
|
||||
@ -21,6 +21,7 @@ import com.qqchen.deploy.backend.deploy.service.IRepositorySyncHistoryService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.orm.ObjectOptimisticLockingFailureException;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -189,21 +190,24 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl<RepositoryBranc
|
||||
}
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer syncBranches(Long externalSystemId) {
|
||||
return doSyncBranches(externalSystemId, null, null);
|
||||
public void syncBranches(Long externalSystemId) {
|
||||
doSyncBranches(externalSystemId, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer syncBranches(Long externalSystemId, Long repoGroupId) {
|
||||
return doSyncBranches(externalSystemId, repoGroupId, null);
|
||||
public void syncBranches(Long externalSystemId, Long repoGroupId) {
|
||||
doSyncBranches(externalSystemId, repoGroupId, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer syncBranches(Long externalSystemId, Long repoGroupId, Long repoProjectId) {
|
||||
return doSyncBranches(externalSystemId, repoGroupId, repoProjectId);
|
||||
public void syncBranches(Long externalSystemId, Long repoGroupId, Long repoProjectId) {
|
||||
doSyncBranches(externalSystemId, repoGroupId, repoProjectId);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -212,9 +216,8 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl<RepositoryBranc
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @param repoGroupId 仓库组ID(可选)
|
||||
* @param repoProjectId 仓库项目ID(可选)
|
||||
* @return 同步的分支数量
|
||||
*/
|
||||
private Integer doSyncBranches(Long externalSystemId, Long repoGroupId, Long repoProjectId) {
|
||||
private void doSyncBranches(Long externalSystemId, Long repoGroupId, Long repoProjectId) {
|
||||
// 1. 创建同步历史记录
|
||||
RepositorySyncHistoryDTO syncHistory = repositorySyncHistoryService.createSyncHistory(externalSystemId, RepositorySyncType.BRANCH);
|
||||
|
||||
@ -240,7 +243,7 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl<RepositoryBranc
|
||||
if (projects.isEmpty()) {
|
||||
log.info("No projects found to sync");
|
||||
repositorySyncHistoryService.updateSyncHistory(syncHistory.getId(), ExternalSystemSyncStatus.SUCCESS, null);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
log.info("Found {} projects to sync", projects.size());
|
||||
|
||||
@ -339,7 +342,7 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl<RepositoryBranc
|
||||
|
||||
log.info("Successfully synchronized {} branches for external system: {}",
|
||||
totalSyncedBranches.get(), externalSystem.getName());
|
||||
return totalSyncedBranches.get();
|
||||
|
||||
} catch (Exception e) {
|
||||
// 9. 更新同步历史为失败
|
||||
log.error("Failed to sync branches", e);
|
||||
|
||||
@ -19,6 +19,7 @@ import com.qqchen.deploy.backend.framework.exception.BusinessException;
|
||||
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -52,8 +53,9 @@ public class RepositoryGroupServiceImpl extends BaseServiceImpl<RepositoryGroup,
|
||||
private IRepositorySyncHistoryService repositorySyncHistoryService;
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer syncGroups(Long externalSystemId) {
|
||||
public void syncGroups(Long externalSystemId) {
|
||||
// 1. 创建同步历史记录
|
||||
RepositorySyncHistoryDTO groupHistory = repositorySyncHistoryService.createSyncHistory(externalSystemId, RepositorySyncType.GROUP);
|
||||
|
||||
@ -67,7 +69,7 @@ public class RepositoryGroupServiceImpl extends BaseServiceImpl<RepositoryGroup,
|
||||
if (remoteGroups.isEmpty()) {
|
||||
log.info("No groups found in remote git system: {}", externalSystem.getName());
|
||||
repositorySyncHistoryService.updateSyncHistory(groupHistory.getId(), ExternalSystemSyncStatus.SUCCESS, null);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// 4. 获取本地已存在的仓库组
|
||||
@ -106,7 +108,6 @@ public class RepositoryGroupServiceImpl extends BaseServiceImpl<RepositoryGroup,
|
||||
|
||||
log.info("Successfully synchronized {} groups for external system: {}",
|
||||
savedGroups.size(), externalSystem.getName());
|
||||
return savedGroups.size();
|
||||
|
||||
} catch (Exception e) {
|
||||
// 8. 更新同步历史记录为失败
|
||||
|
||||
@ -22,6 +22,7 @@ import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.orm.ObjectOptimisticLockingFailureException;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -98,15 +99,17 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl<RepositoryProj
|
||||
}
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer syncProjects(Long externalSystemId) {
|
||||
return doSyncProjects(externalSystemId, null);
|
||||
public void syncProjects(Long externalSystemId) {
|
||||
doSyncProjects(externalSystemId, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Integer syncProjects(Long externalSystemId, Long repoGroupId) {
|
||||
return doSyncProjects(externalSystemId, repoGroupId);
|
||||
public void syncProjects(Long externalSystemId, Long repoGroupId) {
|
||||
doSyncProjects(externalSystemId, repoGroupId);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,9 +117,8 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl<RepositoryProj
|
||||
*
|
||||
* @param externalSystemId 外部系统ID
|
||||
* @param repoGroupId 仓库组ID(可选)
|
||||
* @return 同步的项目数量
|
||||
*/
|
||||
private Integer doSyncProjects(Long externalSystemId, Long repoGroupId) {
|
||||
private void doSyncProjects(Long externalSystemId, Long repoGroupId) {
|
||||
// 1. 创建同步历史记录
|
||||
RepositorySyncHistoryDTO projectHistory = repositorySyncHistoryService.createSyncHistory(externalSystemId, RepositorySyncType.PROJECT);
|
||||
|
||||
@ -139,7 +141,7 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl<RepositoryProj
|
||||
if (groups.isEmpty()) {
|
||||
log.info("No groups found for external system: {}", externalSystem.getName());
|
||||
repositorySyncHistoryService.updateSyncHistory(projectHistory.getId(), ExternalSystemSyncStatus.SUCCESS, null);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
log.info("Found {} groups to sync", groups.size());
|
||||
|
||||
@ -251,7 +253,7 @@ public class RepositoryProjectServiceImpl extends BaseServiceImpl<RepositoryProj
|
||||
|
||||
log.info("Successfully synced projects. Added {} new projects, processed {} total projects",
|
||||
totalCount.get(), processedProjectIds.size());
|
||||
return totalCount.get();
|
||||
|
||||
} catch (Exception e) {
|
||||
// 8. 更新同步历史记录为失败
|
||||
repositorySyncHistoryService.updateSyncHistory(projectHistory.getId(), ExternalSystemSyncStatus.FAILED, e.getMessage());
|
||||
|
||||
@ -61,18 +61,13 @@ spring:
|
||||
drop-first: false
|
||||
default-schema: deploy-ease-platform
|
||||
contexts: default
|
||||
redis:
|
||||
host: 172.22.222.111
|
||||
port: 6379
|
||||
password: Qichen5210523...
|
||||
database: 7
|
||||
timeout: 6000ms
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 8 # 连接池最大连接数
|
||||
max-idle: 8 # 连接池最大空闲连接数
|
||||
min-idle: 0 # 连接池最小空闲连接数
|
||||
max-wait: -1ms # 连接池最大阻塞等待时间
|
||||
data:
|
||||
redis:
|
||||
host: 172.22.222.111
|
||||
password: Qichen5210523...
|
||||
port: 6379
|
||||
database: 7
|
||||
timeout: 6000ms
|
||||
flowable:
|
||||
database-schema-update: true
|
||||
# id-generator: org.flowable.common.engine.impl.db.DbIdGenerator
|
||||
|
||||
Loading…
Reference in New Issue
Block a user