Jenkins meets Jenkins (ShanonAdventCalendar2016 - 9日目)

このエントリーをはてなブックマークに追加

ども、開発エンジニアの munepom です。
今年のアドベントカレンダーは少人数で頑張らなくて良いので、超気楽!
というわけで、技術的なお役立ち情報をご提供します。

CI (継続的インテグレーション) や、すっごい cron として使われている Jenkins さんですが、
複数 Jenkins でジョブをコピーしたい場合に使える小技があります。

Jenkins さんは、
/createItem
というインターフェースを持っていて、そこへ Job 定義の XML (config.xml) を POST してやれば、
あっという間に Job をコピーできます。
他のメンバーに好評なので、皆様にもぜひお手軽さを味わっていただきたく。

というわけで、やり方のご説明です。
curl があれば、ワンライナーでいけちゃいます!
curl でコピー元 config.xml を取得し、 pipe で次の curl に渡すだけの簡単なお仕事です。

curl -s http://dev-jenkins.example.com/job/TestJob/config.xml | curl --user "JENKINS_USER_NAME:JENKINS_API_KEY" -X POST "http://qa-jenkins.example.com/createItem?name=TestJob" --header "Content-Type: application/xml" --data-binary @-
※ 事前準備として、コピー先 Jenkins の API Key を /user/{JENKINS_USER_NAME}/configure 画面から取得して、 API 認証ができるようにしておいてください。
一応、 gist に bash 版を貼っておきます。さらに改良するなら、引数で Job 名やサーバ名を設定できるようにしとくと良いと思います。 https://gist.github.com/munepom/140a3d6ecfdf614f1ac4b6d2ca2a5740

こういった仕組みを利用すると、
個人用の Jenkins で好きなだけ動作を確認して、あとは共用の Jenkins へ Job をコピーすれば

╭( ・ㅂ・)و ̑̑ グッ !ジョブ!
まあ、 XML を GHE などで管理している場合は、きちんとそちらで管理した方が良いと思います。
最近は、 Docker で Jenkins をお手軽に使えるようになりましたし、便利な時代になったもんです。

明日は shot さんですねー!よろしくです!
(オリンピック周期ブログとのことですが、今年オリンピックが開催されたので期待してます)

次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...