ツールとラベル付きエージェントの設定

Beginner

はじめに

Jenkins は、異なるノード上でビルドを実行できます。ラベルは linux-build のようにノードの能力を記述するもので、ジョブは Jenkins がスケジュールを行う前に一致するラベルを要求することができます。また、Jenkins は Git などのツールインストール情報を保持しているため、ジョブやプラグインはハードコードされたパスに依存する代わりに、名前付きのツールを参照することができます。

この実験では、Jenkins ダッシュボードを使用して組み込みノードの確認、ノードラベルの追加、ローカル Git ツールの設定、ラベルで制限されたフリースタイルジョブの作成、そしてビルド出力の確認を行います。

組み込みノードページを開く

このステップでは、ダッシュボードから Jenkins の組み込みノードを確認します。ノードとは、Jenkins がビルドを実行できる場所のことです。この実験では、LabEx の Jenkins コントローラー上で既にオンラインになっている組み込みノードを使用します。

デスクトップインターフェースを開いてください。Firefox が自動的に Jenkins を開きます。開かない場合は http://localhost:8080 にアクセスしてください。

Jenkins ダッシュボードから:

左側のサイドバーにある Manage Jenkins をクリックし、Nodes をクリックします。Built-In Node という名前のノードを開きます。

ノードページには、組み込みノードのステータスと、ConfigureBuild History といったナビゲーションオプションが表示されます。

Jenkins built-in node page

ターミナルで以下のコマンドを実行し、組み込みノードページに到達可能であることを記録します:

curl -fsS http://localhost:8080/computer/%28built-in%29/ | grep -o 'Built-In Node' | head -1 | tee /home/labex/project/built-in-node-page.txt

以下のように表示されるはずです:

Built-In Node

組み込みノードにラベルを追加する

このステップでは、組み込みノードに linux-build というラベルを追加します。ラベルはスケジューリング用のタグです。linux-build を要求するジョブは、そのラベルを持つノードでのみ実行可能になります。

Built-In Node ページで、Configure をクリックします。

Labels フィールドを見つけて、以下を入力します:

linux-build

Save をクリックします。

保存後、Jenkins は組み込みノードページに戻ります。ページ上に linux-build ラベルが表示されていることを確認してください。

Jenkins built-in node label

ローカル Git ツールの設定

このステップでは、Local Git という名前の Jenkins Git ツールを登録します。ツール設定を行うことで、Jenkins はどの実行ファイルを使用するかを推測する代わりに、名前付きのインストール情報を参照できるようになります。

Jenkins ダッシュボードから:

Manage Jenkins をクリックし、Tools をクリックします。

Git installations セクションまでスクロールします。Git インストールが既に存在する場合は、最初のものを更新してください。セクションにインストール情報がない場合は、Add Git をクリックします。

Git インストール情報を以下の値で入力します:

  • Name: Local Git
  • Path to Git executable: git

Save をクリックします。

Jenkins はこのツール定義をコントローラー設定に保存します。

Jenkins local Git tool

以下のコマンドを実行して、保存された Git ツール設定を確認します:

docker exec jenkins sh -lc "grep -n -E '<name>Local Git</name>|<home>git</home>' /var/jenkins_home/hudson.plugins.git.GitTool.xml" | tee /home/labex/project/git-tool-lines.txt

出力には、ツール名と実行パスの両方が含まれているはずです:

...<name>Local Git</name>
...<home>git</home>

ラベルで制限されたジョブを作成する

このステップでは、labeled-tool-demo という名前のフリースタイルジョブを作成します。このジョブは linux-build ラベルを持つノードに制限されるため、Jenkins は必ずラベル付けされた組み込みノード上でスケジュールする必要があります。

Jenkins ダッシュボードから:

New Item をクリックし、labeled-tool-demo と入力して Freestyle project を選択し、OK をクリックします。

設定ページで:

Restrict where this project can be run を選択します。Label Expression に以下を入力します:

linux-build

Build Steps までスクロールし、Add build step をクリックして Execute shell を選択します。

以下のシェルスクリプトを入力します:

echo "Running on label: linux-build"
git --version
echo "Local Git is available to this build"

Save をクリックします。

保存後、ジョブページが開きます。

Jenkins labeled Freestyle job

以下のコマンドを実行して、保存された重要なジョブ設定を記録します:

docker exec jenkins sh -lc "grep -n -E '<assignedNode>linux-build</assignedNode>|Running on label: linux-build|git --version' /var/jenkins_home/jobs/labeled-tool-demo/config.xml" | tee /home/labex/project/labeled-job-config.txt

ラベル付きジョブを実行する

このステップでは、ジョブを実行してコンソール出力を読み取ります。これにより、Jenkins がラベル制限を受け入れたこと、およびビルドが設定された環境から Git を実行できることが証明されます。

labeled-tool-demo ジョブページで、Build Now をクリックします。

ビルド履歴に #1 が表示されたら、それを開いて Console Output をクリックします。コンソールにはラベルのメッセージ、git version の行、そして Finished: SUCCESS が表示されているはずです。

Jenkins labeled job console output

ターミナルで以下のコマンドを実行し、検証用に同じコンソール出力を保存します:

curl -fsS http://localhost:8080/job/labeled-tool-demo/1/consoleText | grep -E 'Running on label|git version|Finished: SUCCESS' | tee /home/labex/project/labeled-job-console.txt

以下のような出力が表示されるはずです:

Running on label: linux-build
git version ...
Finished: SUCCESS

まとめ

Jenkins の組み込みノードを確認し、ダッシュボードから linux-build ラベルを追加し、名前付きのローカル Git ツールを設定し、ラベルで制限されたフリースタイルジョブを作成して、ビルドが成功することを確認しました。