チュートリアル: Azure で実行されている VM を使用した Jenkins のデプロイのスケーリング
重要
多くの Azure サービスには Jenkins プラグインがあります。これらのプラグインの一部は、2024 年 2 月 29 日時点ではサポート対象外となります。 Azure CLI は、Jenkins と Azure サービスを統合するために現在推奨されている方法です。 詳細については、「Azure 用の Jenkins プラグイン」を参照してください。
このチュートリアルでは、Azure で Linux Virtual Machines を作成し、その VM を作業ノードとして Jenkins に追加する方法について説明します。
このチュートリアルでは、次のことを行います。
- エージェント マシンを作成する
- エージェントを Jenkins に追加する
- Jenkins の新しいフリースタイル ジョブを作成する
- Azure VM エージェントでジョブを実行する
前提条件
- Jenkins のインストール: Jenkins のインストールにアクセスできない場合は、Azure CLI を使用して Jenkins を構成します。
エージェント仮想マシンの構成
az group create コマンドを使用して Azure リソース グループを作成します。
az group create --name <resource_group> --location <location>
az vm create を使用して仮想マシンを作成します。
az vm create --resource-group <resource-group> --name <vm_name> --image UbuntuLTS --admin-username azureuser --admin-password "<password>"
重要なポイント:
- コマンド
--ssh-key-value <ssh_path>
を使用して、お使いの SSH キーをアップロードすることもできます。
- コマンド
JDK をインストールします。
Jenkins の URL を構成する
JNLP を使用する場合は、Jenkins の URL を構成する必要があります。
メニューから、[Manage Jenkins]\(Jenkins の管理\) を選択します。
[System Configuration]\(システム構成\) の [Configure System]\(システムの構成\) を選択します。
Jenkins URL が、Jenkins インストール環境の HTTP アドレス (
http://<your_host>.<your_domain>:8080/
) に設定されていることを確認します。[保存] を選択します。
エージェントを Jenkins に追加する
メニューから、[Manage Jenkins]\(Jenkins の管理\) を選択します。
[System Configuration]\(システム構成\) で、[Manage Nodes and Clouds]\(ノードとクラウドの管理\) を選択します。
メニューから [New Node]\(新しいノード\) を選択します。
[Node Name]\(ノード名\) の値を入力します。
[Permanent Agent]\(永続的なエージェント\) を選択します。
[OK] を選択します。
次のフィールドの値を指定します。
[名前]: 新しい Jenkins インストール環境内のエージェントを識別する一意の名前を指定します。 この値は、エージェントのホスト名とは異なっていても構いません。 ただし、この 2 つの値を同じにしておくと便利です。 名前の値には、次の一覧の特殊文字を使用できます:
?*/\%!@#$^&|<>[]:;
。[リモート ルート ディレクトリ]: エージェントには、Jenkins 専用のディレクトリが必要です。 エージェント上のこのディレクトリへのパスを指定します。
/home/azureuser/work
やc:\jenkins
などの絶対パスを使用することをお勧めします。 これは、エージェント マシンのローカル パスである必要があります。 このパスがマスターから見えるものである必要はありません。 ./jenkins-agent などの相対パスを使用する場合、パスは起動方法で指定される作業ディレクトリからの相対パスになります。[ラベル]: ラベルは、意味的に関連するエージェントを 1 つの論理グループとしてグループ化するために使用されます。 たとえば、Linux の Ubuntu ディストリビューションを実行しているすべてのエージェントに対して、
UBUNTU
というラベルを定義できます。[起動方法]: リモート Jenkins ノードを開始する方法として、[SSH 経由でエージェントを起動する] と [マスター上でのコマンドの実行によりエージェントを起動する] の 2 つのオプションがあります。
[SSH 経由でエージェントを起動する]: 次の各フィールドに値を指定します。
[ホスト]: VM のパブリック IP アドレスまたはドメイン名。 たとえば、
123.123.123.123
やexample.com
のようにします。[資格情報]: リモート ホストへのログインに使用する資格情報を選択します。 [追加] ボタンを選択して新しい資格情報を定義し、作成後にその新しい資格情報を選択することもできます。
[ホスト キーの検証方法]: 接続中にリモート ホストによって提示される SSH キーを Jenkins で検証する方法を制御します。
[Launch agent via execution of command on the master]\(マスター上でのコマンドの実行によりエージェントを起動する\):
https://<your_jenkins_host_name>/jnlpJars/agent.jar
からagent.jar
をダウンロードします。 たとえば、https://localhost:8443/jnlpJars/agent.jar
のようにします。仮想マシンに
agent.jar
をアップロードするコマンド
ssh <node_host> java -jar <remote_agentjar_path>
を使用して Jenkins を起動します。 たとえば、ssh azureuser@99.99.999.9 java -jar /home/azureuser/agent.jar
のようにします。
[保存] を選択します。
構成を定義すると、仮想マシンが新しい作業ノードとして追加されます。
Jenkins でジョブを作成する
メニューから [New Item]\(新しい項目\) を選択します。
名前に「
demoproject1
」と入力します。[Freestyle project] \(フリースタイル プロジェクト) を選択します。
[OK] を選択します。
[全般] タブで、[Restrict where project can be run]\(プロジェクトを実行できる場所を制限する\) をオンにして、[ラベル式] に
ubuntu
と入力します。 前の手順で作成したクラウドの構成によってラベルが提供されていることを確認するメッセージが表示されます。[ソース コード管理] タブで [Git] を選択し、[リポジトリの URL] フィールドに
https://github.com/spring-projects/spring-petclinic.git
のURL を追加します。[ビルド] タブで [Add build step]\(ビルド ステップの追加\) を選択し、Maven の最上位のターゲットを呼び出します。 [Goals]\(目標\) フィールドに
package
を入力します。[保存] を選択します。
Azure VM エージェントで新しいジョブを作成する
前の手順で作成したジョブを選択します。
[Build now]\(今すぐビルド\) を選択します。 新しいビルドがキューに追加されますが、Azure サブスクリプションにエージェント VM が作成されるまでは開始されません。
ビルドが完了したら、[Console output\(コンソール出力\)] に移動します。 ビルドが Azure エージェントでリモートに実行されたことがわかります。