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/
