如何通过命令自动重跑Atlassian Bamboo失败/未完成任务?
在Atlassian Bamboo中通过命令行重跑失败/未完成的构建任务
Bamboo提供了REST API支持触发失败/未完成任务的重跑,以下是两种可直接通过命令行调用的实现方式:
方法一:使用Curl调用REST API
1. 获取目标构建Key
构建Key可从Bamboo UI的构建详情页URL中提取(例如URL为https://your-bamboo-domain.com/browse/PROJ-PLAN-123,则构建Key为PROJ-PLAN-123),也可通过API批量查询失败构建列表。
2. 触发重跑的Curl命令
替换以下参数后直接执行:
BAMBOO_BASE_URL:你的Bamboo实例地址BUILD_KEY:目标构建的KeyUSERNAME/PASSWORD:Bamboo账号信息(推荐用个人API Token替代密码,在Bamboo个人设置中生成)
重跑所有失败/未完成任务
curl -u USERNAME:PASSWORD -X POST "$BAMBOO_BASE_URL/rest/api/latest/result/$BUILD_KEY/rerunFailed?os_authType=basic"
重跑指定任务
若只需重跑特定失败任务,添加taskIds参数(多个任务ID用逗号分隔):
curl -u USERNAME:PASSWORD -X POST "$BAMBOO_BASE_URL/rest/api/latest/result/$BUILD_KEY/rerunFailed?os_authType=basic&taskIds=TASK_ID1,TASK_ID2"
方法二:Python脚本(命令行可执行)
编写轻量脚本实现参数化调用,适合批量或自动化场景:
脚本代码(保存为rerun_bamboo_failed.py)
import requests import argparse def rerun_failed_tasks(bamboo_url, build_key, auth, task_ids=None): api_url = f"{bamboo_url.rstrip('/')}/rest/api/latest/result/{build_key}/rerunFailed" params = {"os_authType": "basic"} if task_ids: params["taskIds"] = ",".join(task_ids) response = requests.post(api_url, auth=auth, params=params) if response.status_code == 202: print(f"✅ 重跑请求已提交,构建Key: {build_key}") else: print(f"❌ 请求失败,状态码: {response.status_code},详情: {response.text}") if __name__ == "__main__": parser = argparse.ArgumentParser(description="Bamboo失败/未完成任务重跑工具") parser.add_argument("--bamboo-url", required=True, help="Bamboo实例基础URL(如https://your-bamboo.com)") parser.add_argument("--build-key", required=True, help="目标构建Key(如PROJ-PLAN-123)") parser.add_argument("--username", required=True, help="Bamboo用户名") parser.add_argument("--token", required=True, help="Bamboo个人API Token或密码") parser.add_argument("--task-ids", nargs="+", help="可选:指定重跑的任务ID列表,多个用空格分隔") args = parser.parse_args() rerun_failed_tasks(args.bamboo_url, args.build_key, (args.username, args.token), args.task_ids)
执行步骤
- 安装依赖:
pip install requests
- 执行脚本(重跑所有失败任务):
python rerun_bamboo_failed.py --bamboo-url https://your-bamboo-domain.com --build-key PROJ-PLAN-123 --username your-name --token your-api-token
- 执行脚本(重跑指定任务):
python rerun_bamboo_failed.py --bamboo-url https://your-bamboo-domain.com --build-key PROJ-PLAN-123 --username your-name --token your-api-token --task-ids TASK001 TASK002
注意事项
- 确保操作账号拥有对应构建计划的执行权限
- API Token比密码更安全,建议优先使用
- 未完成的构建任务同样适用该API,只要存在未执行或失败的任务节点
内容的提问来源于stack exchange,提问作者Strongman
相关产品推荐
相关产品推荐

