最近在工作中需要用到在后台代碼中觸發Jenkins任務的構建,於是想到Jenkins是否有一些已經封裝好的API類庫提供,用於處理跟Jenkins相關的操作。下面就簡單介紹下我的發現。
Linux Curl
首先找到的是Jenkins官網的wiki:https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
在官網首頁就有關於觸發job的方法:
個人嘗試了下,該方式是通過命令行直接調curl去發POST請求的方式來觸發job的構建。對於用openid管理的Jenkins,需要帶上參數--user USER:PASSWORD,其中的USER和PASSWORD不是你的openID登錄的賬號密碼,而是登錄后顯示在Jenkins中的User Id和API Token,它們的的查看方式如下:
用openID登錄jenkins —> 點擊右上角的用戶名,進入用戶個人頁面 —> 點擊左邊的設置,打開設置頁面 —> API Token,Show Api Token...
如果需要參數化構建job,則要加上--data-urlencode json='{"parameter": [{"name":"param_name1","value":"param_value1"}, {"name":"param_name2","value":"param_value2"}]}'
顯然,這種方式比較繁瑣,很容易出現因格式不正確導致觸發任務失敗,而且這種方式不能幫助我們獲取更多的關於job的信息以便於我們后續對job的狀態進行跟蹤。
Python-Jenkins
繼續尋找,然后我在Jenkins官網上找到了Python-Jenkins API,仔細閱讀后發現,它幾乎涵蓋了大部分Jenkins的操作,大大方便了我們在后台進行對Jenkins的一些列操作。
Python-Jenkins官網:https://pypi.python.org/pypi/python-jenkins/
Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.html
下面簡單介紹下如何使用Python-Jenkins:
1. 安裝
sudo pip install python-jenkins
2. 進入python命令環境或創建新的.py文件jenkinsApiTest.py
import jenkins
#定義遠程的jenkins master server的url,以及port
jenkins_server_url='xxxx:xxxx'
#定義用戶的User Id 和 API Token,獲取方式同上文
user_id='xxxx'
api_token='xxxx'
#實例化jenkins對象,連接遠程的jenkins master server
server=jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)
#構建job名為job_name的job(不帶構建參數)
server.build_job(job_name)
#String參數化構建job名為job_name的job, 參數param_dict為字典形式,如:param_dict= {"param1":“value1”, “param2”:“value2”}
server.build_job(job_name, parameters=param_dict)
#獲取job名為job_name的job的相關信息
server.get_job_info(job_name)
#獲取job名為job_name的job的最后次構建號
server.get_job_info(job_name)['lastBuild']['number']
#獲取job名為job_name的job的某次構建的執行結果狀態
server.get_build_info(job_name,build_number)['result']
#判斷job名為job_name的job的某次構建是否還在構建中
server.get_build_info(job_name,build_number)['building']
3. 更多其他的API可以參考Python-Jenkins API:http://python-jenkins.readthedocs.io/en/latest/api.html