因为工作中发生过很严重的 Regression Issue,当时的解决方案是在Daily Build中使用二分法找到出问题的Build, 过程比较繁琐,所以就有了这么个需求,要求记录Daily Build的git changes信息
Jenkins REST API可以获取到Build信息, 获取方式为
https://<your-jenkins-server>/job/<job-name>/<buildnumber>/api/json
也就是在某个项目的Build的url里加上/api/json
即可
如果不知道Build number只想获取最新的build number信息, 可以使用 xxx/lastBuild/api/json
然后我们解析该json内容就可以获取到相应的Git changes信息了,另外还需要做一些Git判断
集成到Jenkins中还是使用Python脚本更方便,这里需要用到 GitPython
和requests
,基于Python 3环境
pip install GitPython
pip install requests
changes.py
文件代码如下
# Use Jenkins REST API to get changes info
# install requests - pip install requests
# install GitPython - pip install GitPython
from logging import fatal
import requests
import argparse
import json
from git import Repo
#### 将字符串List写入文件中
def writeChangesToFile(url, repo_path, branch_name, file_path):
f = open(file_path, mode="w+", encoding="UTF-8")
info_list = parseJson(url,repo_path)
main_info = getMainInfo(branch_name,url)
f.write(main_info)
f.write("\n\n")
if len(info_list) == 0:
f.write("No changes!")
else: