1. 程式人生 > >配置SVN的hooks功能自動更新代碼

配置SVN的hooks功能自動更新代碼

SVN Hooks

前言解讀

用過SVN的小夥伴們,都應該知道hooks(鉤子)這個功能,的確日常企業內部測試環境經常會用過這個“特殊”的功能,今天來聊一聊SVN hooks


為何而用?

傳統的WEB網站代碼發布基本依靠手工操作

大概的整個流程如下:

開發本地環境開發代碼

提交SVN版本庫

然後將本地環境代碼使用工具上傳至待發布目錄

備份原WEB站點代碼目錄

發布新代碼至WEB目錄

基於這類重復操作的問題,為了提高效率,因此,引入了SVN hooks功能


配置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功能自動更新代碼