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

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

はじめに

この Git と Jenkins の統合に関する実験 (Lab) へようこそ。ソースコード管理 (SCM: Source Control Management) は、現代のソフトウェア開発の礎石です。継続的インテグレーション (CI: Continuous Integration) サーバーである Jenkins と、Git のような SCM システムを統合することは、ビルドおよびテストプロセスを自動化するための基本的なステップです。

この実験では、以下の方法を学習します。

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

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

Git プラグインの確認

JenkinsにはGit連携機能が標準で組み込まれています。Gitプラグインはデフォルトでインストールされており、JenkinsがGitリポジトリと連携できるようになっています。Gitプラグインが利用可能であることを確認しましょう。

  1. デスクトップインターフェースからFirefoxブラウザを開きます。ブラウザは自動的に http://localhost:8080 に開くため、手動でURLを入力する必要はありません。ログインは不要です。
  2. Jenkinsダッシュボードで、右上隅にある歯車アイコン(設定ボタン)をクリックします。
  3. 設定ページで、Plugins を見つけてクリックします。
  4. Installed plugins タブを選択します。
  5. 右側にある検索ボックスに Git と入力して、インストールされているプラグインをフィルタリングします。
  6. インストール済みプラグインの中に Git plugin が表示され、Git連携が利用可能であることが確認できるはずです。
Jenkins installed plugins page

Gitプラグインが利用可能であることを確認したので、次にGitを使用するプロジェクトを作成する手順に進むことができます。

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

Git プラグインがインストールされたので、Jenkins プロジェクトを作成し、Git リポジトリからソースコードを取得するように設定できます。

  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 フィールドに、用意されたローカル Git リポジトリへの絶対パスを入力します。
https://github.com/labex-labs/git-playground
  1. Branch Specifier はデフォルトの */master のままにします。これにより、Jenkins は master ブランチを使用するようになります。
  2. ページ下部にある Save ボタンをクリックします。
Source Code Management section in project configuration

これで、Git リポジトリにリンクされた Jenkins ジョブを正常に作成しました。次のステップでは、ジョブがコードに対して何を行うかを定義します。

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

Jenkins がコードの取得元を認識したので、そのコードで何を行うかを指示する必要があります。シェルコマンドを含むビルドステップを追加し、テストのためにビルドを手動で実行します。

  1. git-integration-project のプロジェクトページで、左側のサイドバーにある Configure をクリックします。
  2. Build Steps セクションまでスクロールします。
  3. Add build step ドロップダウンをクリックし、Execute shell を選択します。
  4. Command テキストエリアに、以下のビルドコマンドを入力します。
echo "Building the project..."
date
echo "Listing files in workspace:"
ls -la
echo "Build complete!"

ジョブが実行されると、Jenkins はまず Git リポジトリをワークスペースにクローンし、その後そのワークスペース内でこれらのコマンドを実行します。

  1. Save をクリックします。
  2. プロジェクトページに戻りました。ビルドを開始するには、左側のサイドバーにある Build Now をクリックします。

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

  1. ビルド番号(例:#1)をクリックします。
  2. ビルドのメニューから Console Output をクリックします。
Build History

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

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/git-integration-project
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/git-integration-project/.git ## timeout=10
...
[git-integration-project] $ /bin/sh -xe /tmp/jenkins123.sh
+ echo Building the project...
Building the project...
+ date
Mon Jan 1 12:01:00 UTC 2024
+ echo Listing files in workspace:
Listing files in workspace:
+ ls -la
total 24
drwxr-xr-x 3 jenkins jenkins 4096 Aug 21 10:33 .
drwxr-xr-x 3 jenkins jenkins 4096 Aug 21 10:33 ..
drwxr-xr-x 8 jenkins jenkins 4096 Aug 21 10:33 .git
-rw-r--r-- 1 jenkins jenkins   32 Aug 21 10:33 README.md
-rw-r--r-- 1 jenkins jenkins   15 Aug 21 10:33 file1.txt
-rw-r--r-- 1 jenkins jenkins   15 Aug 21 10:33 file2.txt
+ echo Build complete!
Build complete!
Finished: SUCCESS

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

手動でビルドを実行することはテストに役立ちますが、CI の真の力は自動化にあります。このステップでは、Git リポジトリに変更が検出されるたびに Jenkins が自動的にビルドを開始するように設定します。

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

リモートの GitHub リポジトリ(https://github.com/labex-labs/git-playground)を使用しているため、ポーリングトリガーをテストするために直接変更することはできません。しかし、SCM ポーリングがどのように機能するかを観察することができます。

  1. Jenkins UI に戻り、git-integration-project ページに移動します。
  2. 左側のサイドバーに Git Polling Log という新しいオプションが表示されます。それをクリックします。
  3. このページにはポーリングアクティビティが表示されます。以下のようなエントリが表示されるはずです。
Started on Aug 21, 2025, 10:36:00 AM
Using strategy: Default
[poll] Last Built Revision: Revision d22f46ba8c2d4e07d773c5126e9c803933eb5898 (refs/remotes/origin/master)
The recommended git tool is: NONE
No credentials specified
 > git --version ## timeout=10
 > git --version ## 'git version 2.30.2'
 > git ls-remote -h -- https://github.com/labex-labs/git-playground ## timeout=10
Found 3 remote heads on https://github.com/labex-labs/git-playground
[poll] Latest remote head revision on refs/heads/master is: d22f46ba8c2d4e07d773c5126e9c803933eb5898 - already built by 1
Done. Took 0.36 sec
No changes

これは、Jenkins がリモートリポジトリを 1 分ごとに正常にポーリングしていることを示しています。実際のシナリオでは、新しいコミットがリポジトリにプッシュされると、Jenkins は自動的に新しいビルドをトリガーします。

  1. 手動でビルドをトリガーするには、Build Now をクリックして、ポーリングシステムが手動ビルドとどのように統合されるかを確認することもできます。

まとめ

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

以下のことを正常に完了しました。

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

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