My Redmineの「GitHub連携機能」の使い方を紹介します。
(本機能は、My Redmine Gen.2でご利用になれます)
GitHub連携機能は、GitHub の Webhook 機能と Redmine のリポジトリ機能を利用して、GitHub リポジトリのコミット情報とチケットを連携できるようにする機能です。
コミットとチケットの関連付けや、コミットメッセージによるステータスの更新などの連携機能を利用できるようになります。
本機能は、GitHub リポジトリで push されたコミット情報を GitHub の Webhook から受信することで連携します。
Redmine が受信する情報は、GitHub の Webhook から取得できるコミット情報に限られます。
この仕組み上、次のような特徴があります。
Redmine が標準で備えているコミットメッセージによる連携機能を利用できます。
refs #123 のような参照用キーワードを使うと、チケットとコミットを関連付けられます。これにより、チケットに関連するソースコードの変更を追跡できます。refs #123 @2.5h のように、チケット番号とあわせて作業時間を書くと、設定に応じてチケットに作業時間を記録できます。利用できるキーワード、チケット更新時の動作、作業時間を記録するかどうかは Redmine の設定によります。設定は、Redmine の 「管理」→「設定」→「リポジトリ」画面で行えます。
また、チケットの更新と作業時間の記録を意図したユーザーとして正しく行うには、コミットしたユーザーと Redmine のユーザーが対応付けられている必要があります。 詳細は コミットしたユーザーと Redmine のユーザーを対応付ける を参照してください。
チケットの「関連しているリビジョン」やリビジョン詳細画面に、GitHub のコミット詳細画面へのリンクが表示されます。これらのリンクから、GitHub のコミット詳細画面を直接開くことができます。
次の機能は利用できません。
本機能の仕組み上、利用するうえでいくつかの制約があります。
GitHub の Webhook から受信したコミット情報を取り込んで連携するため、連携を開始する前に push されたコミット情報と連携することはできません。
さまざまな理由により、GitHub の Webhook からコミット情報を正常に受信できない場合があります。
Webhook の配信状況の確認、および失敗した Webhook の再配信は、GitHub リポジトリの Webhook 設定画面で行うことができます。ただし、GitHub の配信履歴は3日間保存されるため、その期間内に再配信する必要があります。
詳細は 正常に受信できなかったコミット情報をGitHubのWebhookから再配信する を確認してください。
IPアドレスフィルターを利用している場合は、GitHub の Webhook からのアクセスを許可する必要があります。
詳細は IPアドレスフィルターと併用する を参照してください。
本機能は、現時点で github.com のリポジトリのみサポートしています。GitHub Enterprise Server には対応していません。
IPアドレスフィルターを利用していない場合は、この手順は不要です。
IPアドレスフィルターを利用している場合は、IPアドレスフィルターと併用する の手順に従ってGitHubのIPアドレスを許可してください。
管理画面のリポジトリ設定で、バージョン管理システムの GitHub Webhook を有効にします。
連携したいプロジェクトの設定画面で、リポジトリモジュールを有効にします。
プロジェクトのリポジトリ設定から新しいリポジトリを追加し、バージョン管理システムに GitHub Webhook を選択します。
リポジトリURLには、連携する GitHub リポジトリの URL を入力します。
https://github.com/owner/repository
リポジトリを保存すると、GitHub リポジトリの Webhook に設定する Webhook URL と Webhook Secret が生成されます。
これらの値を控えるか画面を閉じずに次の手順に進みます。
GitHub リポジトリの Webhook 設定画面で、前の手順で生成された Webhook URL と Webhook Secret を設定します。
Webhook URL を設定application/json を選択Webhook Secret を設定Enable SSL verification を選択(デフォルトのまま)Just the push event を選択(デフォルトのまま)GitHub で Webhook を作成する方法は、GitHub のドキュメント も参照してください。
作成後、GitHub リポジトリの Webhook 画面で Webhook の疎通を確認します。
緑のチェックマークが表示された場合は、設定は正常です。疎通結果が表示されるまで時間がかかる場合があります。その場合は、何度か画面をリロードしてください。
警告マークが表示される場合は、設定の確認と修正が必要です。
正常に受信できなかったコミット情報をGitHubのWebhookから再配信する の対応手順に従って、設定を修正してください。
修正後は、次の手順で再度疎通を確認してください。
GitHub の Webhook から受信したすべてのコミットは、受信コミット一覧画面で確認できます。
任意のコミットをチケットに関連付ける場合も、この受信コミット一覧画面でコミットを検索して、チケットとの関連を追加できます。
コミットしたユーザーと Redmine のユーザーは、ログイン名またはメールアドレスが一致する場合、自動的に対応付けられます。一致しない場合は、対応付けを手動で設定する必要があります。
この対応付けは、コミットメッセージによるチケットの更新や作業時間の記録を、コミットしたユーザーの操作として正しく扱うために必要です。
対応付けの状態確認と手動での設定は、プロジェクトのリポジトリ設定にある「ユーザー」から行えます。
リポジトリ登録時に自動的に生成される Webhook URL と Webhook Secret は、Redmine のリポジトリ編集画面から再生成できます。
再生成後は、GitHub リポジトリの Webhook 設定の Payload URL と Secret を新しい値に更新する必要があります。設定を更新するまで Webhook を受信できないことに注意してください。
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 の Recent deliveries 画面で行うことができます。ただし、再配信できるのは、GitHub に保存される 過去3日分の配信のみです。詳細は GitHubのドキュメントを参照してください。
配信状況を確認し、失敗している配信がある場合は対応が必要です。
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 の状態を確認してください。

