jenkins学习之使用curl命令触发任务

Trigger parameterized build with curl


SERVER=http://jenkins.马哥私房菜.com:8080

curl -n -X POST $SERVER'/job/job_name/buildWithParameters?token=马哥私房菜&BUILD_TYPE=参数值'

这个是触发某个带参数的job
注意
* 需要是post请求,使用-X post来表示。
* 账号密码 写到家目录下面的.netrc 文件里面,使用curl的参数-n。
* 注意多个参数使用&来分割的,注意在bash中执行要带上单引号,不然 & 会被bash解析了,bash中这个是表示让命令后台执行。特别注意。

$ cat ~/.netrc -n                                                                                                                           [mamh@10.0.63.43 ] 18-01-19 14:11  /home/mamh
     1  machine jenkins.马哥私房菜.com
     2  login 马哥私房菜
     3  password https://shop592330910.taobao.com/

Trigger parameterized build with curl and crumb

SERVER=http://jenkins.马哥私房菜:8080
CRUMB=$(curl -n $SERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22:%22,//crumb\))
curl -n -X POST  -H "$CRUMB" $SERVER'/job/buildfarm_01/buildWithParameters?token=马哥私房菜&BUILD_TYPE=xxx'

报错的一个页面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 No valid crumb was included in the requesttitle>
head>
<body><h2>HTTP ERROR 403h2>
<p>Problem accessing /job/buildfarm_01/buildWithParameters. Reason:
<pre>    

No valid crumb was included in the request

pre>

p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOTa><hr/>

body>
html>

“No valid crumb was included in the request” 错误就是需要加入crumb的。

出现这个错误是因为你的jenkins中 Configure Global Security下面配置了防止跨站点访问时候需要加上crumb的。
CSRF Protection 下面有个 ‘防止跨站点请求伪造’。

当然你也可以把这个勾选去掉,就不用加crumb了。

你可能感兴趣的:(jenkins)