我想在我们的项目中自动化创建分支的过程。以下是使用 Anthill Web UI 手动完成的步骤。在我们的 Anthill 中,我们有大约 250 个 Java 项目,它们的工作流以其发布名称命名,例如 RB-16.4.5。
第 1 步:复制每个项目的工作流,使用当前分支,如RB-16.4.5。
第 2 步:将工作流名称编辑为新的分支名称,如 RB-16.4.6,并将源 URL 更改为最新的分支名称,如somelocation/branches/16.4.6/projects/ProjectA
第 3 步:对于许多项目,我们在 Anthill 中添加了依赖项。所以我们希望使用最新的分支项目更新它们。所以我们要做的是删除旧分支名称的旧依赖项,例如ProjectA RB-16.4.5和通过转到创建的新工作流的管理选项卡并搜索文件夹名称为 ProjectA RB-16.4.6的新项目来添加新的依赖项
现在我编写的代码在前两个步骤中运行良好但我无法找到如何为第 3 步编写代码。因为我无法弄清楚如何获取我们在上面创建的新工作流的最新依赖项项目。来自 Anthill 文档。我们无法将 Dependency 的名称设置或更改为新名称。
AnthillClient client;
String currentBranch="RB-16.4.5";
String newBranch="RB-16.4.6";
UnitofWork uow=client.createUnitOfWork();
Folder[] allFolders=FolderFactory.getInstance().restoreAll();
Project[] myProjects={};
for(int i=0;i<allFolders.length;i++){
if(allFolders[i].getName().equals("MyPrjFolder")){
myProjects=allFolders[i].getProjects();
break;
}
//For each project copy the workflow and set New branch name & Source URL
for(int j=0;j<myProjects.length;j++){
Workflow flow=WorkflowLookup.getForProjectAndName(myProjects[j],newBranch);
Workflow newworkFlow=flow.duplicateForCopy(myProjects[j]);
newworkFlow.setUnitOfWork(uow);
newworkFlow.setName(newBranch);
newworkFlow.setNew(true);
newworkFlow.setActive(true);
SvnSourceConfig svnConfig=
(SvnSourceConfig) newWorkFlow.getBuildProfile().getSourceConfig();
SvnModule[] svnModule=svnConfig.getModuleArray();
String sourceURL=svnModule[0].getUrl();
svnModule[0].setUrl(sourceURL.replace(currentBranch,newBranch));
// Store the dependencies of old project branch in a list
Dependency
existingDependencies=flow.getBuildProfile().getAnthillDependencyArray();
someList.add(existingDependencies);
}
/*Now how do i set the Dependencies for each Project with new Project of
the new Branch if i have already stored the old dependecies of projects*/
// Code to create and add dependency should be something like
// How do i get the newDependency value which refers to the Project under new workflow created
Dependency newDependency=null;
newDependency= Dependency.createDependency(existingDependencies[i].getDependent),newDependency.getDependency());
}