RedmineとGitHubの連携手順
本記事では、RedmineとGitHubを連携する手順について解説します。
目次
RedmineとGitHubの連携の流れ
本記事では、オープンソースの「Redmine GitHub plugin」を利用して連携を行います。プラグインの詳細は以下のページをご覧ください。
GitHub - agileware-jp/redmine_github: Redmine plugin for connecting a local Redmine installation to a remote Github repository
Redmine plugin for connecting a local Redmine installation to a remote Github repository - agileware-jp/redmine_github
連携の流れは以下の通りです。
- プラグインのインストール
- GitHubのアクセストークンの発行
- Redmine上での連携設定
- 最新のコミット情報を取得するためのWebhookの作成
順番に説明していきます。
※本記事では、Redmine5.1.2、Redmine GitHub plugin 0.1.1で連携を行った手順を記載しています。
プラグインのインストール
Redmineサーバーにログインし、以下のコマンドを実行します。
# pluginsディレクトリに移動
cd [Redmineインストールディレクトリ]/plugins
# プラグインをダウンロード
git clone https://github.com/agileware-jp/redmine_github.git
# Redmineインストールディレクトリに移動
cd [Redmineインストールディレクトリ]
# 必要なライブラリをインストール
bundle install
# プラグインのマイグレーション
RAILS_ENV=production bundle exec rake redmine:plugins:migrate
Redmineを再起動して、下の図のように「管理」>「プラグイン」に「Redmine GitHub plugin」が表示されることを確認します。
GitHubのアクセストークンの発行
GitHubの右上に表示されているユーザーのアイコンをクリックし、「Setting」を選択します。
サイドバーの一番下に表示される「Developer settings」をクリックします。
サイドバーに表示されている「Token(classic)」をクリックします。
「Generate new token」をクリックし、「Generate new token(classic)」を選択します。
「Note」に適切なアクセストークンの名前を入力し、「Expiration」で任意の有効期限を選択します。「Select scopes」で「repo」にチェックを入れます。下までスクロールして、「Generate token」をクリックします。
指定した期限が切れた場合は再度トークンを発行する必要があります。期限を「No expiration」とした場合は無期限となりますが、セキュリティリスクを考慮してご利用ください。
発行されたトークンをコピーします。注意書きにある通り、発行したトークンはこの画面でしか確認できないため、必ずコピーしてメモしておきます。
Redmine上での連携設定
「管理」>「設定」>「リポジトリ」より、「使用するバージョン管理システム」の「GitHub」にチェックを入れて保存します。
GitHubと連携したいプロジェクトの「設定」>「リポジトリ」より、「新しいリポジトリ」をクリックします。
各項目を以下の通り入力し、「作成」をクリックします。
項目 | 入力内容 |
バージョン管理システム | 「GitHub」を選択します。 |
メインリポジトリ | 1つのプロジェクトで複数のリポジトリと連携している場合、チェックを入れたリポジトリが最初にリポジトリ画面に表示されます。 |
識別子 | 任意の文字列を入力します。 |
URL | 連携したいリポジトリのURLを入力します。 ※リポジトリが空の状態の場合、連携設定を行っても「404 リポジトリに、エントリ/リビジョンが存在しません。」と表示されてしまいます。すでにコミット情報があるリポジトリのURLを指定してください。 |
アクセストークン | コピーしておいたGitHubのアクセストークンを貼り付けます。 |
Webhook Secret | 任意の文字列を入力します。 |
パスのエンコーディング | 任意のものを選択します。通常はデフォルトの「UTF-8」を選択します。 |
チェックを入れると、リポジトリ 画面内のファイルの一覧で 「リビジョン」、「経過時間」、「作成者」、「コメント」が表示されます。 |
下の図のように表示されれば連携完了です。
GitHubの連携したリポジトリの「Setting」>「Webhooks」にWebhookが作成されているのがわかります。
プロジェクトの「リポジトリ」をクリックすると、下の図のように連携したリポジトリの情報が表示されます。
連携してどんなことができるのかは、以下の記事で詳しく紹介していますので、ご参照ください。
最新のコミット情報を取得するためのWebhookの作成
ここまでの手順で、RedmineとGitHubとの連携ができるようになりました。さらに使いやすくするために、webhookの設定を行い、GitHubにプッシュが行われた際に、自動的にRedmineが最新のリポジトリの情報を取得できるようにします。
webhookの設定を行わない場合、ローカルリポジトリでRedmineのチケットを紐づけてコミット、GitHubにプッシュした後、Redmineの紐づけたチケット画面を開くだけでは、「関係しているリビジョン」が表示されません。GitHubにプッシュを行った後に、手動でRedmineのプロジェクトの「リポジトリ」を開いて最新のコミット情報を取得する必要があります。
「リポジトリ」画面を開かなくてもGitHubにプッシュしただけで最新のコミット情報を取得するためには、専用のWebhookの作成が必要です。手順を説明します。
Redmineの「管理」>「設定」>「リポジトリ」を開き、「リポジトリ管理用のWebサービスを有効にする」にチェックを入れます。「キーの作成」をクリックし、作成された「APIキー」をメモしておき、保存します。
GitHubの連携したリポジトリの「Setting」>「Webhooks」より、「Add webhook」をクリックします。
「Payload URL」と「Content type」を以下のように入力し、「Add webhook」をクリックします。
項目 | 入力内容 |
Payload URL | 【RedmineのURL】/sys/fetch_changesets?key=【メモしておいたAPIキー】&id=【連携しているプロジェクトの識別子】 ※プロジェクトの識別子は該当のプロジェクトの「設定」タブ>「プロジェクト」タブより確認できます。 |
Content type | 「application/json」を選択します。 |
ローカルリポジトリでチケットを紐づけてコミットしGitHubにプッシュした後、「リポジトリ」画面を開かなくてもチケットを開くだけで「関係しているリビジョン」が表示されることを確認します。
まとめ
オープンソースの「Redmine GitHub plugin」を利用してRedmineとGitHubを連携する手順を解説しました。簡単に連携ができますので是非お試しください。
テクマトリックスでは、Redmineのクラウドサービスを提供しています。「GitHub連携オプション」をご契約いただくと、今回紹介した手順でRedmineとGitHubの連携ができます。クラウドサービスのため、面倒なメンテナンスの手間やコストを省くことができます。ぜひ導入をご検討ください。