SVNで特定のリビジョンをチェックアウトしてビルドしたかった

ブランチとかはよく見るんですが、リビジョンについては全く見かけないので。

といっても、Jenkinsには「ビルドのパラメータ化」というものがあり、簡単にできます。記事にするほどの事でもございませんが、何かに使えそうなので。

1.「ビルドのパラメータ化」にチェックを入れ、テキストのパラメータを作る


REVISIONというパラメータを作ります。
デフォルト値は空にしておきます。多分、空のままビルドすると失敗します。

2.SVNリポジトリURLの末端に「@$REVISION」をつける

http://xxx/svn/ExampleProject/trunk@1234とかするとrev1234からチェックアウトしてくれる。
これをパラメータ化する。今回は$REVISIONに置き換え。

3.リクエストを投げてビルドさせる

http://jenkins.local:8080/でjenkinが動いていた場合はこんな感じ。

curl -H $(curl 'http://jenkins.local:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') \
http://jenkins.local:8080/job/Example/buildWithParameters \
-d REVISION=345

/job/Example/buildWithParametersがそのjob(ここではExample)に対してのパラメータ化されたビルドの実行で、
末端の -d REVISION=345 がパラメータ。

これで、revision345のものをチェックアウトしてビルドしてくれる、はず。
画像見てのとおり、SVNとか自宅じゃ使わないので・・・

crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb) ってなんや!って方は、まずはドキュメントをどうぞ。

Monitoring external jobs - 日本語 - Jenkins Wiki

CSRF対策で、意図しないPOSTは弾くようになっている。(認証設定してたら別だろうけど)
そのため、変なヘッダを追加しないといけないのだけど、curlbashであれば以下のようにすれば対応できるって寸法らしい。

curl -H $(curl 'http://jenkins.local:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')

あとはpostするだけ。ビルドキュー に追加されるはず。