天天看點

svn釋出腳本

下面這個腳本應該日常運維的工作中應該經常使用的到,适合全量、增量釋出。

假如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}目錄同步到應用程式那台伺服器的應用目錄下即可!至于你還需要校驗權限,或者替換一些配置檔案啥的,你都可以在腳本裡面定義好!