天天看點

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

最近在工作中需要用到在背景代碼中觸發Jenkins任務的建構,于是想到Jenkins是否有一些已經封裝好的API類庫提供,用于處理跟Jenkins相關的操作。下面就簡單介紹下我的發現。

  首先找到的是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的狀态進行跟蹤。

  繼續尋找,然後我在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

本文出自https://www.cnblogs.com/znicy/p/5498609.html