Bitnami Redmine Stack の Redmine と GitBucket の連携方法です。
- Debian Stretch 9.0
- bitnami-redmine-3.3.3-1-linux-x64
- redmine_github_hook 2.2.0
- GitBucket 4.14.1
Bitnami Redmine Stack のインストール時に、Git も合わせてインストールしておく必要があります。
Welcome to the Bitnami Redmine Stack Setup Wizard.
----------------------------------------------------------------------------
Select the components you want to install; clear the components you do not want
to install. Click Next when you are ready to continue.
Subversion [Y/n] :y
PhpMyAdmin [Y/n] :y
Redmine : Y (Cannot be edited)
Git [Y/n] :y
Is the selection above correct? [Y/n]: y
redmine_github_hook プラグインを追加し、依存パッケージを bundle install
し Redmine を再起動します。
Redmine の管理画面でプラグインが正常にインストールされていることを確認します。
管理 -> プラグイン
Redmine から Git リポジトリを参照するためには、Redmine サーバー上にリポジトリが必要です。
参照用のリポジトリを作成またはクローンし、所有者とグループを Redmine 実行ユーザー daemon
に変更します。
$ sudo mkdir /var/lib/git/repos
$ sudo chown daemon:daemon /var/lib/git/repos
$ cd /var/lib/git/repos
$ sudo git clone --bare http://hostname/gitbucket/git/my_group/my_project.git
$ sudo chown -R daemon:daemon my_project.git
連携する Redmine プロジェクトにリポジトリ設定を追加します。
プロジェクト -> 設定 -> リポジトリ -> 新しいリポジトリ
項目 | 内容 |
---|---|
バージョン管理システム | Git |
メインリポジトリ | On |
識別子 | 任意の名称 |
リポジトリのパス | /var/lib/git/repos/my_project.git |
パスのエンコーディング | UTF-8 (任意) |
ファイルとディレクトリの最新コミットを表示する | On |
連携する GitBucket リポジトリに Webhook 設定を追加します。
Repository -> Settings -> Service Hooks -> Add webhook
項目 | 内容 |
---|---|
Payload URL | http://hostname/github_hook?project_id=my_project&repository_id=識別子 |
Content type | application/json |
Security Token | 任意 |
Which events ... | Push (任意で複数選択) |
「Test Hook」を実施するとエラーになりますが、問題ありません。
必要に応じて Redmine のリポジトリ設定をカスタマイズします。
修正用キーワードを追加すると、チケットのクローズや進捗率の変更を自動化できます。
管理 -> 設定 -> リポジトリ
項目 | 内容 |
---|---|
参照用キーワード | refs,references,IssueID |
修正用キーワード | close,closed,fix,fixed |
GitBucket のシステム設定で匿名アクセスが許可されていて、パブリック・リポジトリが対象の場合はここまでの設定で連携が可能です。 匿名アクセスが禁止されている場合やプライベート・リポジトリの場合は、以下の設定が必要です。
GitBucket への SSH でのアクセスを許可します。
System administration -> System settings -> SSH access
項目 | 内容 |
---|---|
Enable SSH access to git repository | On |
SSH host | 任意のホスト名称 |
SSH port | 29418 (任意) |
GitBucket に Redmine 連携用のユーザーを追加し、必要に応じてグループにも追加します。
System administration -> New user
項目 | 内容 |
---|---|
Username | Redmine (任意) |
User Type | Normal |
その他の項目 | 任意 |
Redmine サーバーに Redmine 実行用 (GitBucket 連携用) のユーザーを追加します。
daemon
と bitnami
のサブグループを追加します。
$ sudo adduser bitnami
$ sudo usermod -aG daemon bitnami
$ sudo usermod -aG bitnami daemon
$ id daemon
uid=1(daemon) gid=1(daemon) groups=1(daemon),1002(bitnami)
$ id bitnami
uid=1002(bitnami) gid=1002(bitnami) groups=1002(bitnami),1(daemon)
Redmine 実行ユーザーに切り替えて、パスフレーズなしで SSH 鍵を生成します。
$ sudo -s -u bitnami
$ cd
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
$ chmod 600 ~/.ssh/id_rsa
SSH 接続の設定ファイルを作成します。
$ vi ~/.ssh/config
Host "GitBucket の管理画面で設定した SSH host"
HostName "GitBucket サーバーのホスト名または IP アドレス"
Port "GitBucket の管理画面で設定した SSH port"
User "GitBucket に追加した連携ユーザー名称"
IdentityFile ~/.ssh/id_rsa
SSH で接続可能かテストします。
fingerprint が一致しているのを確認して yes
を入力します。
$ ssh gitbucket
The authenticity of host '[192.168.XXX.XXX]:29418 ([192.168.XXX.XXX]:29418)' can't be established.
RSA key fingerprint is SHA256:2ZCWb7aD3mp4TamG1iWhMzNZSoOdJisQ8dbhAC2Bkx0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.XXX.XXX]:29418' (RSA) to the list of known hosts.
Welcome to
_____ _ _ ____ _ _
/ ____| (_) | | | _ \ | | | |
| | __ _ | |_ | |_) | _ _ ___ | | __ ___ | |_
| | |_ | | | | __| | _ < | | | | / __| | |/ / / _ \ | __|
| |__| | | | | |_ | |_) | | |_| | | (__ | < | __/ | |_
\_____| |_| \__| |____/ \__,_| \___| |_|\_\ \___| \__|
Successfully SSH Access.
But interactive shell is disabled.
Please use:
git clone ssh://git@gitbucket:29418/OWNER/REPOSITORY_NAME.git
Connection to 192.168.XXX.XXX closed.
GitBucket の Redmine 連携ユーザーに SSH 公開鍵を追加します。
GitBucket に連携ユーザーでログイン -> Account Settings -> SSH Keys
項目 | 内容 |
---|---|
Title | 任意 |
Key | 公開鍵 |
.pub
ファイルの中身をコピーして Key
に貼り付けます。
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGWJmdefjSqWMyLaEM+Fqu28wq41S3Bq2G215+HYbZBXmjuHRDrt+YxlMhD1/zhRvxgQjeMBVk7HNLG1FZcDC4R2n1BMc7L+HEEe7ZFYGp1WBUFzOWVwf2WzXALk9ujyVrG4zgl5pK8JvkXqFRVbiLxxT6g5ZRASDDYOaN62h/Rceu7mcqP48sxS7ucEGAMwfh7XmLkafmJxrFOnbnAO9I15Oc9eV3xdEZjtxyryo1O+veTCTRItR8+rv5ktsxg4gH1HO46+GYqQeNqrsrB7/9rUFGupnuInY5rc2CmXBg4+peQURw2xEq3bsgK/I7oWkcIuEz2xP0Kdhmf4AYjEdvyzuP2REZ/AU4gxVUxueBNGvZky5m4Vxp4l0AMRp2WPj/mhwX3q6j4VuRYt6f/A1eikLWvmBOduPDNZVUnnxrHhLAwlkOZz9d7vvjQi72JX+GJKwgdP78MkxyhQf3qiQT+MVB9qKqzToIVxO/EGolGS96/9+uw/HlvRr2eYgdsz0R/5/rCPbsrm94o8oENYsT0sJMEwNR3EI1IYUasGtfqm+IrQsg0NDQLvD7/tWKo6penui3O0eE56QfUDhky9DW/Ruq75W8Mt3bXXKHsi2siGP+JXMEn1DUOlCHvc+mU1HuwsSGIqk5GhU/jeJoCGDc08lrqQn4feUqBF+n8lBc3w== [email protected]
Bitnami Redmine Stack では、Apache と Redmine は daemon
ユーザーで実行されます。
daemon
ユーザーは、ホームディレクトリが /usr/sbin
だったりするので何かと不都合です。
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
これを回避するために、Redmine の実行ユーザーを変更します。
$ sudo vi /opt/redmine-3.3.3-1/apache2/conf/bitnami/passenger.conf
#PassengerUser daemon
#PassengerGroup daemon
PassengerUser bitnami
PassengerGroup bitnami
Redmine を再起動します。
$ sudo /opt/redmine-3.3.3-1/ctlscript.sh restart
Redmine の実行ユーザーが変更されていることを確認します。
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
bitnami 16106 2.0 5.9 272328 122436 ? Sl 14:14 0:05 Passenger AppPreloader: /opt/redmine-3.3.3-1/apps/redmine/htdocs
daemon 16154 0.0 0.6 402296 13344 ? S 14:14 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
bitnami 16187 4.5 9.1 476156 187780 ? Sl 14:14 0:12 Passenger RubyApp: /opt/redmine-3.3.3-1/apps/redmine/htdocs
bitnami 16195 0.3 7.4 407416 153592 ? Sl 14:14 0:01 Passenger RubyApp: /opt/redmine-3.3.3-1/apps/redmine/htdocs
daemon 16241 0.0 0.6 402304 13352 ? S 14:15 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16279 0.0 0.6 402304 13352 ? S 14:16 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16298 0.1 0.6 402496 13456 ? S 14:17 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16304 0.0 0.6 402304 13344 ? S 14:17 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16307 0.0 0.6 402304 13336 ? S 14:17 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16337 0.0 0.6 402304 13320 ? S 14:18 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16342 0.0 0.6 402304 13336 ? S 14:18 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16348 0.0 0.6 402496 13300 ? S 14:18 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
daemon 16358 0.0 0.4 401980 9288 ? S 14:18 0:00 /opt/redmine-3.3.3-1/apache2/bin/httpd.bin -f /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
今回は必要ありませんが、Apache の実行ユーザーを変更したい場合は下記のように設定を変更します。
$ sudo vi /opt/redmine-3.3.3-1/apache2/conf/httpd.conf
#User daemon
#Group daemon
User bitnami
Group bitnami
参照用のリポジトリへ SSH で接続するように変更し、所有者とグループを新しい Redmine 実行ユーザーに変更します。
$ sudo vi /var/lib/git/repos/my_project.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = true
[remote "origin"]
url = ssh://git@gitbucket:29418/my_group/my_project.git
$ sudo chown -R bitnami:bitnami /var/lib/git/repos
Redmine 実行ユーザーに切り替えて、SSH で接続可能かテストします。
$ sudo -s -u bitnami
$ cd /var/lib/git/repos/my_project.git
$ git fetch origin
From ssh://gitbucket:29418/my_group/my_project
* branch HEAD -> FETCH_HEAD
Redmine 上でリポジトリの内容が正常に表示されていることを確認します。
プロジェクト -> リポジトリ
GitBucket 上で README.md などのファイルを適当に修正します。
Redmine のリポジトリ画面を更新し、修正内容が正常に反映されていれば正しく連携されています。
連携に失敗している場合は、Redmine のログファイルを確認してみてください。
$ view /opt/redmine-3.3.3-1/apps/redmine/htdocs/log/production.log