配置SVN的hooks功能自動更新代碼
前言解讀
用過SVN的小夥伴們,都應該知道hooks(鉤子)這個功能,的確日常企業內部測試環境經常會用過這個“特殊”的功能,今天來聊一聊SVN hooks
傳統的WEB網站代碼發布基本依靠手工操作 大概的整個流程如下: 開發本地環境開發代碼 提交SVN版本庫 然後將本地環境代碼使用工具上傳至待發布目錄 備份原WEB站點代碼目錄 發布新代碼至WEB目錄 基於這類重復操作的問題,為了提高效率,因此,引入了SVN hooks功能 SVN安裝這裏就不贅述了,需要了解可參考以前的文章(如下鏈接) http://blog.51cto.com/13505030/2089531 安裝完成,開始配置hooks功能 [root@centos ~]#cd /svndata/doc/hooks
[root@centos hooks]#ll
total 40
-rw-r--r-- 1 root root 1977 Jun 8 23:50 post-commit.tmpl
-rw-r--r-- 1 root root 1638 Jun 8 23:50 post-lock.tmpl
-rw-r--r-- 1 root root 2289 Jun 8 23:50 post-revprop-change.tmpl
-rw-r--r-- 1 root root 1567 Jun 8 23:50 post-unlock.tmpl
-rw-r--r-- 1 root root 3426 Jun 8 23:50 pre-commit.tmpl
-rw-r--r-- 1 root root 2410 Jun 8 23:50 pre-lock.tmpl
-rw-r--r-- 1 root root 2786 Jun 8 23:50 pre-revprop-change.tmpl
-rw-r--r-- 1 root root 2100 Jun 8 23:50 pre-unlock.tmpl
-rw-r--r-- 1 root root 2780 Jun 8 23:50 start-commit.tmpl
備份下配置文件
[root@centos hooks]#cp post-commit.tmpl post-commit
[root@centos hooks]#chmod +x post-commit
修改post-commit配置文件
[root@centos hooks]# vim post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
export LC_CTYPE="en_US.UTF-8"
export LC_ALL=
LOCALPATH="/svncode/test/"
WEBPATH=/usr/local/apache-tomcat-8.5.9/webapps/
DATE=`date +%F`
SVN=/usr/bin/svn
[ ! -d ${LOCALPATH} ] && mkdir ${LOCALPATH} -p
##update code
$SVN update ${LOCALPATH} --username=test --password=test123
#backup web dir
cd /usr/local/apache-tomcat-8.5.9/webapps/
mv test test.${DATE}
##update code and restart Tomcat service
ln -s $LOCALPATH $WEBPATH
cd /usr/local/apache-tomcat-8.5.9/bin/
./shutdown.sh
sleep 2
./startup.sh
備註:SVN服務器與WEB在同一臺服務器上,如果分開,配置是需要有所變化的,以上配置供參考,但方法與步驟相同
首先我們在WEB站點目錄下更新下當前的代碼,這個更新的動作相當於將SVN的代碼目錄在WEB目錄下復制了一個“副本”
svn co svn://192.168.4.254:/doc/test /svncode/test/ --username=test01 --password=test123
[root@centos test]# pwd
/usr/local/apache-tomcat-8.5.9/webapps/test
[root@centos test]# ll
total 216
-rw-r--r-- 1 root root 1241 Jun 11 04:06 index.html
-rw-r--r-- 1 root root 142943 Jun 10 20:12 server.jpg
-rw-r--r-- 1 root root 68533 Jun 10 20:12 u.jpg
打開瀏覽器測試訪問
接下來模擬開發修改相關代碼文件,重新提交了代碼至SVN版本庫
重新打開瀏覽器測試訪問頁面是否更新?
代碼自動更新至WEB目錄完成
配置SVN的hooks功能自動更新代碼