Jenkinsを使った継続的デリバリー


色々と試しながらやってるけど、楽しい。


Jenkinsを使ってのCIは、Hudsonの頃から使い始めてかれこれ3〜4年になるけど、分散ビルドにまともに手をつけはじめたのは今回のプロジェクトが恥ずかしながらはじめて(つまり、ずっとマスタだけでビルドしてた。中には12時間かかるテスト用のジョブがあったり…)。


今のプロジェクトの個人的なテーマは、アプリケーション導入作業を生産的にするための継続的デリバリーの適用なので、そのツールとしてJenkinsを有効に使いたい。


そこで、分散ビルドといっても、計算機のリソースを有効活用したビルドという目的ではなく、Jenkinsの優れたUIによって、「ビルド実行」のボタン1発で任意のノード(スレーブ)にビルドしたアプリケーションをデプロイするって用途でJenkinsを使おうとしている(もちろん、テストが全て通ったクリーンなパッケージを)。


ジョブを実行すると、どのノードにデプロイするかを選択して、そのノードにアプリケーションを勝手にデプロイしてくれるような使い方。


最初は、インストールした状態のJenkinsにて、ビルドのパラメータを設定して(登録したノードをいちいち入力して選択ボックスを作る)、そのパラメータ値を「実行するノードを制限する」際のラベル名に使うようなやり方をしてたけど、ビルドのパラメータは、あくまでビルド手順の中でしか使えない模様。


そんな中、「NodeLabel Parameter Plugin」がまさにやりたいことができるプラグインだった。


後は、マスターで作ったパッケージをスレーブ(デプロイ先)にコピー。これも「Copy Artifact Plugin」であっさり解決。コピー元として参照するジョブとコピー先のジョブを実行するノードが異なっていても、気にすることなくコピーできた。


JenkinsそのもののUIや拡張性もそうだけど、こうばっちりハマるプラグインが見つかると嬉しいよね。GW中に蛙本はひと通り読みたいなぁ。