Jenkins api触发远程Jenkins job

步骤一:在远程Jenkins Job的配置页,开启远程触发功能,并配置你的token

Jenkins api触发远程Jenkins job_第1张图片

步骤二:远程Jenkins配置当前用户的API token

点击右上角用户名-->点击configure-->API Token-->把配置的API Token复制并保存到你本地,后续用的到

Jenkins api触发远程Jenkins job_第2张图片

步骤三:如果你要传参数给远程Jenkins,需配置远程Jenkins的参数化构建,参数名要跟你传的参数保持一致。如果不传参数,此步骤跳过。

 

步骤四:关闭远程Jenkins的CSRF

新版jenkins页面没有关闭CSRF的入口,需要找到jenkins.sh文件并添加以下内容

在exec java那一行的-Duser.home="$JENKINS_HOME"后,添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

重启jenkins后Configure Global Security的CSRF项如下图,则说明关闭成功:

步骤五:开启远程Jenkins的匿名用户权限

Jenkins api触发远程Jenkins job_第3张图片

 

步骤六:使用CURL调用远程Jenkins构建Job的API(网络要通)

本地Jenkins的Shell里:

curl -X POST http://远程Jenkins地址/job/远程Job名/buildWithParameters?token=步骤一的token\&步骤三的参数=参数值

问题:

此种方式使用的是匿名用户来调用Jenkins Api,所以步骤二的Api Token并没有用到。我尝试在curl里携带用户认证信息来使用指定用户调用Jenkins Api,但都返回了403。后尝试使用python-jenkins来调用Jenkins Api,虽然构建jenkins server的时候传了username和password参数,但测试发现仍然是匿名用户,还是返回403。不得其解。。。各位要是知道如何使用指定用户来调用Jenkins Api,求在评论区告知~

你可能感兴趣的:(Jenkins)