はじめに
Jenkins は、異なるノード上でビルドを実行できます。ラベルは linux-build のようにノードの能力を記述するもので、ジョブは Jenkins がスケジュールを行う前に一致するラベルを要求することができます。また、Jenkins は Git などのツールインストール情報を保持しているため、ジョブやプラグインはハードコードされたパスに依存する代わりに、名前付きのツールを参照することができます。
この実験では、Jenkins ダッシュボードを使用して組み込みノードの確認、ノードラベルの追加、ローカル Git ツールの設定、ラベルで制限されたフリースタイルジョブの作成、そしてビルド出力の確認を行います。
組み込みノードページを開く
このステップでは、ダッシュボードから Jenkins の組み込みノードを確認します。ノードとは、Jenkins がビルドを実行できる場所のことです。この実験では、LabEx の Jenkins コントローラー上で既にオンラインになっている組み込みノードを使用します。
デスクトップインターフェースを開いてください。Firefox が自動的に Jenkins を開きます。開かない場合は http://localhost:8080 にアクセスしてください。
Jenkins ダッシュボードから:
左側のサイドバーにある Manage Jenkins をクリックし、Nodes をクリックします。Built-In Node という名前のノードを開きます。
ノードページには、組み込みノードのステータスと、Configure や Build History といったナビゲーションオプションが表示されます。

ターミナルで以下のコマンドを実行し、組み込みノードページに到達可能であることを記録します:
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 ラベルが表示されていることを確認してください。

ローカル Git ツールの設定
このステップでは、Local Git という名前の Jenkins Git ツールを登録します。ツール設定を行うことで、Jenkins はどの実行ファイルを使用するかを推測する代わりに、名前付きのインストール情報を参照できるようになります。
Jenkins ダッシュボードから:
Manage Jenkins をクリックし、Tools をクリックします。
Git installations セクションまでスクロールします。Git インストールが既に存在する場合は、最初のものを更新してください。セクションにインストール情報がない場合は、Add Git をクリックします。
Git インストール情報を以下の値で入力します:
Name:Local GitPath to Git executable:git
Save をクリックします。
Jenkins はこのツール定義をコントローラー設定に保存します。

以下のコマンドを実行して、保存された 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 をクリックします。
保存後、ジョブページが開きます。

以下のコマンドを実行して、保存された重要なジョブ設定を記録します:
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 が表示されているはずです。

ターミナルで以下のコマンドを実行し、検証用に同じコンソール出力を保存します:
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 ツールを設定し、ラベルで制限されたフリースタイルジョブを作成して、ビルドが成功することを確認しました。