エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

自作のデプロイツール svnからチェックアウトしてrsyncする

デプロイツールを自作したので、メモ

まぁ、こんなの作るよりもちゃんとツールを使いこなした方がよいんだけど。
だいたいの開発はPHPなので、こんなツールでいいんだろな
PHPのためのCapistrano風デプロイツール「Rocketeer」でLaravelをデプロイする - atijust's blog

シェルの練習がてらにと。

#!/bin/sh

#svnから更新して、更新があったファイルのみをデプロイする
#svnから更新ファイルを取得

svn update [svnの場所] --username [username] --password [password]

# リモートとローカルのディレクトリパス
REMOTE_EXC_DIR_DATA="[rsync先のディレクトリ]"

LOCAL_EXC_DIR_DATA="[rsync元のディレクトリ]"

#同期させないディレクトリ/ファイル名
#ディレクトリ名に/をつけるとディレクトリごとrsync /つけないとそのディレクトリの中身を更新
EXCLUDE_DATA_DIR="*.svn/ cache/ logs/ download/ downloads/tmp/ config/ Smarty/templates_c/ upload/ fonts/ include/ require_plugin.php require_base.php require_compat.php"


#rsycで同期したくないディレクトリを --excludeのオプションに設定
for DIR in $EXCLUDE_DATA_DIR
do
  TMP="--exclude "$DIR
  EXCLUDE_EXC_DATA=$EXCLUDE_EXC_DATA" "$TMP
done

# 引数に応じてオプション切り替え 
if [ $1 == "check" ]; then 
  # -n オプションは実行結果を表示するだけで実際に転送はしない。 
  OPTION="-avn --delete -e ssh "; 
 
elif [ $1 == "exec" ]; then 
  # ↑から n を取っただけ。 
  OPTION="-av --delete -e ssh "; 
 
else 
  echo "Invalid argument"; 
  echo "Usage: deploy.sh [check|exec]"; 
  exit; 
fi

rsync $OPTION $EXCLUDE_EXC_DATA $LOCAL_EXC_DIR_DATA giftdev:$REMOTE_EXC_DIR_DATA