note/Jenkins ジョブ設定をcurlでインポートしたい
crumbIssuer/api/xml
にBASIC認証でGETリクエストをなげ、/defaultCrumbIssuer/crumbRequestField
と/defaultCrumbIssuer//crumb/
をコロンで結合したものがcrumb- cookieにcrumbを保存する
- cookieとBASIC認証を使って、
http://jenkins-url.com/path/to/job/directory/createItem?name=${job_name}
にpostする- リクエストボディにエクスポートしたジョブのxmlを指定する
$ curl -O -u $user:$passwd '[http://old-jenkins/job/job_name/config.xml](http://old-jenkins/job/job_name/config.xml)'
$ set CRUMB (curl -s --cookie-jar /tmp/cookies -u $user:$passwd '[http://new-jenkins/jenkins/crumbIssuer/api/xml](http://new-jenkins/jenkins/crumbIssuer/api/xml)' | xmllint --xpath 'concat(/defaultCrumbIssuer/crumbRequestField/text(),":",/defaultCrumbIssuer//crumb/text())' -)
$ curl -s --cookie /tmp/cookies -u $user:$passwd '[http://new-jenkins/jenkins/job/directory/createItem?name=job_name](http://new-jenkins/jenkins/job/directory/createItem?name=job_name)' --data-binary @config.xml -H 'Content-Type:text/xml' -H "$CRUMB"
xmllintを使ったが、Jenkinsリクエストにクエリパラメータでもよいみたい
/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'