如何在Bamboo Specs中留存计划分支?解决恢复后分支丢失问题
解决Bamboo Specs恢复计划后分支丢失的问题
一、通过Bamboo API导出分支配置与变量
Bamboo提供了API可以直接导出分支的完整配置(包括专属变量),你可以用这些接口提前备份分支数据:
- 获取分支列表:调用
GET /rest/api/latest/plan/{projectKey}-{buildKey}/branch拿到目标计划下所有分支的名称和基本信息。 - 导出单分支配置:针对每个分支,调用
GET /rest/api/latest/plan/{projectKey}-{buildKey}/branch/{branchName},获取分支的触发规则、合并策略等核心配置。 - 导出分支专属变量:调用
GET /rest/api/latest/plan/{projectKey}-{buildKey}/branch/{branchName}/variable,拿到该分支的所有自定义变量。 - 批量导出:可以写简单脚本循环调用上述接口,把所有分支的配置和变量导出为JSON或CSV文件,和你的Specs代码一起存到版本控制里。
二、在Bamboo Specs中集成分支导入逻辑
把备份的分支数据整合到Specs代码中,恢复计划时就能自动创建分支并加载变量:
- 加载备份数据:在Specs代码中读取之前备份的分支配置文件,解析成可使用的数据结构。
- 批量创建分支:遍历备份的分支数据,用Bamboo Specs的
Branch类创建分支,并设置对应的变量。以Java版Specs为例:
// 示例:从JSON文件加载分支配置 List<BranchBackup> branchBackups = loadBranchBackupData("branch-backups.json"); Plan myPlan = new Plan(new Project("PROJ", "My Project"), "PLAN", "My Plan") .planBranchManagement(new PlanBranchManagement() .createManualBranches(true) .createAutomaticBranches(false)) .branches(branchBackups.stream().map(backup -> new Branch(backup.getBranchName()) .trigger(backup.getTriggerConfiguration()) .variables(backup.getVariables().entrySet().stream() .map(entry -> new Variable(entry.getKey(), entry.getValue())) .collect(Collectors.toList())) ).collect(Collectors.toList()));
- 开启分支Specs同步:在Specs中配置
planBranchManagement,确保分支的Specs同步功能默认开启,避免手动操作。
三、原生导出导入替代方案
如果不想写额外代码,Bamboo原生的计划导出功能可以完整包含分支和变量:
- 导出:在计划设置页面选择「导出计划」,保存生成的XML文件。
- 恢复:删除计划后,在项目设置中选择「导入计划」,上传之前的XML文件,即可完整还原计划、所有分支及对应变量。
关键注意事项
- 备份的分支配置要和当前Specs版本兼容,避免因API或Specs版本差异导致配置失效。
- 若分支对应的代码仓库分支已删除,需要先恢复仓库分支,再通过Specs同步创建Bamboo分支。
内容的提问来源于stack exchange,提问作者vsergi
相关产品推荐
相关产品推荐

