【入門編】GitHubとJenkinsを連携させて「プッシュ即デプロイ」を実現するWebhook活用術 – バージョン管理・CI/CD活用バイブル

こんにちは!開発現場の自動化を進める中で、「コードを書いたら、一瞬でサーバーに反映されてほしい……」と思ったことはありませんか?

毎回のテスト実行や、手動でのサーバーへのアップロード作業。これらはエンジニアの集中力を奪い、時には「あ、デプロイし忘れた!」というヒューマンエラーを引き起こします。

今回は、世界中の開発現場で愛用されているCI/CDツール「Jenkins」と、ソースコード管理の絶対王者「GitHub」を連携させ、「コードをプッシュした瞬間に、自動でテストとデプロイが走る(プッシュ即デプロイ)」仕組みの作り方を解説します。

これをマスターすれば、あなたの開発体験は劇的に変わり、面倒な作業から解放されますよ。一緒に一歩ずつ進めていきましょう!

—

1. そもそも「Jenkins」と「Webhook」ってなに?

まずは、今回主役となるツールたちの役割を、直感的に理解していきましょう。

  • Jenkins(ジェンキンス):

「自動化の執事」のような存在です。あなたが寝ている間も、コードが書き換えられたらすぐに起き出して、「テスト、動かしますね!」「問題ないので、サーバーにデプロイしておきました!」と文句一つ言わずに働いてくれます。

  • Webhook(ウェブフック):

「イベント通知の伝書鳩」です。GitHub上で「コードがプッシュされたよ!」という大きな出来事(イベント)が起きたとき、GitHubがJenkinsのURLに向かって「おい、仕事の時間だぞ!」と自動で通知を送る仕組みのことです。

この2つを組み合わせることで、「人が何もしなくても、GitHubのプッシュをトリガーにJenkinsが全自動で動き出すパイプライン」が完成します。

—

2. 全体像:プッシュ即デプロイの裏側の流れ

設定に入る前に、今回構築する仕組みの「流れ」を頭にイメージしておきましょう。

[開発者]
│ (1. git push)
▼
[GitHub]
│ (2. WebhookでJenkinsへ通知)
▼
[Jenkins]
│ (3. 自動でリポジトリを取得)
│ (4. 自動テストを実行)
│ (5. 本番サーバーへデプロイ)
▼
[完了!]

非常にシンプルですが、これが自動化の第一歩であり、最も強力な基本形です。

—

3. Jenkins側の準備:まずは「挨拶(HelloWorld)」から

まずはJenkins側で、GitHubからの通知を受け取るための「受け皿(ジョブ)」を作ります。

ステップ1: ジョブの新規作成

1. Jenkinsの管理画面にログインします。
2. 左メニューの「新規ジョブ作成」をクリック。
3. アイテム名(例:`my-first-deploy-job`)を入力し、「フリースタイル・プロジェクトのビルド」を選択して「OK」をクリックします。

ステップ2: GitHub連携の有効化

ジョブの設定画面が開いたら、以下の設定を行います。

1. 「General」セクション:

  • 「GitHub プロジェクト」にチェックを入れ、「プロジェクト URL」にあなたのGitHubリポジトリのURLを入力します(例: `https://github.com/your-username/your-repo/`)。

2. 「ビルド・トリガー」セクション:

  • 「GitHub hook trigger for GITScm polling」にチェックを入れます。

(※これが、GitHubからのWebhookを受け取るための魔法のスイッチです)
3. 「ビルの手順」セクション(最初のHelloWorld):

  • 「ビルド手順の追加」から「シェルの実行」を選択し、以下のスクリプトを入力します。

Jenkinsが正しくコードを受け取って動いているか確認するスクリプト
echo “==========================================”
echo ” 🚀 GitHubからプッシュを検知しました!”
echo ” 自動テストとデプロイを開始します…”
echo “==========================================”

現在の日時と、動いている環境の確認
date
whoami

4. 画面一番下の「保存」をクリックします。

これで、Jenkins側の準備は完了です!

—

4. GitHub側の設定:伝書鳩(Webhook)を飛ばす

次は、GitHub側からJenkinsに対して「コードをプッシュしたよ」と知らせる設定を行います。

ステップ1: Webhookの設定画面を開く

1. ブラウザでGitHubの対象リポジトリを開きます。
2. 上部メニューの「Settings(設定)」をクリック。
3. 左サイドバーの「Webhooks」をクリックし、右上の「Add webhook」をクリックします(パスワードを求められたら入力してください)。

ステップ2: Webhookのパラメータを入力する

ここでJenkinsのURLと連携のルールを指定します。

  • Payload URL:

JenkinsのURLの末尾に `/github-webhook/` を追加したものを入力します。
(例: `http://あなたのJenkinsのドメインまたはIP/github-webhook/`)
> ⚠️注意: Jenkinsがローカル環境(localhost)にある場合、GitHubから直接アクセスできません。テストには `ngrok` などのトンネリングツールを使うか、クラウド上のJenkinsを利用してください。

  • Content type:

`application/json` を選択します。

  • Which events would you like to trigger this webhook?:

「Just the push event(プッシュイベントのみ)」を選択します。

  • Active:

チェックが入っていることを確認します。

入力できたら、一番下の「Add webhook」をクリック!

これで、GitHubとJenkinsが一本のパイプで結ばれました。

—

5. 動作確認:いよいよ「プッシュ即デプロイ」を体感する!

さあ、すべての準備が整いました。実際にコードをプッシュして、自動化の魔法を体験してみましょう。

1. 手元のローカルPCで、先ほど連携したGitHubリポジトリのプロジェクトを開きます。
2. 適当なファイルを少しだけ編集するか、新しくREADMEなどに文字を追加します。
3. いつも通り、Gitでコミットしてプッシュします!

git add .
git commit -m “feat: Webhookのテストと自動化の確認”
git origin main

プッシュが完了したら、すぐにブラウザでJenkinsの管理画面を開いてみてください。

どうでしょう?
あなたが `git push` キーを押した直後であるにもかかわらず、Jenkinsの該当ジョブが「ビルド中(青いアイコンやプログレスバー)」になっていませんか?

ジョブの「ビルド履歴」から「コンソール出力」を覗いてみてください。先ほど設定したメッセージが表示されているはずです。

Started by GitHub push by your-username
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/my-first-deploy-job
[my-first-deploy-job] $ /bin/sh -xe /tmp/jenkins…
+ echo ‘==========================================’
🚀 GitHubからプッシュを検知しました!
自動テストとデプロイを開始します…
+ echo ‘==========================================’
+ date
Sun Oct 21 12:00:00 UTC 2023
+ whoami
jenkins
Finished: SUCCESS

大成功です! これが「プッシュ即デプロイ」の基本形です。

—

6. 先輩エンジニアからのワンポイント・アドバイス

ここまでの基礎ができたら、次は「テストの自動実行」や「本番サーバーへの転送(scpやrsyncなど)」をシェルスクリプトに組み込んでいくだけです。

  • 秘密情報の管理:

サーバーのパスワードやAPIキーをシェルに直接書かず、Jenkinsの「認証情報(Credentials)」機能を使って安全に管理しましょう。

  • 通知の連携:

デプロイが成功したときや失敗したときに、SlackやDiscordに通知が飛ぶようにすると、チームの開発効率がさらに跳ね上がります。

面倒な定型作業はすべてJenkinsに任せて、私たちエンジニアは「新しい価値を生み出すコードを書くこと」に集中しましょう。
毎日の開発が劇的に楽になる感覚を、ぜひ楽しんでくださいね!

タイトルとURLをコピーしました