Jenkins提供了许多API供我们远程调用,而Python-Jenkins模块将它们封装,更加简化了调用相关的操作。
具体需求
比如,最近我在做自动化测试时,想更加灵活的调用测试脚本,于是写了一个Web前端页面去筛选待执行的测试脚本,并将脚本名称通过Jenkins API传递到Job配置中,再执行该Job,即开始测试。
前端页面Demo如下:
筛选完测试脚本后,修改Jenkins Job配置,将构建信息中的红框部分即测试脚本名称,替换成筛选后的脚本名称。
如何实现
为了实现上述功能,该怎么做呢?下面会用到Python-Jenkins模块提供的get_job_config()、reconfig_job()、build_job()方法,达到读取配置,修改配置以及触发job的目的。
import jenkins import re def set_job_and_run_testcase(testcase, job_name="demo"): # 创建jenkins实例 server = jenkins.Jenkins("http://my_jenkins_url", username="jenkins_username", password="jenkins_password") # 获取job当前的配置 config = server.get_job_config(job_name) # 使用正则表达式,替换job当前配置中的testcase字段 new_config = re.sub(r'python runner_for_jenkins.py -t ("|").*?("|")', r'python runner_for_jenkins.py -t "%s"' % testcase, config) # 使用new_config成为job的配置 server.reconfig_job(job_name, new_config) # 运行job server.build_job(job_name) if __name__ == '__main__': set_job_and_run_testcase("testcases/case2.py,testcases/case3.py")
运行结果:
可以看到成功地修改了Job配置信息。需要说明的是,Jenkins API提供的操作远不止我们现在看到的,它几乎覆盖了Jenkins方方面面的操作,所以Python-Jenkins模块还是非常有用的,感兴趣的朋友可在文后的参考资料中进一步了解。
参考资料
- https://python-jenkins.readthedocs.io/