Jenkinsのエグゼキューターが不足しているか、JenkinsのWindowsジョブのキュー待ちになっている場合、より多くのJenkinsエージェントを設定する必要があります。
このチュートリアルでは、ソフトウェアビルド環境のリソースニーズが増大している場合に、JenkinsエージェントWindowsノードを追加する方法を学びます。
前提条件
この記事に従うために、以下が必要です。
- 2.176.1以上のJenkinsコントローラの動作するインストール。この記事では、コントローラはマスターノードと呼ばれます。
- Jenkinsエージェントノードとして参照される、サポートされているWindows OSのインストール。
JenkinsエージェントとJenkinsエージェントコントローラとは何ですか?
A core component of Jenkins is the job. Jobs are instances of build automation that run a defined set of tasks. Supporting different job configurations requires an automation system to distribute build jobs among different nodes, which is simply an environment containing a Jenkins agent or controller.
Jenkinsエージェントは、物理マシン、仮想マシン、Kubernetesクラスタ、およびDockerイメージなど、さまざまな環境で実行されます。Jenkinsエージェントは、コントローラによってタスクとして割り当てられるノード上にある実行可能ファイルであり、ジョブの実行を担当します。
エージェントコントローラー、またはマスターノードとも呼ばれるものが、異なるJenkinsエージェントの管理を担当します。単一のJenkinsノード構成では、コントローラーはJenkinsエージェントとして機能し、ビルドジョブを実行することもできます。しかし、環境が複雑になるにつれて、この構成は制約が生じます。
コントローラーマスターノードからジョブの実行を防止する
追加のJenkinsエージェントを追加する前に、まずマスターノードをビルドエージェントプールから削除する必要があります。マスターノードをこのプールから削除することで、コントローラーがビルドジョブの調整に十分なリソースを持っていることが保証されます。以下では、マスターノードがジョブを実行しないようにするために必要な設定を説明します。
- ブラウザを使用してJenkinsのユーザーインターフェースにアクセスします。このチュートリアルでは、Jenkinsコントローラーは
192.168.x.x:8080
のアドレスを使用しています。

2. Jenkinsダッシュボードが表示されたら、Manage Jenkinsリンクをクリックします。

3. 次に、System Configurationセクション内のConfigure Systemリンクをクリックします。

4. ページを下にスクロールして、# of executorsという設定を見つけ、値を0
に設定します。この設定により、マスターノードまたはコントローラーがビルドジョブを実行しないようになります。

0
.5. 同じページで、Jenkins URLを見つけます。URLを、ブラウザで使用しているIPアドレスとポートに変更します。例えば、localhost:8080
ではなく。
エージェントノードは、設定が誤っている場合、コントローラーとの通信時に正しいIPの代わりに
localhost
を使用しようとすることがあります。正しいIPアドレスが設定されていると、将来のエージェント間の通信問題を回避できます!

6. 更新された設定を確認および適用するために保存をクリックします。
インバウンドエージェントのTCPポートの設定
Windows Jenkinsエージェントノードがジョブサービスを起動し、コントローラーに戻るための最適な方法を知るために、TCPインバウンドポートの設定を行う必要があります。TCPインバウンドポートの設定を定義することで、Jenkinsエージェントはネットワークを介してJenkinsコントローラーに接続する方法を知ることができます。
- 再度、JenkinsダッシュボードからManage Jenkinsの設定ページに移動します。
2. 以下のように、TCPポートオプションを見つけるためにConfigure Global Securityセクションをクリックします。

3. エージェントセクションとインバウンドエージェントのTCPポートを見つけるためにスクロールします。オプションを無効からランダムに変更します。ランダム設定では、JenkinsはエージェントがJenkins HTTPポートに初めて接続する際に、利用可能なランダムなポート番号を選択し、そのポート番号をエージェントと共有します。

4. 最後に、保存ボタンをクリックして更新された設定を適用します。
Jenkinsコントローラー上に新しいJenkinsエージェントノードを作成します。
すべての適切な設定が構成されたら、新しいJenkinsエージェントノードを作成する時が来ました。 その前に、Windowsノード上に作業ディレクトリを作成してください。 Windowsノード上で、ディレクトリC:\Jenkinsを作成してください。
作業ディレクトリが作成されたら、以下の手順に従って新しいノードを構成してください!
- Jenkinsダッシュボードから、ノードとクラウドの管理リンクをクリックします。

2. 左側のメニューから新しいノードリンクをクリックします。コントローラのみがエージェントとして構成されている場合、ノードリストには最初はマスターノードしか表示されません。

3. ノード名を入力します。このチュートリアルではMyWindowsAgent1
となっていますが、環境に適した識別子を使用してください。また、永続エージェントのオプションを選択します。追加のエージェントがある場合は、既存のノードのコピーのオプションも表示されるかもしれません。最後に、OKボタンをクリックします。

4. 以下の設定で新しいエージェントを構成します。緑色でハイライトされているオプションはデフォルトです。
- エグゼキュータの数:通常はエージェントのコア数に対応します。それを見つけるための便利なPowerShellスニペットは以下の通りです。
- リモート作業ディレクトリ:C:\Jenkins
- 起動方法:エージェントをマスターに接続して起動します。

最近のソリューション記事によると、Cloudbees.comでは、バージョン2.176.1以降でエージェントの起動オプションが変更されました。”Web Start経由でエージェントを起動”は現在”マスターに接続してエージェントを起動”となりました。
5. 保存ボタンをクリックし、新しいWindows Jenkinsエージェントノードが表示されるノードリスト画面に移動します。
6. 新しいノードの名前であるMyWindowsAgent1
をクリックして、エージェントのインストールリンクを取得します。

7. 今度はJenkinsエージェントがホストされるWindowsノードにリモートデスクトップ(RDP)接続を開きます。
8. ブラウザを使用して、まもなくWindowsエージェントでアクセスするために、http://controllerip:port/computer/nodename
に移動します。
9. 起動ボタンをクリックして、エージェントインストーラをダウンロードし、Jenkinsエージェントのインストールを開始します。

次のステップ
新しく見つけたエージェントを活用する方法はたくさんあります。JenkinsでPowerShellスクリプトを実行したり、DockerでJenkinsを実行したりすることで、ビルド環境を自動化する方法がたくさんあります!