RedmineとGitLabの連携。PushでチケットのStatusを変更
RedmineとGitLabのプロジェクトを連携させたときの覚書。
環境: CentOS 6.6, Redmine 3.0.3, GitLab 7.10.4
目次
- RedmineのプロジェクトにGitのリポジトリを指定
- GitLabの「Redmine issue tracker」を有効
- GitLabにWeb hooksを設定してPushと同時にRedmineへ通知
- 「匿名ユーザー」になるのを調査
- 「redmine_github_hook」プラグインをインストール
- 原因はTortoiseGitの設定
1.RedmineのプロジェクトにGitのリポジトリを指定
GitLabは内部でBareリポジトリとして管理しているので、このパスを指定するだけ。
Redmine → (プロジェクト) → 設定 → リポジトリ → 新しいリポジトリ
リポジトリのパスは
/var/opt/gitlab/git-data/repositories/suganuma/hoge-web.git
のような感じ。
登録後は「リポジトリ」で履歴を参照できる。
2.GitLabの「Redmine issue tracker」を有効
公式Wikiを参考に。
GitLabにrootでログイン後、
Admin area → Service Templates → Redmine
Active: Check
Description: Redmine issue tracker
Project url: http://dev.hoge.jp/projects/[project_id]
Issues url: http://dev.hoge.jp/issues/:id
New issue url: http://dev.hoge.jp/projects/[project_id]/issues/new
あとは各プロジェクトのSettings → Services → Redmineで[project_id]を置き換える。
これでコミットログに「#123」とチケット番号を書くとGitLabからRedmineへ自動リンクが生成される。
3.GitLabにWeb hooksを設定してPushと同時にRedmineへ通知
GitLabにPushするとRedmineのチケットと自動連携する機能
まずはRedmineの管理画面で受け取る準備。
管理 → リポジトリ
下記のように設定。APIキーを生成しておく。
「参照用キーワード」はアスタリスク(*)を追加しておくと便利。
次はGitLabのプロジェクトの設定
Settings → Web Hooks
URLにRedmineの通知用URLを入力して「Add Web Hook」
- http://redmine.hoge.jp/sys/fetch_changesets?key=(API Key)
試しに「完了しました。fixed #884 @3h」とコミット&プッシュすると下記のように反映される。
なぜか「匿名ユーザー」。作業時間も反映されない。
→ TortoiseGitの設定だった。
さらにCustom Git Hooksを利用するとRubyスクリプトでいろいろ出来る。
4.「匿名ユーザー」になるのを調査
ログを見るとログイン処理が走っているように見える。
# less /opt/redmine/log/production.log
Processing by WelcomeController#index as */*
Settings cache cleared.
Current user: anonymous
Redirected to http://redmine.hoge.jp/login?back_url=http%3A%2F%2Fredmine.hoge.jp%2F
Filter chain halted as :check_if_login_required rendered or redirected
Completed 302 Found in 4ms (ActiveRecord: 0.5ms)
TimeEntry could not be created by changeset 408: ["ユーザー を入力してください。"]
Rendered text template (0.0ms)
「omniauth」プラグインを使ってGoogleアカウントでログイン出来るようにしているのが原因かもしれない
5.「redmine_github_hook」プラグインをインストール
GitHubと連携するプラグインがあるのでインストールして試す。
# cd /opt/redmine/plugins/
# git clone git://github.com/koppen/redmine_github_hook.git
Redmine再起動
# /etc/rc.d/init.d/redmine restart
GitLabのWeb hooksを変更 → Pushしてみても結果は同じ「匿名ユーザー」
6.原因はTortoiseGitの設定
再度ログを見るとコミットのauthorとして送信しているのがTortoiseGitに登録してある名前であることに気付いた。これを修正。
右クリック → TortoiseGit → Settings Git → Edit global .gitconfig
NameとEmailをGitLabに登録してある情報と合わせる。
これでPushしてみるとユーザーが正しく表示されて作業時間も反映された。
「redmine_github_hook」プラグインは削除して3の方法に戻した。
< Related Posts >