新しいJenkinsビルドエージェントのセットアップ方法

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エージェントを追加する前に、まずマスターノードをビルドエージェントプールから削除する必要があります。マスターノードをこのプールから削除することで、コントローラーがビルドジョブの調整に十分なリソースを持っていることが保証されます。以下では、マスターノードがジョブを実行しないようにするために必要な設定を説明します。

  1. ブラウザを使用してJenkinsのユーザーインターフェースにアクセスします。このチュートリアルでは、Jenkinsコントローラーは192.168.x.x:8080のアドレスを使用しています。
Logging into the Jenkins Dashboard.

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

Navigate to Manage Jenkins.

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

Navigate to Configure System.

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

Set the # of executors option to 0.

5. 同じページで、Jenkins URLを見つけます。URLを、ブラウザで使用しているIPアドレスとポートに変更します。例えば、localhost:8080ではなく。

エージェントノードは、設定が誤っている場合、コントローラーとの通信時に正しいIPの代わりにlocalhostを使用しようとすることがあります。正しいIPアドレスが設定されていると、将来のエージェント間の通信問題を回避できます!

Update the Jenkins URL to the proper IP address.

6. 更新された設定を確認および適用するために保存をクリックします。

インバウンドエージェントのTCPポートの設定

Windows Jenkinsエージェントノードがジョブサービスを起動し、コントローラーに戻るための最適な方法を知るために、TCPインバウンドポートの設定を行う必要があります。TCPインバウンドポートの設定を定義することで、Jenkinsエージェントはネットワークを介してJenkinsコントローラーに接続する方法を知ることができます。

  1. 再度、JenkinsダッシュボードからManage Jenkinsの設定ページに移動します。

2. 以下のように、TCPポートオプションを見つけるためにConfigure Global Securityセクションをクリックします。

Navigate to the Configure Global Security section.

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

Modify the TCP port for inbound agents setting to Random.

4. 最後に、保存ボタンをクリックして更新された設定を適用します。

Jenkinsコントローラー上に新しいJenkinsエージェントノードを作成します。

すべての適切な設定が構成されたら、新しいJenkinsエージェントノードを作成する時が来ました。 その前に、Windowsノード上に作業ディレクトリを作成してください。 Windowsノード上で、ディレクトリC:\Jenkinsを作成してください。

作業ディレクトリが作成されたら、以下の手順に従って新しいノードを構成してください!

  1. Jenkinsダッシュボードから、ノードとクラウドの管理リンクをクリックします。
Navigate to Manage Nodes and Clouds.

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

Add a New Node to Jenkins.

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

Enter the node name and type.

4. 以下の設定で新しいエージェントを構成します。緑色でハイライトされているオプションはデフォルトです。

  • エグゼキュータの数:通常はエージェントのコア数に対応します。それを見つけるための便利なPowerShellスニペットは以下の通りです。
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property Number*
  • リモート作業ディレクトリC:\Jenkins
  • 起動方法:エージェントをマスターに接続して起動します。
Configure the new Jenkins Agent node.

最近のソリューション記事によると、Cloudbees.comでは、バージョン2.176.1以降でエージェントの起動オプションが変更されました。”Web Start経由でエージェントを起動”は現在”マスターに接続してエージェントを起動”となりました。

5. 保存ボタンをクリックし、新しいWindows Jenkinsエージェントノードが表示されるノードリスト画面に移動します。

6. 新しいノードの名前であるMyWindowsAgent1をクリックして、エージェントのインストールリンクを取得します。

Navigate to the new Windows node.

7. 今度はJenkinsエージェントがホストされるWindowsノードにリモートデスクトップ(RDP)接続を開きます。

8. ブラウザを使用して、まもなくWindowsエージェントでアクセスするために、http://controllerip:port/computer/nodenameに移動します。

9. 起動ボタンをクリックして、エージェントインストーラをダウンロードし、Jenkinsエージェントのインストールを開始します。

Utilize the instructions and links to install the agent.

次のステップ

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

Source:
https://adamtheautomator.com/jenkins-agent/