溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用SVN鉤子自動(dòng)更新項(xiàng)目

發(fā)布時(shí)間:2021-09-14 09:20:58 來(lái)源:億速云 閱讀:212 作者:chen 欄目:安全技術(shù)

這篇文章主要講解了“怎么用SVN鉤子自動(dòng)更新項(xiàng)目”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么用SVN鉤子自動(dòng)更新項(xiàng)目”吧!

使用post-commit更新

1.SVN 服務(wù)器地址:192.168.31.33

2.web服務(wù)器地址:192.168.31.34

3.SVN版本庫(kù)地址:/home/svn/qxy

4.web項(xiàng)目地址:/home/wwwroot/qxy

5.由于SVN和web并不在同一服務(wù)器上,所以涉及到ssh登錄,并且需要設(shè)置免密鑰登錄

個(gè)人svn同步實(shí)現(xiàn)原理

1.開發(fā)人員本地電腦通過(guò)SVN Commit 版本到SVN服務(wù)器上。

2.SVN服務(wù)器post-commit 檢測(cè)到有版本變更,根據(jù)其中的定義設(shè)置通過(guò)ssh 方式登錄到web服務(wù)器執(zhí)行svn update操作

3.我需要記錄一些信息,所以采用了ssh 登錄后執(zhí)行特定 腳本進(jìn)行update操作

鉤子位置位于SVN服務(wù)器/home/svn/qxy/hooks 目錄下,默認(rèn)提供了常用鉤子:

[root@docker_server hooks]  ll
total 36
-rw-r--r-- 1 root root 1977 Sep  1 16:49 post-commit.tmpl
-rw-r--r-- 1 root root 1638 Sep  1 16:49 post-lock.tmpl
-rw-r--r-- 1 root root 2289 Sep  1 16:49 post-revprop-change.tmpl
-rw-r--r-- 1 root root 1567 Sep  1 16:49 post-unlock.tmpl
-rw-r--r-- 1 root root 3426 Sep  1 16:49 pre-commit.tmpl
-rw-r--r-- 1 root root 2434 Sep  1 16:49 pre-lock.tmpl
-rw-r--r-- 1 root root 2786 Sep  1 16:49 pre-revprop-change.tmpl
-rw-r--r-- 1 root root 2122 Sep  1 16:49 pre-unlock.tmpl
-rw-r--r-- 1 root root 2780 Sep  1 16:49 start-commit.tmpl

授權(quán)SVN服務(wù)器面密鑰登錄到web服務(wù)器

1.在SVN服務(wù)器上生成密鑰文件:

ssh-keygen -t rsa

連續(xù)回車即可,生成的文件位于/root/.ssh/ 下,查看需要ls -a  命令

2.復(fù)制密鑰文件到web服務(wù)器上:

ssh-copy-id -i /root/.ssh/id_rsa.pub  root@192.168.31.34

該操作需要輸入web服務(wù)器root密碼

3.復(fù)制完成后/root/.ssh 下會(huì)生成一個(gè)known_hosts 文件,里面記錄了授權(quán)信息(加密的)

編輯post-commit 文件

cp post-commit.tmpl post-commit
vim post-commit
#!/bin/bash
REPOS="$1"
REV="$2"
LOGFILE=/var/log/svn.log
exec 1>>"$LOGFILE"
exec 2>&1
export LC_CTYPE="en_US.UTF-8"
export LC_ALL=
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")
 
function myecho() {
    echo "$TIME" "$*"
}
myecho "**************************************************************"
myecho "提交版本:$REV 作者:$AUTHOR"
myecho "提交備注:$MESSAGE"
myecho "修改目錄:$(echo $CHANGEDDIRS | tr '\n' ' ')"
 
ssh root@192.168.31.34 "/home/svnup.sh">/dev/null

增加 腳本執(zhí)行權(quán)限

chmod 744 post-commit

web服務(wù)器上新建匹配腳本

vim /home/svnup.sh
 
#!/bin/bash
logfile=/var/log/svnup.log
echo "-----------------------------------" >>$logfile
echo $(date +"%y-%m-%d %H:%M:%S") >>$logfile
svn update /home/wwwroot/qxy >>$logfile
echo "-----------------------------------" >>$logfile

腳本測(cè)試

直接在SVN服務(wù)器上運(yùn)行鉤子 sh post-commit,如果一切正常,對(duì)應(yīng)的兩個(gè)日志文件中都會(huì)生成日志信息,web服務(wù)器上雖然沒(méi)有版本更新,但是也會(huì)產(chǎn)生更新的記錄

開發(fā)電腦推送版本到SVN服務(wù)器測(cè)試,如果出現(xiàn)錯(cuò)誤,會(huì)有post-commit 的相關(guān)提示,一般都是鉤子中 命令問(wèn)題,詳細(xì)排錯(cuò)即可。
怎么用SVN鉤子自動(dòng)更新項(xiàng)目

這個(gè)方案其實(shí)很累贅,并且需要web服務(wù)器能夠root登錄,另外如果是一個(gè)版本庫(kù)下有不同的項(xiàng)目,也無(wú)法進(jìn)行判斷具體更新哪個(gè)項(xiàng)目,接下來(lái)將進(jìn)一步完善。

感謝各位的閱讀,以上就是“怎么用SVN鉤子自動(dòng)更新項(xiàng)目”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么用SVN鉤子自動(dòng)更新項(xiàng)目這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

svn
AI