Jan 292014
 

mediatempleのgridサーバ利用者でSVNにcommitしたときにweb自動展開のscript。svnのpost-commitからwebのdirに自動展開するための初期設定。このscriptはrepositoryの作成、skeletonフォルダ作成、webフォルダ作成、初期checkoutまで一括で行う。

初期Repo作成スクリプト

gitでもなんでもいい。要は用途に合ってる事と使いこなす事。svnは昔からmtサーバに入ってるので活用しやすい。

新規プロジェクト毎に以下のスクリプトを実行するだけでOK。

./create_repo.sh myproject_name

repository作成

99999=site number(mtの仕様)

まず、subversionのレポジトリ作成をし、スケルトンフォルダ作成。

#!/bin/sh
HOME=/home/99999/users/.home/
cd $HOME/data/svn/
svnadmin create --fs-type fsfs $1
svn mkdir file:///home/99999/data/svn/$1/trunk file:///home/99999/data/svn/$1/tags file:///home/99999/data/svn/$1/branches -m 'Create trunk, tags, and branches.'
echo "------------------------------------------";
echo "Repo Created";

post-commitのひな形を作成

自動化するscriptを作成するフロー。プロジェクトごとに展開ドメインを分けたい場合も考慮する。インラインで入力を促してifで振り分け。次のインラインでweb展開先のsub dirを入力する。指定したdirがcommit毎にupdateされる仕組み。

echo "Input type [personal biz] : "
read type

echo '#!/bin/sh' >> conf.tmp
echo 'DOMAINS=/home/99999/users/.home/domains/' >> conf.tmp
echo 'SVN=/usr/bin/svn' >> conf.tmp

if [[ "$type" == "personal" ]]
then

domain="myproj.f60k.com"
echo 'DOMAIN="myproj.f60k.com"' >> conf.tmp

elif [[ "$type" == "biz" ]]
then

domain="forbiz.f60k.com"
echo 'DOMAIN="forbiz.f60k.com"' >> conf.tmp

else

echo "Aborted -> type error!"
rm conf.tmp
exit 1

fi

echo "Input sub dir soon after '/html' [ex.)/subdir/] : "
read dir

echo 'UPDATEPATH=$DOMAINS$DOMAIN/html'$dir >> conf.tmp
echo '$SVN update $UPDATEPATH' >>conf.tmp

post-commit作成を確定

これをpost-commitに書き込む。web展開を望まないなら中止もできる。

echo "------------------------------------------";

cat conf.tmp

echo "------------------------------------------";
echo "Are you OK to write these into a hook script [no=0, yes=1] : "
read ok

if [[ "$ok" -eq 1 ]]
then

mv conf.tmp $1/hooks/post-commit
chmod 755 $1/hooks/post-commit

else

echo "Aborted -> confirmation failed!"
rm conf.tmp
exit 1

fi

初回チェックアウト

svn co file:///home/99999/data/svn/$1/trunk /home/99999/users/.home/domains/$domain/html/$dir

 

Bash全文

以下スクリプト丸ごと。


#!/bin/sh
HOME=/home/99999/users/.home/
cd $HOME/data/svn/
svnadmin create --fs-type fsfs $1
svn mkdir file:///home/99999/data/svn/$1/trunk file:///home/99999/data/svn/$1/tags file:///home/99999/data/svn/$1/branches -m 'Create trunk, tags, and branches.'
echo "------------------------------------------";
echo "Repo Created";

echo "Input type [personal biz] : "
read type

echo '#!/bin/sh' >> conf.tmp
echo 'DOMAINS=/home/99999/users/.home/domains/' >> conf.tmp
echo 'SVN=/usr/bin/svn' >> conf.tmp

if [[ "$type" == "personal" ]]
then

domain="myproj.f60k.com"
echo 'DOMAIN="myproj.f60k.com"' >> conf.tmp

elif [[ "$type" == "biz" ]]
then

domain="forbiz.f60k.com"
echo 'DOMAIN="forbiz.f60k.com"' >> conf.tmp

else

echo "Aborted -> type error!"
rm conf.tmp
exit 1

fi

echo "Input sub dir soon after '/html' [ex.)/subdir/] : "
read dir

echo 'UPDATEPATH=$DOMAINS$DOMAIN/html'$dir >> conf.tmp
echo '$SVN update $UPDATEPATH' >>conf.tmp

echo "------------------------------------------";

cat conf.tmp

echo "------------------------------------------";
echo "Are you OK to write these into a hook script [no=0, yes=1] : "
read ok

if [[ "$ok" -eq 1 ]]
then

mv conf.tmp $1/hooks/post-commit
chmod 755 $1/hooks/post-commit

else

echo "Aborted -> confirmation failed!"
rm conf.tmp
exit 1

fi

svn co file:///home/99999/data/svn/$1/trunk /home/99999/users/.home/domains/$domain/html/$dir

コメント

個のコメント

Powered by Facebook Comments

 Posted by at 21:20

Sorry, the comment form is closed at this time.