#!/bin/bash
function judge_exec_result() {
if [[ ! $1 -eq 0 ]];
then
echo "コマンド実行に失敗しました。"
exit -1
fi
return 0
}
# ---------------- メイン処理 ---------------- #
readonly SYSTEM_NAME="SystemName"
readonly DEPLOY_DIR="/deploy"
cd ${DEPLOY_DIR}
# *.tar.gzで名前の順で並べ替え、一番最後の(新しい)ファイル名を取得
readonly RESOURCE_FILE_NAME=`ls -1v *.tar.gz | tail -1`
# 拡張子を削除
readonly TARGET_NAME=${RESOURCE_FILE_NAME%.*.*}
# ファイルの存在/命名規則チェック (${SYSTEM_NAME}_vX.Y.Z_2yyymmdd)
if [[ ! ${TARGET_NAME} =~ ^${SYSTEM_NAME}_(v[0-9]+\.[0-9]+\.[0-9]+)_(2[0-9]{3})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$ ]];
then
echo "リリース対象ファイルが見つかりませんでした。"
echo "命名規則通りのファイルが存在しないか、 ${DEPLOY_DIR} に余計なtar.gzファイルが配置されている可能性があります。"
exit -1
fi
read -n1 -p "${RESOURCE_FILE_NAME} をリリースします。よろしいですか? (y/n):" yn
if [[ ! $yn = [yY] ]];
then
echo ""
echo "リリース作業を中止しました。"
exit -1
fi
echo ""
echo "リリース資源を展開..."
tar -zxvf ${RESOURCE_FILE_NAME}
judge_exec_result $?
echo ""
echo "フォルダ名リネーム..."
mv ./${SYSTEM_NAME} ${TARGET_NAME}
judge_exec_result $?
echo ""
echo "シンボリックリンク設定..."
ln -nfs ${DEPLOY_DIR}/${TARGET_NAME} current
judge_exec_result $?
echo ""
# その他DBのmigration、権限設定、ログフォルダの設定 etc...
echo "リリースは正常に終了しました。"