Redmine3.3とGitを連携する

Redmineのプラグイン
redmine_github_hook.git
を使って、GitとRedmineを連携してみました。

Redmineの配置場所を、
/var/lib/redmine
としますので、
それ以外の場合は、
/var/lib/redmine
の部分を書き換えて下さい

1,プラグインを組み込む

cd /var/lib/redmine/plugins
git clone https://github.com/koppen/redmine_github_hook.git

2,Git側で、レポジトリーを作成
GitHubまたは、Gitbucketで、対象のレポジトリを作成

3,サーバ側設定

cd /var/lib/redmine/repo

GitHubの場合

git clone --bare      https://github.com/<アカウント名>/<レポジトリ名>.git

Gitbucketの場合

git clone --bare      https://<アカウント名>@bitbucket.org/<アカウント名>/<レポジトリ名>.git

キーを登録しSSHで接続する場合は

git clone --bare git@github.com:<アカウント名>/<レポジトリ名>.git

で、可能です。

4,Remindeの再起動し、プラグインを組み込む

cd /var/lib/redmine//tmp
touch restart.txt

RedmineのWebでどこかの、画面をアクセスする(または、再表示)
(再起動しても、restart.txtは、消えない)

5,Redmineで、設定
プロジェクトの画面
設定>リポジトリ>新しいリポジトリ
バージョン管理システム:Git
識別子:わかりやすい文字を指定
リポジトリのパス:/var/lib/redmine/repo/<レポジトリ名>.git
パスのエンコーディング:UTF-8

識別子を設定により、
一つのプロジェクトで、識別子名による、切り替えができる

これにより、
Redmineから、
更新履歴、差分、コメントなどを、見ることがき、
更新内容と、Redmine内のチケットと連携(関係付ける)ことができます

6,Gitの最新の手動反映
Gitサーバ側のWebhookにより、
Gitサーバ側の更新時に、Redmineサーバの
更新内容を自動連携する方法がありますが、
以下により、手動反映ができました

cd /var/lib/redmine/repo
rm -rf <レポジトリ名>.git
git clone --bare      https://github.com/<アカウント名>/<レポジトリ名>.git
git clone --bare      https://<アカウント名>@bitbucket.org/<アカウント名>/<レポジトリ名>.git

7,プラウザからGitの最新の反映
毎回端末で、接続して、反映するのが大変なため、
自動更新を行う

更新方法としては
Cronで行う方法もあるが、
ほどんど更新していないのに、
Gitサーバに問い合わせに行くのは、申し訳ない。

本来,Gitサーバ側で
Service Hooks:WebHook
で、設定を行えばいいのだが、

Redmine側から取りに行く方法で行ってみた。

phpから、Shellを起動してみる

7,1 phpのインストール

phpがあるか確認

php --version

-bash: php: コマンドが見つかりません

ないので、phpのインストール

参考:
http://qiita.com/ozawan/items/caf6e7ddec7c6b31f01e

yum install --enablerepo=remi,remi-php56 php php-devel php-mbstring php-pdo php-gd

/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start

7.2 phpで、shellを起動

参考:
http://php.net/manual/ja/function.shell-exec.php

cat <<EOF > /var/lib/redmine/public/ls.php
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
EOF

xx.xx.xx/ls.php

で、表示を確認

7.3 phpで、gitを起動するプログラムを作成

repoの所有者を変更

chown -R apache:apache /var/lib/redmine/repo
cat <<EOF > /var/lib/redmine/public/git_change.php
<?php
shell_exec('rm -rf /var/lib/redmine/repo/<レポジトリ名>.git');
$output = shell_exec('git clone --bare      https://github.com/<アカウント名>/<レポジトリ名>.git');
shell_exec('mv /var/lib/redmine/public/<レポジトリ名>.git /var/lib/redmine/repo/<レポジトリ名>.git');

echo "<pre>$output</pre>";
?>
EOF

同期したいときに
ブラウザから

xx.xx.xx/git_change.php

で、最新情報を読み取る

8 ファイル、フォルダの日本語対応
Redmineサーバ側のGitのバージョンを上げる
CentOS 8.7
の場合、Gitのバージョンは 1.7.1
最新にバージョンを上げる

参考

バージョンを確認する

git --version
git version 1.7.1

パッケージを読み込む

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

ソースを読み込み、インストールする

cd
wget https://www.kernel.org/pub/software/scm/git/git-2.4.0.tar.gz
tar zxvf git-2.4.0.tar.gz

cd git-2.4.0
make prefix=/usr/local all
make prefix=/usr/local install
. ~/.bash_profile
git --version
git version 2.4.0

最新を読み込み、インストールする

cd /usr/local/src/
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
make prefix=/usr/local all
make prefix=/usr/local install
git --version

git version 2.9.2.574.gc6b0597

Redmineを再起動する

cd /var/lib/redmine/tmp
rm  restart.txt
touch restart.txt

/etc/rc.d/init.d/httpd restart

参考
http://qiita.com/n_slender/items/54cd282c140fadbbb322
http://symfoware.blog68.fc2.com/blog-entry-1694.html