持續集成Jenkins API常見用法

jopen 10年前發布 | 144K 次閱讀 Jenkins 項目構建

jenkins(持續集成開源工具)提供了豐富的api接口,基本上所有的操作都可以使用curl來從后臺調度,包括:創建項目,禁用項目,啟用項目,獲取項目描述,獲取配置文件,普通觸發,scm觸發,帶參數觸發,帶補丁觸發。

【背景】:部門在搞持續集成,使用jenkins作為核心調度,要再其基礎上進行二次封裝,所以需要研究下jenkins的api。筆者主要負責搭建平臺,在研究用法也花費了些時間,本文主要做個簡要的記錄,希望能為各位朋友節省時間。

【環境】:(默認讀者已經具備了基本的持續集成經驗和jenkins用法

1. Jenkins1.455 

2. 系統Suse

3. Tomcat 6.0.37

4. Java 1.6.0_26

5. patch-parameter 

【API介紹】

 Jenkins提供了html、json、python API,實質都是以http get/post方式調用的。查看http://www.xxx.xxx/jenkins/api/ 即可得到相應的說明,如圖:

持續集成Jenkins API常見用法 

【API實踐】

1.創建

curl -X POST http://www.xxx.xxx/jenkins/createItem?name=JavaStd  --user peterguo:peterguo --data-binary "@javastd.config.xml" -H "Content-Type: text/xml"

2.禁用 

curl -X POST http://www.xxx.xxx/jenkins/job/JavaStd/disable  --user peterguo:peterguo

3.啟用 

curl -X POST http://www.xxx.xxx/jenkins/job/JavaStd/enable --user peterguo:peterguo

4.刪除 

curl -X POST http://www.xxx.xxx/jenkins/job/JavaStd/doDelete --user peterguo:peterguo

5.獲取項目描述 

curl -X GET http://www.xxx.xxx/jenkins/job/JavaStd/description --user peterguo:peterguo

6.獲取配置文件 

curl -X GET http://www.xxx.xxx/jenkins/job/JavaStd/config.xml --user peterguo:peterguo

7.觸發SCM檢查 

curl -X GET http://www.xxx.xxx/jenkins/job/JavaStd/polling --user peterguo:peterguo

8.普通觸發 

curl -X GET http://www.xxx.xxx/jenkins/job/JavaStd/build --user peterguo:peterguo

9.帶參數觸發

curl -X GET "http://www.xxx.xxx/jenkins/job/helloworld-freestyle/buildWithParameters?bAllTest=&Choices=2&strParam=abc" --user peterguo:peterguo

10.帶參數和補丁觸發  

curl -X POST "http://www.xxx.xxx/jenkins/job/helloworld-freestyle/buildWithParameters?bAllTest=&Choices=2&strParam=abc" --user peterguo:peterguo -F "action=upload" -F "patch.diff=@OtherTest.java.patch"

注:帶補丁觸發需要先安裝補丁插件,并設置項目的補丁參數

持續集成Jenkins API常見用法

【Python調用】

 提供python使用pycurl調用的例子片段,實際和curl調用一樣,優點是易整合。

import pycurl
url = "http://10.129.145.112:8081/jenkins/job/helloworld-freestyle/config.xml"
crl = pycurl.Curl()
crl.setopt(pycurl.VERBOSE,1)
crl.setopt(pycurl.FOLLOWLOCATION, 1)
crl.setopt(pycurl.MAXREDIRS, 5)
crl.setopt(pycurl.USERPWD, "peterguo:peterguo")
 
crl.setopt(pycurl.CONNECTTIMEOUT, 60)
crl.setopt(pycurl.TIMEOUT, 300)
crl.setopt(pycurl.HTTPPROXYTUNNEL,1)
crl.fp = StringIO.StringIO()

crl.setopt(pycurl.URL, url)
crl.setopt(crl.WRITEFUNCTION, crl.fp.write)
crl.perform()
ret = crl.fp.getvalue()

 

來自:http://my.oschina.net/sanpeterguo/blog/197931

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!