Python-Jenkins API使用 —— 在後端代碼中操控Jenkins

 

  最近在工做中須要用到在後臺代碼中觸發Jenkins任務的構建,因而想到Jenkins是否有一些已經封裝好的API類庫提供,用於處理跟Jenkins相關的操做。下面就簡單介紹下個人發現。html

Linux Curl

  首先找到的是Jenkins官網的wiki:https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+APIpython

  在官網首頁就有關於觸發job的方法:json

  

  我的嘗試了下,該方式是經過命令行直接調curl去發POST請求的方式來觸發job的構建。對於用openid管理的Jenkins,須要帶上參數--user USER:PASSWORD,其中的USER和PASSWORD不是你的openID登陸的帳號密碼,而是登陸後顯示在Jenkins中的User Id和API Token,它們的的查看方式以下:api

  用openID登陸jenkins —> 點擊右上角的用戶名,進入用戶我的頁面 —>  點擊左邊的設置,打開設置頁面 —> API Token,Show Api Token... curl

  若是須要參數化構建job,則要加上--data-urlencode json='{"parameter": [{"name":"param_name1","value":"param_value1"}, {"name":"param_name2","value":"param_value2"}]}'ui

  顯然,這種方式比較繁瑣,很容易出現因格式不正確致使觸發任務失敗,並且這種方式不能幫助咱們獲取更多的關於job的信息以便於咱們後續對job的狀態進行跟蹤。url

Python-Jenkins 

  繼續尋找,而後我在Jenkins官網上找到了Python-Jenkins API,仔細閱讀後發現,它幾乎涵蓋了大部分Jenkins的操做,大大方便了咱們在後臺進行對Jenkins的一些列操做。命令行

  Python-Jenkins官網:https://pypi.python.org/pypi/python-jenkins/code

    Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.htmlserver

 

  下面簡單介紹下如何使用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

相關文章
相關標籤/搜索