《持续集成JenkinsAPI常见用法.docx》由会员分享,可在线阅读,更多相关《持续集成JenkinsAPI常见用法.docx(4页珍藏版)》请在三一办公上搜索。
1、持续集成JenkinsAPI常见用法持续集成JenkinsAPI常见用法 jenkins提供了丰富的api接口,基本上所有的操作都可以使用curl来从后台调度,包括:创建项目,禁用项目,启用项目,获取项目描述,获取配置文件,普通触发,scm触发,带参数触发,带补丁触发。 :部门在搞持续集成,使用jenkins作为核心调度,要再其基础上进行二次封装,所以需要研究下jenkins的api。笔者主要负责搭建平台,在研究用法也花费了些时间,本文主要做个简要的记录,希望能为各位朋友节省时间。 : 1. Jenkins1.455 2. 系统Suse 3. Tomcat 6.0.37 4. Java 1.6
2、.0_26 5. patch-parameter Jenkins提供了html、json、python API,实质都是以http get/post方式调用的。查看http:/www.xxx.xxx/jenkins/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:
3、/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/
4、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:
5、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
6、:peterguo -F action=upload -F patch.diff=OtherTest.java.patch 注:带补丁触发需要先安装补丁插件,并设置项目的补丁参数 提供python使用pycurl调用的例子片段,实际和curl调用一样,优点是易整合。 view source print? 01 import pycurl 02 url = http:/10.129.145.112:8081/jenkins/job/helloworld-freestyle/config.xml 03 crl = pycurl.Curl 04 crl.setopt(pycurl.VERBOSE,1
7、) 05 crl.setopt(pycurl.FOLLOWLOCATION, 1) 06 crl.setopt(pycurl.MAXREDIRS, 5) 07 crl.setopt(pycurl.USERPWD, peterguo:peterguo) 08 09 crl.setopt(pycurl.CONNECTTIMEOUT, 60) 10 crl.setopt(pycurl.TIMEOUT, 300) 11 crl.setopt(pycurl.HTTPPROXYTUNNEL,1) 12 crl.fp = StringIO.StringIO 13 14 crl.setopt(pycurl.URL, url) 15 crl.setopt(crl.WRITEFUNCTION, crl.fp.write) 16 crl.perform 17 ret = crl.fp.getvalue