こんばんは、ファルコンMです。
さくらVPS Ubuntu でgitとredmine の連携をさせた時の忘備録。
開発環境
- さくらVPS 1Gプラン
- Ubuntu 16.04
- ruby 2.3.1p112 ( Redmine をインストールしたら変わった? )
- Redmine 3.4
やりたいこと
- Redmine からgit リポジトリを参照
- Redmine チケットとの連携
- git のクローン、プッシュ時は、Redmine と同じログインID を入力させる。
redmine からgit リポジトリを参照
参考URL
リポジトリの作成
連携させるためのリポジトリを作成する。
$ cd /var/www/html/git $ sudo mkdir test.git $ cd test.git $ sudo git init --bare $ sudo git update-server-info $ cd ../ $ sudo chown -R www-data:www-data test.git
Redmineプロジェクトと連携
任意のプロジェクトで「設定」を選択して「リポジトリ」タブを選ぶ。
新しいリポジトリを選択し次の値を入力する。
- バージョン管理システム : Git
- メインリポジトリ : チェックON
- 識別子 : test ( 作成したリポジトリの拡張子の前 )
- リポジトリのパス : /var/www/html/git/test.git
- パスのエンコーディング : ブランク
- ファイルとディレクトリの最新コミットを表示する : ON
その後、作成を押す。
Redmine チケットとの連携
push 後、即座にチケットとリポジトリを紐づける
「管理」→「設定」のリポジトリタブを選択し、キーの作成を行い、APIキーを控えておく。
gitのリポジトリのpost-receive フックを作成する。
$ cd /var/www/html/git/test.git/hooks $ sudo vi post-receive
post-receive に以下を記述する。
#!/bin/sh wget http://localhost/redmine/sys/fetch_changesets?key=作成したAPIキー
作成後、権限の変更をする。
$ sudo chown www-data:www-data post-receive $ sudo chmod 755 post-receive
コミットメッセージにチケット番号のないものは、pushできない設定
参考サイト
$ cd ~ $ sudo git clone https://github.com/bleis-tift/Git-Hooks/ $ sudo cp Git-Hooks/update /var/www/html/git/test.git
Redmine ユーザーとgit の連携
git push 時、Redmine ユーザーで認証する
必要なライブラリのインストール
$ sudo apt-get install libapahce2-mod-auth-mysql libdigest-sha-perl libapache-dbi-perl libdbd-mysql-perl<br data-mce-bogus="1">
Redmine.pm の関連付けを行う。
$ mdkir -p /etc/perl/Apache/Authn $ ln -s /var/www/redmine/extra/svn/Redmine.pm /etc/perl/Apache/Authn/Redmine.pm
git のpush 時、Redmine のアカウントでBasic 認証する設定をする。Apache の設定ファイル /etc/apache2/sites-available/default-ssl.conf を編集する。
<IfModule mod_ssl.c> <VirtualHost _default_:443> ( 略 ) ### 追加 PerlLoadModule Apache::Authn::Redmine SetEnv GIT_PROJECT_ROOT /path/to/git/repos/ SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ <LocationMatch /git/> PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName Git AuthUserFile /dev/null Require valid-user RedmineDSN "DBI:mysql:database=redmine_db;host=192.168.1.xx" RedmineDbUser "( redmine データベースのユーザー名 )" RedmineDbPass "( redmine データベースのパスワード )" RedmineGitSmartHttp yes </LocationMatch> (略)
モジュールの有効化と再起動
$ sudo a2enmod auth_mysql $ sudo service apache2 restart
上手くいっていれば、clone またはpush などのときに認証画面が表示される。Redmineのユーザーで認証できればオーケー。
なお、git のユーザー名とRedmine のユーザー名を一致させておく必要がある。これをしておけば、Redmine のgit のpush の履歴とRedmineのユーザーの連携ができる。
クローンするときは、https://( ホスト名 )/git/test.git にアクセスする。
コメントを残す