如何用Python实现Jenkins中currentbuild.rawbuild.getcauses()获取构建失败原因?
Python实现Jenkins构建失败原因获取(替代Groovy的currentBuild.rawBuild.getCauses())
要在Python中实现Groovy里currentBuild.rawBuild.getCauses()的功能,核心是通过Jenkins的REST API获取构建详情,从中提取失败原因字段。以下是两种实现方式:
方式一:使用python-jenkins库
这是Jenkins官方推荐的Python客户端库,操作更便捷。
- 先安装库:
pip install python-jenkins
- 示例代码:
import jenkins # 连接Jenkins服务器 server = jenkins.Jenkins( 'http://你的Jenkins服务器地址', username='你的Jenkins用户名', password='你的Jenkins API令牌' # 可在个人设置中生成 ) # 获取目标Job的最新构建编号 job_name = '你的Job名称' last_build_num = server.get_job_info(job_name)['lastBuild']['number'] # 获取该构建的完整信息 build_detail = server.get_build_info(job_name, last_build_num) # 提取构建失败原因(对应Groovy的getCauses()) for action in build_detail.get('actions', []): if 'causes' in action: print("构建失败原因:") for cause in action['causes']: print(f"- {cause.get('shortDescription', '无详细描述')}")
方式二:直接调用Jenkins REST API
如果不想依赖第三方库,可通过requests直接调用API:
- 先安装requests(若未安装):
pip install requests
- 示例代码:
import requests from requests.auth import HTTPBasicAuth jenkins_addr = 'http://你的Jenkins服务器地址' job_name = '你的Job名称' user = '你的Jenkins用户名' api_token = '你的Jenkins API令牌' # 获取最新构建编号 job_info_res = requests.get( f"{jenkins_addr}/job/{job_name}/api/json", auth=HTTPBasicAuth(user, api_token) ) last_build_num = job_info_res.json()['lastBuild']['number'] # 获取构建详情 build_info_res = requests.get( f"{jenkins_addr}/job/{job_name}/{last_build_num}/api/json", auth=HTTPBasicAuth(user, api_token) ) build_detail = build_info_res.json() # 提取失败原因 for action in build_detail.get('actions', []): if 'causes' in action: print("构建失败原因:") for cause in action['causes']: print(f"- {cause.get('shortDescription')}")
说明
- Jenkins的构建原因信息存储在构建详情的
actions数组中,需要遍历找到包含causes的项,其中shortDescription字段就是Groovy中getCauses()返回的原因描述。 - 确保你的账号有目标Job的读取权限,API令牌可在Jenkins个人中心的「设置」→「API令牌」中生成。
内容的提问来源于stack exchange,提问作者Shivani
相关产品推荐
相关产品推荐

