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