手把手教SVN鉤子自動更新專案
SVN鉤子,其實可以理解為觸發器,裡面是 shell程式碼,常用鉤子含義請移步:SVN鉤子簡介和常用鉤子說明。 |
1.SVN 伺服器地址:192.168.31.33
2.web伺服器地址:192.168.31.34
3.SVN版本庫地址:/home/svn/qxy
4.web專案地址:/home/wwwroot/qxy
5.由於SVN和web並不在同一伺服器上,所以涉及到ssh登入,並且需要設定免金鑰登入
1.開發人員本地電腦通過SVN Commit 版本到SVN伺服器上。
2.SVN伺服器post-commit 檢測到有版本變更,根據其中的定義設定通過ssh 方式登入到web伺服器執行svn update操作
3.我需要記錄一些資訊,所以採用了ssh 登入後執行特定 指令碼進行update操作
鉤子位置位於SVN伺服器/home/svn/qxy/hooks 目錄下,預設提供了常用鉤子:
[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
1.在SVN伺服器上生成金鑰檔案:
ssh-keygen -t rsa
連續回車即可,生成的檔案位於/root/.ssh/ 下,檢視需要ls -a 命令
2.複製金鑰檔案到web伺服器上:
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.31.34
該操作需要輸入web伺服器root密碼
3.複製完成後/root/.ssh 下會生成一個known_hosts 檔案,裡面記錄了授權資訊(加密的)
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
chmod 744 post-commit
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
直接在SVN伺服器上執行鉤子 sh post-commit,如果一切正常,對應的兩個日誌檔案中都會生成日誌資訊,web伺服器上雖然沒有版本更新,但是也會產生更新的記錄
開發電腦推送版本到SVN伺服器測試,如果出現錯誤,會有post-commit 的相關提示,一般都是鉤子中
命令問題,詳細排錯即可。
這個方案其實很累贅,並且需要web伺服器能夠root登入,另外如果是一個版本庫下有不同的專案,也無法進行判斷具體更新哪個專案,接下來將進一步完善。
原文地址: https://www.linuxprobe.com/svn-hook-project.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2661737/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- svn:鉤子post-commitMIT
- svn 鉤子應用 - svn 提交字元限制, 不能為空字元
- 高效前端專案自動化構建部署實踐——使用webhook鉤子運維前端WebHook運維
- svn版本資訊自動更新到原始碼原始碼
- WinForm通用自動更新AutoUpdater專案實戰ORM
- wordpress 當更新主題時候的鉤子
- 如何在 Composer 專案中管理本地的 Git 鉤子?Git
- django專案基於鉤子驗證的註冊功能Django
- 開源專案 pyqt 軟體自動更新框架QT框架
- 用 Go 做了一個 Git WebHook 鉤子 實現自動部署GoGitWebHook
- SVN之檔案同步更新
- svn建立專案
- 將專案匯入myeclipse後 tortoise svn 右鍵專案不能更新和提交Eclipse
- 拉鉤專案(一)--專案流程+資料提取
- 手把手教你把 Git 子模組更新到主專案Git
- 手把手教你使J2EE專案開發自動化(轉)
- 從code google svn 專案Go
- SVN更新專案出現“Working copy 'XXX' locked”解決
- PHP系列之鉤子PHP
- React Hooks 鉤子特性ReactHook
- 鉤子(hook)是啥Hook
- 【自動化基礎】手把手教零基礎小白搭建APP的UI自動化環境APPUI
- 專案中使用SVN簡介
- vue-router的鉤子Vue
- Vue 生命週期鉤子Vue
- PHP之鉤子行為PHP
- WINDOWS鉤子函式(轉)Windows函式
- VC:滑鼠鉤子函式函式
- C#系統鉤子C#
- svn and maven 自動部署shell指令碼Maven指令碼
- Git Webhook自動部署專案GitWebHook
- win10專業版怎麼開啟自動更新 如何開啟win10自動更新Win10
- 去除專案中的SVN標記
- JVM鉤子函式的使用JVM函式
- 系統鉤子的使用 (轉)
- Linux下半自動化部署(svn +maven)LinuxMaven
- svn dump 全自動備份指令碼指令碼
- playwright自動化專案搭建