Jenkins とソース管理(Git)の統合

JenkinsBeginner
オンラインで実践に進む

はじめに

この実験では、Jenkins と Git の統合について学びます。ソースコード管理(SCM)は、現代のソフトウェア開発の要です。Jenkins のような継続的インテグレーション(CI)サーバーを Git のような SCM システムと統合することは、ビルドやテストのプロセスを自動化するための基本的なステップです。

この実験では、以下の内容を習得します。

  • Jenkins の Git プラグインが利用可能であることを確認する。
  • ローカルの Git リポジトリにリンクされたフリースタイルプロジェクトを作成する。
  • リポジトリ内のスクリプトを実行するビルドステップを追加する。
  • 手動でビルドを実行し、構成をテストする。
  • 新しいコミット時に自動的にビルドをトリガーする SCM ポーリングを構成する。

この実験のために、Jenkins インスタンスと小規模なローカル Git リポジトリが既に準備されています。デスクトップ上の Firefox ブラウザを開くことで、Jenkins の Web インターフェースにアクセスできます。ブラウザは自動的に http://localhost:8080 を開くため、URL を手動で入力する必要はありません。ログインは不要です。

Git プラグインの確認

Jenkins はプラグインを使用して統合機能を追加します。Git プラグインは、ジョブ構成で使用する Git オプションを提供します。

  1. デスクトップインターフェースから Firefox ブラウザを開きます。ブラウザは自動的に http://localhost:8080 を開くため、URL を手動で入力する必要はありません。ログインは不要です。
  2. Jenkins ダッシュボードで、右上の歯車アイコンをクリックして Manage Jenkins(Jenkins の管理)を開きます。
  3. Plugins(プラグイン)をクリックします。
  4. Installed plugins(インストール済みプラグイン)タブを選択します。
  5. フィルターボックスに git と入力します。
  6. インストール済みプラグインのリストに Git が表示されていることを確認します。

インストール済みの Git プラグイン

Git プラグインが確認できたら、リポジトリからソースコードをプルするプロジェクトを作成できます。

プロジェクトの作成と Git SCM の構成

Git プラグインがインストールされたので、Jenkins プロジェクトを作成し、Jenkins コンテナ内に準備されたローカルリポジトリからソースコードをプルするように構成します。

  1. 左上のパンくずリストにある Dashboard(ダッシュボード)リンクをクリックして、Jenkins のメインダッシュボードに戻ります。
  2. 左側のサイドバーにある New Item(新規ジョブ作成)をクリックします。
  3. アイテム名として git-integration-project と入力します。
  4. Freestyle project(フリースタイル・プロジェクトのビルド)を選択します。
  5. OK をクリックします。

これでプロジェクトの構成ページに移動します。

  1. 下にスクロールして Source Code Management(ソースコード管理)セクションを表示します。
  2. Git オプションを選択します。このオプションが表示されない場合は、前のステップで Git プラグインが正しくインストールされているか確認してください。
  3. Repository URL(リポジトリ URL)フィールドに、この実験用に準備されたローカルリポジトリの URL を入力します。
git://localhost/git-playground.git
  1. Branch Specifier(ブランチ指定)はデフォルトの */master のままにします。これは Jenkins に対し、master ブランチを使用するように指示するものです。
  2. ページ下部の Save(保存)ボタンをクリックします。

Git SCM の構成

これで、ローカルの Git リポジトリにリンクされた Jenkins ジョブの作成が完了しました。次のステップでは、チェックアウトしたコードに対してジョブが何を行うかを定義します。

ビルドステップの追加と手動ビルドの実行

Jenkins がコードの取得場所を把握できたので、次にそのコードに対して何を行うかを指示する必要があります。シェルコマンドを含むビルドステップを追加し、手動でビルドを実行してテストします。

  1. git-integration-project のプロジェクトページで、左側のサイドバーにある Configure(設定)をクリックします。
  2. 下にスクロールして Build Steps(ビルド・ステップ)セクションを表示します。
  3. Add build step(ビルド手順の追加)ドロップダウンをクリックし、Execute shell(シェルの実行)を選択します。
  4. Command(コマンド)テキストエリアに、以下のビルドコマンドを入力します。
echo "Building from the Git repository"
./build.sh

ジョブが実行されると、Jenkins はまず Git リポジトリをワークスペースにクローンし、そのワークスペース内でこれらのコマンドを実行します。build.sh スクリプトはリポジトリに含まれているため、正常に実行されれば、Jenkins がシェルステップを実行する前にコードを正しくチェックアウトしたことが証明されます。

  1. Save(保存)をクリックします。
  2. プロジェクトページに戻ります。左側のサイドバーにある Build Now(ビルド実行)をクリックしてビルドを開始します。

Build History(ビルド履歴)パネルに新しいビルドが表示されます。完了するまで待ちます(ステータスアイコンが青色になれば成功です)。

  1. ビルド番号(例:#1)をクリックします。
  2. ビルドメニューから Console Output(コンソール出力)をクリックします。

Git ビルドの成功

Jenkins がリポジトリをクローンし、コマンドが正常に実行されたことを確認する出力が表示されるはずです。

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/git-integration-project
...
[git-integration-project] $ /bin/sh -xe /tmp/jenkins123.sh
+ echo Building from the Git repository
Building from the Git repository
+ ./build.sh
Repository build script running
Workspace: /var/jenkins_home/workspace/git-integration-project
README.md
build.sh
Finished: SUCCESS

SCM ポーリングによる自動ビルドの有効化

手動でのビルド実行はテストには便利ですが、CI の真の力は自動化にあります。このステップでは、Git リポジトリに変更がないかポーリング(定期確認)するように Jenkins を構成します。

  1. git-integration-project の構成ページに戻ります(プロジェクトページ > Configure)。
  2. 下にスクロールして Build Triggers(ビルド・トリガー)セクションを表示します。
  3. Poll SCM(SCM をポーリング)の横にあるチェックボックスをオンにします。
  4. Schedule(スケジュール)テキストボックスが表示されます。これは cron 構文を使用して、Jenkins がリポジトリの変更をどの程度の頻度で確認するかを定義します。1 分ごとにポーリングするには、以下のように入力します。
* * * * *
  1. Save(保存)をクリックします。

スケジュールがジョブ構成に保存されました。Jenkins は構成されたリポジトリを 1 分ごとに確認し、新しいコミットを検出すると新しいビルドを開始します。

  1. Jenkins UI に戻り、git-integration-project ページに移動します。
  2. 左側のサイドバーに Git Polling Log(Git ポーリングログ)という新しいオプションが表示されます。これをクリックします。
  3. このページには、Jenkins が少なくとも 1 回のポーリングサイクルを実行した後のポーリングアクティビティが表示されます。最初のログが表示されるまで最大 1 分かかる場合があります。以下のようなエントリが表示されるはずです。
Started on ...
Using strategy: Default
[poll] Last Built Revision: Revision ...
The recommended git tool is: NONE
No credentials specified
 > git --version ## timeout=10
 > git ls-remote -h -- git://localhost/git-playground.git ## timeout=10
...
No changes

SCM ポーリングの構成

これは、Jenkins がリポジトリを自動的にポーリングするように構成されていることを示しています。実際のプロジェクトでは、リポジトリは通常 Git サーバー上でホストされ、新しいコミットが発生した際に Jenkins がビルドを行うようになります。

まとめ

この実験では、CI パイプラインにおいて最も重要な統合の一つである「Jenkins と Git ソース管理リポジトリの接続」について実践的な経験を積みました。

以下の作業を正常に完了しました。

  • Jenkins の Git 統合機能を有効にするために不可欠な Git プラグイン が利用可能であることを確認した。
  • フリースタイルプロジェクト を作成し、Git リポジトリからコードをチェックアウトするように構成した。
  • チェックアウトしたコードからシェルスクリプトを実行する ビルドステップ を定義した。
  • 手動ビルド を実行してセットアップを確認した。
  • Poll SCM を使用して自動ビルドトリガーを設定し、Jenkins が新しいコミットを自動的に検出してビルドできるようにした。

これらのスキルは開発ワークフローを自動化するための基礎であり、Jenkins を使用して堅牢で効率的な CI/CD パイプラインを構築するための第一歩となります。