Browse Source

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
dev-DXTZYK
chenzhihang 1 year ago
parent
commit
18d5b42630
3 changed files with 64 additions and 4 deletions
  1. +8
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
  2. +7
    -3
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
  3. +49
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java

+ 8
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java View File

@@ -599,6 +599,8 @@ public class ModelsServiceImpl implements ModelsService {
String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/model"; String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName + "/model";


dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
//干掉目标文件夹
dvcUtils.deleteDirectory(modelPath);
dvcUtils.moveFiles(sourcePath, modelPath); dvcUtils.moveFiles(sourcePath, modelPath);


//拼接生产的元数据后写入yaml文件 //拼接生产的元数据后写入yaml文件
@@ -701,10 +703,16 @@ public class ModelsServiceImpl implements ModelsService {
Map<String, Object> stringObjectMap = YamlUtils.loadYamlFile(metaPath + "/" + "metadata.yaml"); Map<String, Object> stringObjectMap = YamlUtils.loadYamlFile(metaPath + "/" + "metadata.yaml");
ModelMetaVo oldModelVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); ModelMetaVo oldModelVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class);


//检查是否存在本地重名分支,有的话干掉
dvcUtils.deleteLocalBranch(rootPath, branchName);
// 创建本地分支 // 创建本地分支
dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName);
//dvc checkout //dvc checkout
dvcUtils.dvcPull(rootPath);
dvcUtils.dvcCheckout(rootPath); dvcUtils.dvcCheckout(rootPath);
//干掉目标文件夹
dvcUtils.deleteDirectory(modelPath);
dvcUtils.moveFiles(sourcePath, modelPath);


if (modelsVo.getModelVersionVos().size() != 0) { if (modelsVo.getModelVersionVos().size() != 0) {
String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl(); String sourcePath = modelsVo.getModelVersionVos().get(0).getUrl();


+ 7
- 3
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java View File

@@ -117,7 +117,8 @@ public class NewDatasetServiceImpl implements NewDatasetService {
// 命令行操作 git clone 项目地址 // 命令行操作 git clone 项目地址
dvcUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); dvcUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword);
String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName;

//干掉目标文件夹
dvcUtils.deleteDirectory(datasetPath);
dvcUtils.moveFiles(sourcePath, datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath);
// 拼接生产的元数据后写入yaml文件 // 拼接生产的元数据后写入yaml文件
datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login")));
@@ -183,16 +184,19 @@ public class NewDatasetServiceImpl implements NewDatasetService {
//部分信息在前面的版本里面,从那边取过来 //部分信息在前面的版本里面,从那边取过来
Map<String, Object> stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); Map<String, Object> stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml");
NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class);

//检查是否存在本地重名分支,有的话干掉
dvcUtils.deleteLocalBranch(localPath, branchName);
// 创建本地分支 // 创建本地分支
dvcUtils.createLocalBranchBasedOnMaster(localPath, branchName); dvcUtils.createLocalBranchBasedOnMaster(localPath, branchName);


//dvc checkout //dvc checkout
dvcUtils.dvcPull(localPath);
dvcUtils.dvcCheckout(localPath); dvcUtils.dvcCheckout(localPath);


// 准备数据 // 准备数据
String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName;

//干掉目标文件夹
dvcUtils.deleteDirectory(datasetPath);
dvcUtils.moveFiles(sourcePath, datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath);
// 拼接生产的元数据后写入yaml文件 // 拼接生产的元数据后写入yaml文件
datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login")));


+ 49
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java View File

@@ -80,6 +80,26 @@ public class DVCUtils {
Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING); Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING);
} }


public void deleteDirectory(String dirPath) throws IOException {
Path directory = Paths.get(dirPath);

// 检查是否目录存在
if (Files.exists(directory)) {
// 使用Files.walk来删除目录及其内容
Files.walk(directory)
.sorted((path1, path2) -> path2.compareTo(path1)) // 先删除子文件夹,再删除父文件夹
.forEach(this::deletePath);
}
}

private void deletePath(Path path) {
try {
Files.delete(path);
} catch (IOException e) {
log.error("Unable to delete: " + path + " " + e.getMessage());
}
}

public void gitClone(String localPath, String repoUrl, String branch, String username, String password) throws GitAPIException { public void gitClone(String localPath, String repoUrl, String branch, String username, String password) throws GitAPIException {
CloneCommand cloneCommand = Git.cloneRepository() CloneCommand cloneCommand = Git.cloneRepository()
.setURI(repoUrl) .setURI(repoUrl)
@@ -240,6 +260,33 @@ public class DVCUtils {
log.error("Error occurred while creating local branch", e); log.error("Error occurred while creating local branch", e);
} }
} }
/**
* 删除本地分支
*
* @param localPath 本地仓库路径
* @param branchName 要删除的分支名称
*/
public void deleteLocalBranch(String localPath, String branchName) throws IOException, GitAPIException {
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder.setGitDir(new File(localPath + "/.git"))
.readEnvironment()
.findGitDir()
.build();

try (Git git = new Git(repository)) {
// 获取所有本地分支
for (Ref ref : git.branchList().call()) {
String refName = ref.getName();
if (refName.endsWith("/" + branchName)) {
// 删除本地分支
git.branchDelete().setBranchNames(refName).setForce(true).call();
log.info("Deleted branch: " + branchName);
return;
}
}
log.info("Branch not found: " + branchName);
}
}


/** /**
* 基于 master 创建本地分支 * 基于 master 创建本地分支
@@ -421,6 +468,7 @@ public class DVCUtils {


// 切换分支 // 切换分支
gitCheckoutBranch(localPath, branch); gitCheckoutBranch(localPath, branch);
dvcPull(localPath);
dvcCheckout(localPath); dvcCheckout(localPath);
} }


@@ -555,7 +603,7 @@ public class DVCUtils {


// 更新的 dvcPull 方法 // 更新的 dvcPull 方法
public void dvcPull(String localPath) throws Exception { public void dvcPull(String localPath) throws Exception {
String command = "dvc pull";
String command = "dvc pull -v";
runCommand(command, localPath); runCommand(command, localPath);
} }




Loading…
Cancel
Save