前言

在公司内部有多套的jenkins环境,一套是为了构建使用,一套是为了自动化测试而搭建的环境。当版本构建的时候,需要触发自动化测试环境,这就需要使用到jenkins api调用了。

配置修改
  1. 如果是jenkins 版本小于2.2,可以在ui前端配置,全局配置里去掉这个跨站请求
    在这里插入图片描述

  2. 如果是高版本的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

打印出环境变量,已经写入环境变量里。
在这里插入图片描述
成功输出
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐