jenkins api 接口调用job(支持参数输入)
前言在公司内部有多套的jenkins环境,一套是为了构建使用,一套是为了自动化测试而搭建的环境。当版本构建的时候,需要触发自动化测试环境,这就需要使用到jenkins api调用了。配置修改如果是jenkins 版本小于2.2,可以在ui前端配置,全局配置里去掉这个跨站请求如果是高版本的jenkins ,需要修改jenkins的配置文件。(1).如果安装包方式启动的jenkins, 则配置文件在
前言
在公司内部有多套的jenkins环境,一套是为了构建使用,一套是为了自动化测试而搭建的环境。当版本构建的时候,需要触发自动化测试环境,这就需要使用到jenkins api调用了。
配置修改
-
如果是jenkins 版本小于2.2,可以在ui前端配置,全局配置里去掉这个跨站请求
-
如果是高版本的jenkins ,需要修改jenkins的配置文件。
(1). 如果安装包方式启动的jenkins, 则配置文件在 /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
配置后重启jenkins。service jenkins restart
(2). 如果配置是tomcat 的,就直接在/bin/catalina.sh下添加
“JAVA_OPTS="$JAVA_OPTS -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
”
注意:不删原有的JAVA_OPTS参数设置。
重启即可。提示下面的语句就说明配置成功
注意:此方式不安全,不能对外。不删原有的JAVA_OPTS参数设置。
常用接口调用
“apitest” 为jenkins 上的一个job名字,其他项目只需要替换即可。
jenkins 不需要账号登录:
启动job :
curl -X POST ‘http://xxxxx:8080/jenkins/job/apitest/build’
默认不加delay是有静默期的,一般是50s左右,
curl -X POST ‘http://xxxxx:8080/jenkins/job/apitest/build?delay=0sec’
加上delay=0sec就可以立即触发。如果你调用的是自动化测试job,你要确保你调用job的时候你环境已经起来,也就是delay需要合适的设置时间。
查询job状态:
curl --silent ‘http://xxxxx:8080/jenkins/job/apitest/lastBuild/api/json’
获取最新的build:
curl --silent ‘http://xxxxx:8080/jenkins/job/apitest/lastBuild/buildNumber’
停用job当前构建的job:
根据上一个接口获取num后做逻辑
curl -X POST ‘http://xxxxx:8080/jenkins/job/apitest/92/stop’
如果jenkins 是需要账号登录的:
curl -X POST ‘http://xxxxx:8080/jenkins/job/apitest/build?delay=0sec’ --user admin:admin132 即可。
项目中调用
在原有的项目shell中添加你要执行的以上命令即可。请确保环境彼此可以ping访问。
远程调用传入参数
有如下一个jenkinsfile demo文件:
文件如下:定义一个greeting的参数
pipeline {
agent any
parameters {
string(name: ‘Greeting’, defaultValue: ‘Hello’, description: ‘How should I greet the world?’)
}
stages {
stage(‘test’) {
agent any
steps {
echo “${params.Greeting} World!”
sh ‘’‘ls
env’’’
}
}
远程调用方式:
使用–data-urlencode json
curl -X POST --data-urlencode json=’{“parameter”:[{“name”:“Greeting” ,“value”:“test”}]}’ ‘http://xxxxx:8080/job/xxxxx/job/master/build’ --user admin:admin132
打印出环境变量,已经写入环境变量里。
成功输出
更多推荐
所有评论(0)