Jenkins の Slave マシンはとても簡単に作れるのでメモ

なんでもかんでも Jenkins を利用してビルドしているようになると、ジョブ数が爆発して Jenkins を動かしているサーバのスペックに不満が出てくるようになると思いますが、 Jenkins の Slave 機能が思った以上に便利だったのでメモをしておきます。

Jenkins の Slave 機能を調べると、まず SSHJNLP という二つの方法が出てくるのですが、意外と違いを説明している人を見掛けなかったので書いておきます。

まず最初に書いておきますが、どちらの場合も Slave マシンに Jenkins を手動でインストールする必要は ありません

SSH を使う

Jenkins のノードの追加から SSH を選択すると、ホストやユーザ名、パスワード、秘密鍵なんかが設定できるようになります。 設定して Slave の起動を行なうと、 SSH 経由で Jenkins Slave としてのプログラムがインストールされ、操作できるようになります。

この SSH 機能を使って Slave を作る場合は、 Slave マシンが以下の条件を満たしている必要があります。

  • Unix 系 OS であること (LinuxMacOSX 、 BSD 等)
  • SSHd が起動していること
  • Jenkins の Master サーバからアクセス出来る場所にいること
    • NAT の中なんかにいると無理

JNLP を使う

JNLP とは Java Web Start を行なうための定義ファイルのことです。

Jenkins のノードの追加から JNLP を選択すると、 JNLP ファイルをダウンロード出来るリンクが出てきます。このファイルをダウンロードし、実行すると Slave マシンとしての機能をそのマシンにインストールすることが出来ます。

また、 SSH 方式とは違い以下のことが可能になります。

  • Slave マシン側が Master マシンに接続に行くので NAT 配下でも利用することができる
  • Windows マシンでも利用することができる

まとめ

まとめると、 Slave 方式の選択方法としては以下のようになるかと思います。

  • SSH
    • Unix 系のサーバマシン
  • JNLP
    • Windows サーバ
    • NAT 配下にいるマシンを Slave にしたい場合

JNLP を使うと手元のノート PC も Jenkins の Slave として参加することが出来るので用意に Slave マシンを増やすことが出来、大変に有用だと思います。