Tomcat上で稼働しているGitBucketの更新手順

タイトルの通り， **Tomcat** 上で稼働している **GitBucket** の更新手順の自分用メモです．自分は **3.12** から **4.5** への更新を行いました．


# 自分の環境
* Versions
	* CentOS 7.2
	* Tomcat 7.0.54
	* JVM 1.8.0
	* GitBucket 3.12
* Directories
	* GitBucketの **gitbucket.home** は **/var/lib/gitbucket**
	* Tomcatの **CATALINA_HOME** は **/usr/share/tomcat**

手順内の`${gitbucket.home}`とか`${CATAILNA_HOME}`とかは各々の環境に合わせて適宜変えてください．


# 手順
## 1. バックアップ
とりあえず思考停止的にバックアップする癖がなかなか抜けません．この手順は飛ばしてもいいです．

```console
$ mkdir -p ~/backup/gitbucket
$ sudo cp -R ${gitbucket.home}　~/backup/gitbucket/gitbucket-home
$ sudo cp -R ${CATALINA_HOME}/webapps/gitbucket ~/backup/gitbucket/gitbucket
$ sudo cp ${CATALINA_HOME}/webapps/gitbucket.war ~/backup/gitbucket/gitbucket.war
```


## 2. 旧GitBucketのバージョンが3.13以前の場合
GitBucketのバージョンが **3.13以前** の状態から **4.x** に更新しようとすると(多分)tomcat起動時に下記のようなエラーが発生します．

```console
$ sudo cat /var/log/tomcat/localhost.2016-10-29.log
Oct 29, 2016 1:11:34 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class gitbucket.core.servlet.InitializeListener
java.lang.Exception: GitBucket can't migrate from this version. Please update to 3.14 at first.
.
.
.
```

そのため，まずは **3.14** に更新する必要があります．既に3.14以降の方はこの節の手順は飛ばしてください．

```console
$ cd ${CATALINA_HOME}/webapps
$ sudo systemctl stop tomcat
$ sudo rm -rf gitbucket gitbucket.war
$ sudo wget https://github.com/gitbucket/gitbucket/releases/download/3.14/gitbucket.war
$ sudo unzip gitbucket.war -d gitbucket
```

宗教上の理由でgitbucketのホームディレクトリ(リポジトリとか格納するディレクトリ)を変更している方は再度設定する必要があります．

```console
$ sudo vim gitbucket/WEB-INF/web.xml
```

```web.xml
<!-- 修正前の設定を抜粋 -->
<!--
<context-param>
    <param-name>gitbucket.home</param-name>
    <param-value>PATH_TO_DATADIR</param-value>
</context-param>
-->

<!-- 修正後の設定を抜粋 -->
<!-- コメントアウトを解除してgitbucket.homeのvalueを設定 -->
<context-param>
    <param-name>gitbucket.home</param-name>
    <param-value>${gitbucket.home}</param-value>
</context-param>
```

ここで一旦起動してテスト． 
**必ず一度はtomcatを起動してgitbucketへアクセスしてください**

```console
$ sudo systemctl start tomcat
```

gitbucketへアクセスして，ロゴの部分が下の画像のようになっていたら **3.14** への更新は完了です．あとは念のためrepositoriesの確認とか．

![gitbucket_3_14.png](https://qiita-image-store.s3.amazonaws.com/0/35230/ab180320-5bbf-83c8-070a-cf53d324c7fc.png "gitbucket_3_14.png")

後はほぼ同じ手順で **4.5** へ更新していきます．


## 3. 旧GitBucketバージョンが3.14以降の場合
文面は3.13以前の場合とほぼ同じでくどいですごめんなさい．

```console
$ cd ${CATALINA_HOME}/webapps
$ sudo systemctl stop tomcat
$ sudo rm -rf gitbucket gitbucket.war
$ sudo wget https://github.com/gitbucket/gitbucket/releases/download/4.5/gitbucket.war
$ sudo unzip gitbucket.war -d gitbucket
```

宗教上の理由でgitbucketのホームディレクトリ(リポジトリとか格納するディレクトリ)を変更している方は再度設定する必要があります．

```console
$ sudo vim gitbucket/WEB-INF/web.xml
```

```web.xml
<!-- 修正前の設定を抜粋 -->
<!--
<context-param>
    <param-name>gitbucket.home</param-name>
    <param-value>PATH_TO_DATADIR</param-value>
</context-param>
-->

<!-- 修正後の設定を抜粋 -->
<!-- コメントアウトを解除してgitbucket.homeのvalueを設定 -->
<context-param>
    <param-name>gitbucket.home</param-name>
    <param-value>${gitbucket.home}</param-value>
</context-param>
```

ここで一旦起動してテスト． 

```console
$ sudo systemctl start tomcat
```

gitbucketへ再度アクセスして，ロゴの部分が下の画像のようになっていたら **4.5** への更新は完了です．お疲れ様でした:tada::tada::tada: 


![gitbucket_4_5.png](https://qiita-image-store.s3.amazonaws.com/0/35230/bb4ba44d-0b75-49bd-40b5-8ce12a1750ec.png "gitbucket_4_5.png")

なんかいろいろとカッコよくなっていて感動…


# 参考
* [gitbucket/gitbucket](https://github.com/gitbucket/gitbucket)