タツノオトシゴのブログ

主にJavaに関するものです。

GitBucketのバージョンアップ用のスクリプト(作業用)

便利なGitBucketは重宝しているけど、リビジョンアップが現在のところほぼ月一なので、そのたびの入れ替え作業が面倒になってきた。

GitBucketは簡単に環境構築できる。それなりに本格的に運用しようとすると、入れ替えの際の古い媒体のバックアップなど作業したりする。
バックアップの他、媒体のダウンロードすら面倒になってきたので、今回、スクリプトを作ったのが大きな要因かも。

まあ、Tomcatの場合、「Tomcat Manger」使えば、画面からwarの入れ替えができるけど、SIという意味も込めてshellでやってみる。

自分の環境

  • OS:CentOS6
  • APPサーバ:Tomacat7(自分で配置)
  • Webサーバ:Apache HTTP Server2.2(AJPTomcatと連携)(rpm版)

Shellの内容(gitbucket_update.sh)

前提として、下記の環境変数が必要。

  • CATALINA_HOME:例)/usr/local/tomcat
  • GITBUCKET_HOME:例) /mnt/share/net/gitbucket

あと、Tomcat用の起動スクリプトを「/etc/init.d/tomcat」に配置する必要がある。

簡単な流れは次の通り。

  1. 環境のチェック(環境変数のチェックなど)
  2. GitBucketのバージョンのチェック
  3. warのダウンロード
  4. Tomcat内のwarの入れ替え。
#!/bin/sh
# gitbucket_update.sh
# Update GibBucket script with Tomcat
#

# 環境によって変更する
BACKUP_DIR=/mnt/share/public
WORK_DIR=/usr/tmp/

## --- check environment

if [ "$GITBUCKET_HOME" = "" ]; then
	echo "error!! not found env GITBUCKET_HOME"
	exit
fi

if [ "$CATALINA_HOME" = "" ]; then
	echo "error!! not found env CATALINA_HOME"
	exit
fi

echo -n "新しいバージョンのGitBucketを入力してください(例. 1.5) > "
read NEW_VERSION
if [ "$NEW_VERSION" = "" ]; then
	echo "バージョンが入力されていません。処理を中止します。"
	exit
fi

CURRENT_VERSION=`cat $GITBUCKET_HOME/version`

if [ "$CURRENT_VERSION" = "$NEW_VERSION" ]; then
	echo "現在のバージョンと同じであるため、処理を中止します。"
	exit
fi

echo "新しいバージョンの媒体を取得します。"
cd $WORK_DIR
/bin/rm -f gitbucket.war
wget -O gitbucket.war https://github.com/takezoe/gitbucket/releases/download/${NEW_VERSION}/gitbucket.war

if [ $? -ne 0 ]; then
	echo "新しいバージョンをダウンロードするのに失敗しました。"
	exit
fi

if [ ! -f gitbucket.war ]; then
	echo "新しいバージョンの媒体が存在しません。"
	exit
fi

echo -n "GitBucketのバージョンアップ( ${CURRENT_VERSION} -> $NEW_VERSION )を実行しますか?(yes|no) > "
read CONFIRM_DO
case "$CONFIRM_DO" in
	"Y" | "y" | "yes" | "Yes" | "YES" )
		echo "... GitBucketのバージョンアップを開始します。"
		;;
	* )
		echo "... GitBucketのバージョンアップを中止します。"
		exit
		;;
esac


echo "... stop tomcat"
/etc/init.d/tomcat stop

if [ -d $CATALINA_HOME/webapps/gitbucket ]; then
	echo "古い媒体をバックアップします。"
	cd ${CATALINA_HOME}/webapps/
	tar zcf gitbucket-${CURRENT_VERSION}.tgz gitbucket
	mv gitbucket-${CURRENT_VERSION}.tgz ${BACKUP_DIR}
	echo "古いバージョンのバックアップ >> $BACKUP_DIR/gitbucket-${CURRENT_VERSION}.tgz"
fi

echo "媒体を入れ替えます"
/bin/rm -f $CATALINA_HOME/webapps/gitbucket.war
/bin/rm -rf $CATALINA_HOME/webapps/gitbucket
/bin/rm -rf $CATALINA_HOME/work/Catalina/localhost/gitbucket/*
cp $WORK_DIR/gitbucket.war $CATALINA_HOME/webapps/

echo "... start tomcat"
/etc/init.d/tomcat start

exit

Apacheとの連携

ApacheTomcatとの連携は、AJPで行う。

Apacheの設定ファイルに、ProxyPassを追加する。

less /etc/httpd/conf.d/mycite.conf
---------
## URLの最後のスラッシュ「/」はいらない。
ProxyPass /gitbucket ajp://localhost:8009/gitbucket
---------