ジェンキンス はHudsonプロジェクトから分岐した自動化サーバーであり、Git、SVN、Mercurialなどの多くのSCM(ソース管理)ソフトウェアシステムをサポートしています。 Jenkinsは、プロジェクトを自動化するための何百ものプラグインを提供します。 Jenkinsは「マスター/スレーブ」アーキテクチャのサポートを提供し、多数のプロジェクトビルドをホストできるようにします。
Jenkinsの「マスター/スレーブ」はどのように機能しますか?
Jenkinsマスター/スレーブアーキテクチャは、ビルドプロジェクトのワークロードが複数のエージェントノードに分散される分散ビルド環境に使用され、ビルドごとに異なる環境を使用できます。
Jenkinsの「マスター/スレーブ」アーキテクチャでは、マスターはそれ自体を基本的なJenkinsインストールとして表し、ビルドシステムのすべてのタスクを処理します。 Jenkinsマスターノードは、ジョブのスケジューリング、スレーブノードの監視、スレーブノードへのビルドのディスパッチ、ビルド結果の記録と表現、およびビルドジョブの直接実行に使用されます。
Jenkinsスレーブノードは、マスターからビルドプロジェクトをオフロードするように設定されており、マスターとスレーブ間の接続を確立する必要があります。 Jenkinsスレーブノードは、WindowsやLinuxなどのさまざまなオペレーティングシステムで実行でき、完全なJenkinsパッケージをインストールする必要はありません。
このチュートリアルでは、最新のUbuntuバージョンUbuntu18.04LTSを使用してJenkinsマスタースレーブアーキテクチャをセットアップする方法を学習します。 Jenkinsマスターサーバーのセットアップ方法を学び、次に他のUbuntuノードをJenkinsスレーブとして追加します。
- Ubuntu 18.04
- マスター-10.0.15.10
- slave01-10.0.15.21
- slave02-10.0.15.22
- root権限
何をしますか?
- Jenkinsマスターをインストールする
- Jenkinsマスタークレデンシャルを構成する
- スレーブエージェントノードの構成
- 新しいスレーブノードを追加する
- ビルドを実行するためのスレーブエージェントノードの準備
- テスト
このチュートリアルでは、基本的なJenkinsのインストールについては説明しません。 JenkinsのインストールをカバーするHowtoForgeに関する記事が多数あります。
- Ubuntu16.04にJenkinsをインストールする
- Ubuntu18.04にJenkinsをインストールする
- CentOS7にJenkinsをインストールする
以下は、JenkinsがインストールされたUbuntu18.04マスターサーバーです。
マスターサーバーJenkinsをインストールしたら、マスターサーバー自体を構成する必要があります。デフォルトでは、Jenkinsエージェントノードを起動するさまざまな方法があります。SSH、Windows管理アカウント、およびJava Web Start(JNLP)を介してエージェントノードを起動し、環境のセットアップとオペレーティングシステムに応じて最適な方法を選択できます。
このガイドでは、sshを介してエージェントノードを起動し、マスターサーバーでJenkinsクレデンシャルを設定する必要があります。
sshキー認証を使用してエージェントノードをセットアップするため、Jenkinsユーザーのsshキーを生成してから、「ssh-copy-id」を使用して各サーバーノードにキーを手動でアップロードする必要があります。
Jenkinsマスターサーバーで、Jenkinsユーザーにログインし、sshキーを生成します。
su - jenkins
ssh-keygen
そして、「。ssh」ディレクトリに「id_rsa」秘密鍵と「id_rsa.pub」公開鍵を取得します。
Jenkinsでのクレデンシャルの設定
Jenkinsダッシュボードを開き、左側の[資格情報]メニューをクリックします。
そして、「グローバル」ドメインリンクをクリックします。
次に、[資格情報の追加]をクリックします。
次に、認証方法を選択します。
- 種類:秘密鍵を使用したSSHユーザー名
- 範囲:グローバル
- ユーザー名:jenkins
- 秘密鍵:直接入力して、マスターサーバーからJenkinsユーザーの「id_rsa」秘密鍵を貼り付けます。
[OK]をクリックします。
そして、sshauthkeyメソッドを使用したJenkinsクレデンシャルが作成されました。
次に、それらのサーバーにJavaをインストールしてスレーブノードサーバーをセットアップし、新しいJenkinsユーザーを作成します。
'software-properties-common'パッケージをインストールし、javaPPAリポジトリを追加します。
sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y
次に、以下のaptコマンドを使用してjavaOpenJDKをインストールします。
sudo apt install openjdk-8-jdk -y
インストールが完了したら、インストールされているJavaのバージョンを確認します。
java -version
そして、JavaOpenJDK1.8がシステムにインストールされます。
次に、「Jenkins」ユーザーをすべてのエージェントノードに追加します。
以下のコマンドを実行します。
useradd -m -s /bin/bash jenkins
passwd Jenkins
エージェントノードの「Jenkins」ユーザーが作成されました。
SSHキーをマスターからスレーブにコピーします
次に、キー「id_rsa.pub」をマスターサーバーノードからスレーブサーバーノードにアップロードする必要があります。以下のように「ssh-copy-id」コマンドを使用して各サーバーノードにアップロードする必要があります。
ssh-copy-id [email protected]
ssh-copy-id [email protected]
Jenkinsユーザーパスワードを入力します。
sshキー「id_rsa.pub」がすべてのエージェントノードにアップロードされました。
Jenkinsダッシュボードで、[Jenkinsの管理]メニューをクリックし、[ノードの管理]をクリックします。
[新しいノード]をクリックします。
ノード名「slave01」を入力し、「パーマネントエージェント」を選択して、「OK」をクリックします。
次に、ノード情報の詳細を入力します。
- 説明:slave01ノードエージェントサーバー
- リモートルートディレクトリ:/ home / jenkins
- ラベル:slave01
- 起動方法:SSH経由でスレーブエージェントを起動し、ホストIPアドレス「10.0.15.21」を入力し、「Jenkins」クレデンシャルを使用して認証を選択します。
次に、[保存]ボタンをクリックし、マスターサーバーがすべてのエージェントノードに接続してエージェントサービスを起動するのを待ちます。
以下は、マスターサーバーがすべてのエージェントノードに接続されている場合の結果です。
Jenkinsスレーブノードがマスターサーバーに追加されました。
このステップでは、スレーブエージェントノードでビルドを実行するようにJenkinsマスターを構成します。
[Jenkinsの管理]メニューをクリックしてから、[システムの構成]をクリックします。
次に、[スレーブ設定]セクションに移動し、以下に示すように必要なものをすべて定義します。
リンクの「スレーブ設定」に関する詳細情報。
[保存]ボタンをクリックすると、スレーブエージェントノードでビルドを実行する準備が整います。
次に、Jenkinsの新しい単純なビルドを作成し、ボットの「slave01」および「slave02」エージェントノードでビルドを実行します。
Jenkinsダッシュボードで、[新しいアイテム]メニューをクリックします。
アイテム名を入力し、フリースタイルプロジェクトを選択して、[OK]をクリックします。
一般セクションで、ジョブの説明を入力し、[このプロジェクトを実行できる場所を制限する]オプションをオンにします。
「ラベル式」で、「slave01」などのノードを指定します。
ビルドセクションに移動し、[シェルの実行]オプションを選択して、次のようにコマンドを入力します。
top -b -n 1 | head -n 10 && hostname
[保存]ボタンをクリックすると、ジョブページにリダイレクトされます。
[今すぐビルド]をクリックしてプロジェクトをビルドし、[ビルド履歴]セクションの項目をクリックします。
そして、以下が私の結果です。
'slave01'エージェントノード上に構築します。
'slave02'エージェントノード上に構築します。
Jenkinsマスター/スレーブアーキテクチャと分散ビルドJenkinsのインストールと構成が正常に完了しました。
- https://wiki.jenkins.io/