通过URL触发Jenkins构建
- 用Jenkins做持续集成时,一般会使用webhooks触发构建,或者定时构建,这里记录用URL的方式触发Jenkins构建。
1、创建一个用户
登陆Jenking——系统管理——用户管理—— Create User
2、用户添加权限
系统管理——全局安全配置
3、发送CURL POST请求
curl -I -u test:<Userpasswd> -X POST "http://<Jenkins_server:port>/job/<Job_Name>/build?BUILD_TYPE=Update"
test:创建的用户名
<Userpasswd>:用户密码
<Jenkins_server:port>:Jenkins服务器的地址+端口
<Job_Name>:任务名,需要构建那个任务
BUILD_TYPE=Update:可选,构建类型
正常应该为:200 OK 或 201 Created
通过Jenkins页面Build Executor Status查看是否正常构建
如果出现403错误:No valid crumb was included in the request
系统管理 –> Configure Global Security中调整设置:
取消“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”的勾选。
Jenkins 高版本使用URL触发构建
- 根据官网描述,Jenkins版本自2.204.6以来的重大变更有:删除禁用 CSRF 保护的功能(防止跨站点请求伪造),解决方法如下:
方式一:
脚本内容如下:
JOB_NAME="test1" # 创建的任务名
TOKEN="123456" # 任务内配置的Token,构建触发器—触发远程构建 (例如,使用脚本)—身份验证令牌(123456)
JENKINS_USER="admin" # Jenkins登录的用户名
JENKINS_PASSWD="Admin123" # Jenkins登录的密码
JENKINS_URL="http://192.168.1.100:8080" # # Jenkins地址
COOKIEJAR="$(mktemp)"
CRUMB=$(curl -s -u "$JENKINS_USER:$JENKINS_PASSWD" --cookie-jar "$COOKIEJAR" "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)")
curl -s -X POST -u "$JENKINS_USER:$JENKINS_PASSWD" --cookie "$COOKIEJAR" -H "$CRUMB" "$JENKINS_URL"/job/$JOB_NAME/buildWithParameters?token=$TOKEN
// 如果构建任务有需要提交参数,使用-d指定参数即可
# curl -s -X POST -u "$JENKINS_USER:$JENKINS_PASSWD" --cookie "$COOKIEJAR" -H "$CRUMB" "$JENKINS_URL"/job/$JOB_NAME/buildWithParameters?token=$TOKEN -d "service=frontend" -d "tag=v1.1"
方式二:
修改/usr/local/bin/jenkins.sh 启动文件
添加
-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
结果如下:
—— Share every essays ——