Windows環境にGitBucketを建ててRedmineと連携する

# 環境 
GitBucket稼働環境：Windows Server 2008 standard
GitBucketバージョン：4.18
Redmine稼働環境：Windows server 2008 R2 Enterprise
Redmineバージョン：2.5.2-2（3年くらい前にたてたものをそのまま使用）

# いきさつ
Gitを個人的にローカルでちょろちょろしたり
個人的に作ったものをBitBucketとかにあげたりはしているものの
会社ではGitでバージョン管理をしているチームがなさそうなので
ちょうど今月から始まるプロジェクトでは試しにGitを使ってみよう！
ということでGitBucketを社内に建てることにしました。
チケット管理にも連動させてトレーサビリティをとれるようにしよう！
というのが最終目標です。

# GitBucketをたてる
## インストール
GitBucket自体は[ここ](https://gitbucket.github.io/)からダウンロードして、
下記コマンドをうつだけで使用可能。
TomcatなどのApサーバーいらずで、とっても簡単ですね！
(javaは1.8.0_152をインストール済）

```
java -jar gitbucket.war
```

ちなみに、私の場合はポートの指定とGitBucketホームディレクトリのオプションを
つけています。

```
java -jar gitbucket.war --port=8100 --gitbucket.home=C:\work\gitbucket
```

こうすると、

```
http://[gitbucket-server-name]:8100/  
```

でアクセスでGitBucketが起動します。
また、指定したホームディレクトリ下にplugins等を配置したりすることもできます。

## ユーザー・リポジトリの作成など
これについてはきっと直感的にわかるのでカッツ・アイ！

# Redmine側の設定
## redmine_github_hookプラグインのインストール
### プラグインの配置
私の場合、gemではなく、[当プラグインのgithub](https://github.com/koppen/redmine_github_hook)からクローン（またはzip）を取得してpluginsディレクトリに置きました。
取得したプラグインを下記に配置します。（zipで取得した場合には適宜フォルダ名をリネームします。）

```
C:\Bitnami\redmine-2.5.2-2\apps\redmine\htdocs\plugins\redmine_github_hook
```

### gitにパスを通す
まだgitにパスが通っていない環境の場合は、redmineのディレクトリ下にあるgitのbinフォルダ `C:\Bitnami\redmine-2.5.2-2\git\bin` にパスを通すと手っ取り早いです。


### Redmineの再起動
Redmineをマネージャー等で再起動後、管理ユーザーでプラグインを確認してみます。
![red_plugins.JPG](https://qiita-image-store.s3.amazonaws.com/0/135092/0555bbe7-2756-fb54-ed3f-85f924c11f31.jpeg)

Redmine Github Hook pluginが表示されていればインストール成功です。
## リポジトリのミラー設定
Redmineでgitのリポジトリを設定する場合、bareで、かつ、ローカルリポジトリである必要がある、とのことなのですが、--mirrorを指定してcloneを取得すれば問題ないようです。
ここではC:\git_repo\配下にミラーを設定します。

```
 cd C:\git_repo
 git clone --mirror http://[gitbucket-server-name]:8100/git/taro/first_app.git
```

これにより、`C:\git_repo\first_app.git\` が作成されます。
## Redmineプロジェクトのリポジトリの設定
上記で設定したミラーのパス`C:\git_repo\first_app.git\` を設定します。
![red_repo.JPG](https://qiita-image-store.s3.amazonaws.com/0/135092/229bb3af-3023-4860-d4e1-0d979a97a305.jpeg)

RedmineのリポジトリからGitのリポジトリが見えるようになりました。
![red_repo2.JPG](https://qiita-image-store.s3.amazonaws.com/0/135092/0742347f-5560-44d9-a9ee-7bc1aa13b4dc.jpeg)

# Hookの設定
GitBucketのfirst_appリポジトリのSettingからServiceHookタブを選択
![git_hook1.JPG](https://qiita-image-store.s3.amazonaws.com/0/135092/9e5ee1c0-a282-5619-aaef-dc0fbb534fa9.jpeg)

Add webhookボタンをクリックして、Hook先のURLを設定します
![git_hook2.JPG](https://qiita-image-store.s3.amazonaws.com/0/135092/7a1f7fab-fd4f-9054-50cd-7651d7bf6e77.jpeg)

Payload URLは `[redmine_url]/github_hook?project_id=[identifier] `
とのこと。
私の場合は、

```
http://[redmine-server-name]/redmine/github_hook?project_id=first_app&repository_id=first_app_repo
```

と指定。
必要に応じて、トリガーとなるイベントを選択します。
ここではPull requestとPushを選択しています。

Test Hookを押してみて、Response200となればOK。
![git_hook3.JPG](https://qiita-image-store.s3.amazonaws.com/0/135092/54f99f76-a433-e25b-31cb-d20e1d83427a.jpeg)

# 設定完了！pushしてみる！！
commitの際に

```
git commit -m "refs #536 README.md追記"
```

のようにコメントに　`refs #チケット番号` を付加しあとpushしてRedmineで確認してみます。
![git_test2.JPG](https://qiita-image-store.s3.amazonaws.com/0/135092/e5835938-f094-3964-8548-a88ff0adc060.jpeg)

チケットの進捗が100%になり、「関係しているリビジョン欄」に先ほどのコミットコメントが表示されました！！
今回のプロジェクトではこれを有効に使えたらいいですね。