下面這個腳本應該日常運維的工作中應該經常使用的到,适合全量、增量釋出。
假如svn位址是svn://192.168.1.1/trunk,下面有test、release等目錄。每個目錄下有目前日期命名的目錄。目錄裡面就是開發的程式,目錄結構如下:
svn://192.168.1.1/trunk
release
20131223
20131224
test
腳本的目的是通過svn自動釋出程式。這個腳本在内網平常都是開發同僚自動釋出,也為運維省去了一大部分的工作量。腳本内容如下:
#版本釋出工具
#!/usr/bash
svnPath="svn://192.168.1.1/trunk"; =======>svn路徑
svnDir="/var/svn/www"; =======>釋出機上svn目錄,注意這些目錄不需要建立。
webDir="/opt/www"; =======>釋出機上的應用目錄,注意這些目錄不需要建立。
echo "請選擇要釋出的版本類型"
deployTarget=`svn list ${svnPath}`
select deployTarget in $deployTarget
do
break;
done;
echo "請選擇釋出分支";
if [ "${deployTarget}" == 'test/']; then
select tasks in `svn list ${svnPath}/test`
do
tasks=${tasks/\//};
svnUrl="${svnPath}/test/${tasks}";
break;
done;
fi
if [ "${deployTarget}" == 'release/']; then
select tasks in `svn list ${svnPath}/release`
svnUrl="${svnPath}/release/${tasks}";
choose="yes no"
echo "請确認svn位址: ${svnUrl}";
select comfirm in $choose
do
if [ "${comfirm}" != "yes" ];then
echo "釋出程式結束";
exit 0;
fi
hasSvnRevison=`svn log -r PREV:HEAD ${svnDir} | grep "\-\-\-\-\-\-"`;
if [ "${hasSvnRevison}" == "" ]; then
echo "檢出svn目錄"
svn co ${svnUrl} "${svnDir}";
else
echo "切換svn目錄"
svn sw ${svnUrl} "${svnDir}";
rsync -av --exclude=".svn/" --delete --delete-after ${svnDir}/ ${webDir}
最重要的内容都如上顯示,但是一般釋出機和應用不應該在一台伺服器(為了防止網絡中斷啥的),然後就是需要做一個ssh無密碼認證,将釋出機上的${webDir}目錄同步到應用程式那台伺服器的應用目錄下即可!至于你還需要校驗權限,或者替換一些配置檔案啥的,你都可以在腳本裡面定義好!