23

私は最近、Jenkins 主導の Java プロジェクトを継承しました。このプロジェクトでは、主要な開発者が立ち上げて終了しました。彼は Jenkins WAR を仮想サーバー上の Tomcat インスタンスにデプロイしました。これが「ビルド サーバー」と見なされていました。

このビルド サーバーにはmyserver.example.com、別の仮想サーバーをビルドしてデプロイするために構成されたスレーブがありました。週末に、システム スタッフは、myserver.example.com仮想が存在する物理サーバーを廃止し、そのスレーブにデプロイするように構成された Jenkins ジョブに対して次の例外を生成しました。

ここに画像の説明を入力

[ See log for more details ] リンクをクリックすると、次のコンソール出力が表示されます。

[03/18/13 08:13:31] [SSH] Opening SSH connection to myserver.example.com:22.
java.io.IOException: There was a problem while connecting to myserver.example.com:22
    at com.trilead.ssh2.Connection.connect(Connection.java:755)
    at com.trilead.ssh2.Connection.connect(Connection.java:546)
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:650)
    at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:283)
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:200)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.NoRouteToHostException: No route to host
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at com.trilead.ssh2.transport.TransportManager.establishConnection(TransportManager.java:342)
    at com.trilead.ssh2.transport.TransportManager.initialize(TransportManager.java:450)
    at com.trilead.ssh2.Connection.connect(Connection.java:699)
... 9 more
[03/18/13 08:13:34] [SSH] Connection closed.

myserver.example.comスレーブ (仮想) がオフラインであるため、これは理にかなっています。ただし、Jenkins を実際に使用した経験がないため、Jenkins マスターを構成してこれらのジョブを新しいスレーブにビルド/デプロイするための適切な手順と、新しいスレーブのセットアップ方法がわかりません。たとえば、新しいスレーブに何かをインストールする必要がありますか、または何らかのセットアップ/構成を行う必要がありますか? 前もって感謝します!

4

2 に答える 2

36

Jenkins にスレーブを追加するのはとても簡単です。基本的に、UNIX スレーブを使用している場合は、マシンへの SSH アクセスが必要です。Jenkins SSH Slaves プラグインもインストールする必要があります。それができたら、マスターのManage Jenkinsオプションに移動し、Manage Nodesを選択します。

手順は次のとおりです。

  1. [新しいノード] をクリックします
  2. Dumb Slaveを選択し、名前を付けます (シンボリック、ドメイン名である必要はありません。後で追加します)。
  3. [OK] をクリックして、構成ページに進みます。
  4. そのノードで実行する同時プロセスの数をエグゼキューターの数に入力します (通常は、割り当てられた CPU コアの数を超えません)。
  5. リモート FS ルートに、Jenkins が作業ファイルを保存する場所へのフル パスを入力します。
  6. システムでラベルを使用している場合は、必要に応じてラベルを追加します (多くの場合は必要ありませんが、プロジェクトでは、特定のジョブのエグゼキューターのプールに特定のラベルをノードに含める必要がある場合があります)。
  7. [起動方法] で [SSHを介して Unix マシンでスレーブ エージェントを起動する] を選択します(まだ選択されていない場合) 。
  8. [ Launch Method]行の下に表示される [ Host]フィールドに完全修飾ドメイン名を入力します。

スレーブにインストールされるツールについては、いくつかの仮定があります。特殊なツールがある場合は、それらを個別にインストールする必要がある場合があります (または、実行の直前にツールの移動を処理するプラグインを調べます)。ただし、ノードがすべてのビルド ツール (おそらく Java、ant など) を含むテンプレートからビルドされている場合は、作業を進めるために必要なことはこれだけです。

于 2013-03-18T13:07:21.340 に答える