通过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

结果如下:

posted @ 2019-12-10 12:08  zongxiang  阅读(2796)  评论(0编辑  收藏  举报