GitHubのコミットをチケットと自動連携!「GitHub連携機能」の使い方

プラグイン

My Redmineの「GitHub連携機能」の使い方を紹介します。
(本機能は、My Redmine Gen.2でご利用になれます)

目次

GitHub連携機能とは?

GitHub連携機能は、GitHub の Webhook 機能と Redmine のリポジトリ機能を利用して、GitHub リポジトリのコミット情報とチケットを連携できるようにする機能です。

コミットとチケットの関連付けや、コミットメッセージによるステータスの更新などの連携機能を利用できるようになります。

関係しているリビジョンタブ
関係しているリビジョンタブ
履歴タブ
履歴タブ

仕組み

本機能は、GitHub リポジトリで push されたコミット情報を GitHub の Webhook から受信することで連携します。

GitHub連携の仕組み

Redmine が受信する情報は、GitHub の Webhook から取得できるコミット情報に限られます。

この仕組み上、次のような特徴があります。

  • コミット情報以外のリポジトリ情報(ファイルの内容、ブランチ情報、統計情報など)を直接 Redmine 上で閲覧することはできない
  • 連携前のコミット情報と連携することはできない
  • IPアドレスフィルターを利用している場合は、GitHub の IPアドレスを許可リストに追加する必要がある。詳細は IPアドレスフィルターと併用する を参照

できること

コミットメッセージによるチケットとコミットの連携ができる

Redmine が標準で備えているコミットメッセージによる連携機能を利用できます。

  • チケットとコミットを関連付ける : refs #123 のような参照用キーワードを使うと、チケットとコミットを関連付けられます。これにより、チケットに関連するソースコードの変更を追跡できます。
  • チケットのステータスや進捗率を更新する : 修正用キーワードを使うと、チケットのステータスや進捗率を更新できます。
  • チケットに作業時間を記録する : refs #123 @2.5h のように、チケット番号とあわせて作業時間を書くと、設定に応じてチケットに作業時間を記録できます。

利用できるキーワード、チケット更新時の動作、作業時間を記録するかどうかは Redmine の設定によります。設定は、Redmine の 「管理」→「設定」→「リポジトリ」画面で行えます。

また、チケットの更新と作業時間の記録を意図したユーザーとして正しく行うには、コミットしたユーザーと Redmine のユーザーが対応付けられている必要があります。 詳細は コミットしたユーザーと Redmine のユーザーを対応付ける を参照してください。

GitHub のコミット詳細画面を開くことができる

チケットの「関連しているリビジョン」やリビジョン詳細画面に、GitHub のコミット詳細画面へのリンクが表示されます。これらのリンクから、GitHub のコミット詳細画面を直接開くことができます。

GitHubへの直接リンク

できないこと

次の機能は利用できません。

  • Redmine 上でのリポジトリ情報の閲覧(ファイルの内容、ファイルごとの履歴や詳細の確認など)
  • Redmine 上でのコミットの詳細・差分の確認
  • リポジトリの統計情報の確認

制約事項

本機能の仕組み上、利用するうえでいくつかの制約があります。

連携前のコミット情報と連携することはできません

GitHub の Webhook から受信したコミット情報を取り込んで連携するため、連携を開始する前に push されたコミット情報と連携することはできません。

受信に失敗したコミットは保存期間内(3日間)に手動で再配信する必要があります

さまざまな理由により、GitHub の Webhook からコミット情報を正常に受信できない場合があります。

Webhook の配信状況の確認、および失敗した Webhook の再配信は、GitHub リポジトリの Webhook 設定画面で行うことができます。ただし、GitHub の配信履歴は3日間保存されるため、その期間内に再配信する必要があります。

詳細は 正常に受信できなかったコミット情報をGitHubのWebhookから再配信する を確認してください。

IPアドレスフィルターを利用している場合は追加の許可設定が必要です

IPアドレスフィルターを利用している場合は、GitHub の Webhook からのアクセスを許可する必要があります。

詳細は IPアドレスフィルターと併用する を参照してください。

GitHub Enterprise Server では利用できません

本機能は、現時点で github.com のリポジトリのみサポートしています。GitHub Enterprise Server には対応していません。

連携を始める

1. IPアドレスフィルターを利用している場合は GitHub の IP アドレスを許可する

IPアドレスフィルターを利用していない場合は、この手順は不要です。

IPアドレスフィルターを利用している場合は、IPアドレスフィルターと併用する の手順に従ってGitHubのIPアドレスを許可してください。

2. GitHub Webhook を有効にする

管理画面のリポジトリ設定で、バージョン管理システムの GitHub Webhook を有効にします。

バージョン管理システムの GitHub Webhook を有効にする

3. プロジェクトでリポジトリモジュールを有効にする

連携したいプロジェクトの設定画面で、リポジトリモジュールを有効にします。

リポジトリモジュールを有効にする

4. GitHub Webhook のリポジトリを登録する

プロジェクトのリポジトリ設定から新しいリポジトリを追加し、バージョン管理システムに GitHub Webhook を選択します。

新しいリポジトリの追加

リポジトリURLには、連携する GitHub リポジトリの URL を入力します。

https://github.com/owner/repository

リポジトリを保存すると、GitHub リポジトリの Webhook に設定する Webhook URL と Webhook Secret が生成されます。

生成されたURLとSecret

これらの値を控えるか画面を閉じずに次の手順に進みます。

5. GitHub リポジトリの Webhook を作成する

GitHub リポジトリの Webhook 設定画面で、前の手順で生成された Webhook URL と Webhook Secret を設定します。

  • Payload URL: Webhook URL を設定
  • Content type: application/json を選択
  • Secret: Webhook Secret を設定
  • SSL Verification: Enable SSL verification を選択(デフォルトのまま)
  • Events: Just the push event を選択(デフォルトのまま)
  • Active: チェック
GitHub Webhook設定画面

GitHub で Webhook を作成する方法は、GitHub のドキュメント も参照してください。

6. 疎通を確認する

作成後、GitHub リポジトリの Webhook 画面で Webhook の疎通を確認します。

緑のチェックマークが表示された場合は、設定は正常です。疎通結果が表示されるまで時間がかかる場合があります。その場合は、何度か画面をリロードしてください。

GitHub リポジトリの Webhook 画面で緑のチェックマークが表示された場合は、設定は正常

警告マークが表示される場合は、設定の確認と修正が必要です。

警告マークが表示される場合は、設定の確認と修正が必要

正常に受信できなかったコミット情報をGitHubのWebhookから再配信する の対応手順に従って、設定を修正してください。

修正後は、次の手順で再度疎通を確認してください。

  • 1.Webhook の編集画面を開いて、Recent Deliveries タブを開く
  • 2.ping の配信履歴を開き、Redeliver をクリックして再度 Redmine に疎通確認用の ping を配信します
Redeliver をクリックして再度 Redmine に疎通確認用の ping を配信
  • 3.ping が成功することを確認します。失敗した場合は、再度対応手順を実施します
ping が成功することを確認

受信したコミットを確認する

GitHub の Webhook から受信したすべてのコミットは、受信コミット一覧画面で確認できます。

GitHub の Webhook から受信したすべてのコミットは、受信コミット一覧画面で確認できる

任意のコミットをチケットに関連付ける場合も、この受信コミット一覧画面でコミットを検索して、チケットとの関連を追加できます。

コミットを行ったユーザーと Redmine のユーザーを対応付ける

コミットしたユーザーと Redmine のユーザーは、ログイン名またはメールアドレスが一致する場合、自動的に対応付けられます。一致しない場合は、対応付けを手動で設定する必要があります。

この対応付けは、コミットメッセージによるチケットの更新や作業時間の記録を、コミットしたユーザーの操作として正しく扱うために必要です。

  • コミットメッセージによるチケットの更新 : 対応付けが設定されていない場合でも利用できますが、チケットの更新は匿名ユーザーの操作として記録されます。
  • コミットメッセージによる作業時間の記録 : 対応付けが設定されていない場合、作業時間の記録は利用できません。

対応付けの状態確認と手動での設定は、プロジェクトのリポジトリ設定にある「ユーザー」から行えます。

コミットを行ったユーザーと Redmine のユーザーを対応付ける

Webhook URL と Webhook Secret を再生成する

リポジトリ登録時に自動的に生成される Webhook URL と Webhook Secret は、Redmine のリポジトリ編集画面から再生成できます。

Webhook URL と Webhook Secret を再生成する

再生成後は、GitHub リポジトリの Webhook 設定の Payload URL と Secret を新しい値に更新する必要があります。設定を更新するまで Webhook を受信できないことに注意してください。

IPアドレスフィルターと併用する

IP アドレスフィルターを利用している場合は、GitHubがwebhook配信に使用するIPアドレスを許可リストに追加する必要があります。

GitHub が Webhook 配信に使用する IPアドレスは、GitHub が公開しているメタデータ用 REST APIエンドポイント GET /meta を使用して取得できます。実行結果に含まれる hooks の値のうち、IPv4 アドレスをIPアドレスフィルターの許可リストに追加してください。

下記は GitHub のドキュメントに記載されている macOS/Linux での実行例です。実行結果も一例であり、実際の値とは異なる場合があります。 設定時には、取得した最新の IP アドレスを設定してください。詳細は、GitHub のドキュメント を確認してください。

curl -L \ 
   -H "Accept: application/vnd.github+json" \ 
   -H "X-GitHub-Api-Version: 2026-03-10" \ 
   https://api.github.com/meta 
{ 
   ... 
   "hooks": [ 
     "192.30.252.0/22", 
     "185.199.108.0/22", 
     "140.82.112.0/20", 
     "143.55.64.0/20", 
     "2a0a:a440::/29", 
     "2606:50c0::/32" 
   ] 
   ... 
 } 

トラブルシューティング

正常に受信できなかったコミット情報をGitHubのWebhookから再配信する

GitHub の Webhook の配信状況の確認と再配信は、GitHub リポジトリの Webhook の Recent deliveries 画面で行うことができます。ただし、再配信できるのは、GitHub に保存される 過去3日分の配信のみです。詳細は GitHubのドキュメントを参照してください。

配信状況を確認し、失敗している配信がある場合は対応が必要です。

正常に受信できなかったコミット情報をGitHubのWebhookから再配信する

Response に表示されている数値(例: 400)を確認して、次のように対応します。対応後、Redeliver ボタンで再配信してください。

エラーコード 想定される原因 対応方法
400の場合 GitHub リポジトリの Webhook 設定の Content type が application/json になっていない可能性がある application/json に更新する
Redmine のリポジトリ設定の「リポジトリURL」が対象の GitHub リポジトリの URL と一致していない可能性がある 正しい GitHub リポジトリの URL に更新する
401の場合 GitHub リポジトリの Webhook 設定の Secret が間違っている可能性がある Webhook Secret を再生成して設定を更新する
403の場合 IPアドレスフィルターを利用している場合、GitHub からのアクセスが拒否された可能性がある IPアドレスフィルターと併用するの手順に従って GitHub の IPアドレスを許可する
404の場合 GitHub リポジトリの Webhook 設定の Payload URL が間違っている可能性がある Webhook URL を再生成して設定を更新する

上記以外の場合

これら以外の場合は、時間をおいて Redeliver から再配信を試してください。

また、配信一覧に該当する配信が存在しない場合は、GitHub の Webhook から配信自体が行われていません。GitHub リポジトリで対象コミットが push されているか、GitHub リポジトリの Webhook 設定で push イベントを配信する設定になっているかなど、GitHub の状態を確認してください。

無料で試してみる(最大2ヶ月無料) お申し込みから10分で使えます
My Redmine サービス紹介資料 サービス紹介・マニュアル・初心者向け資料
My Redmine サービス紹介セミナー
My Redmineのサービス内容・ご利用までの流れを動画で紹介します。ご質問はチャットで受け付けご回答します。
詳細はこちら
Redmineセミナー
Redmineに関するセミナーを開催しています。どなたでもご参加頂けます。過去に開催したセミナーも録画配信しています。
詳細はこちら
無料オンライン相談会
毎週開催。お客様に合った運用や設定を一緒に考えます。サービス紹介、ミニ相談、データ移行専用相談をご用意。
詳細はこちら