手把手教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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高效前端專案自動化構建部署實踐——使用webhook鉤子運維前端WebHook運維
- 新建鉤子檔案
- WinForm通用自動更新AutoUpdater專案實戰ORM
- 如何在 Composer 專案中管理本地的 Git 鉤子?Git
- IDEA svn專案 更換SVN地址Idea
- 開源專案 pyqt 軟體自動更新框架QT框架
- django專案基於鉤子驗證的註冊功能Django
- wordpress 當更新主題時候的鉤子
- 用 Go 做了一個 Git WebHook 鉤子 實現自動部署GoGitWebHook
- Python 類變動的鉤子方法Python
- 拉鉤專案(一)--專案流程+資料提取
- 手把手教你把 Git 子模組更新到主專案Git
- 專案中使用SVN簡介
- 小白手把手教學怎麼用maven建立一個Springboot專案MavenSpring Boot
- 【自動化基礎】手把手教零基礎小白搭建APP的UI自動化環境APPUI
- Git Webhook自動部署專案GitWebHook
- playwright自動化專案搭建
- React Hooks 鉤子特性ReactHook
- PHP系列之鉤子PHP
- SVN cornerstone專案branch, tags, trunk記錄
- win10專業版怎麼開啟自動更新 如何開啟win10自動更新Win10
- 三.介面自動化專案1
- 使用 CODING 自動部署 Hyperf 專案
- 從 svn 將myeclispe專案匯入到ideaLispIdea
- IDEA Spring Boot 專案內既有SVN 也有Git時,無法更新程式碼問題解決IdeaSpring BootGit
- CentOS SVN 環境搭建配置跟自動部署CentOS
- vue-router的鉤子Vue
- Vue 生命週期鉤子Vue
- 一個用Git互動視覺化教學的專案Git視覺化
- 自學 TypeScript 第五天,手把手專案搭建 TS 篇TypeScript
- Idea 建立 父專案和子專案Idea
- 使用Jenkins自動化部署Java專案JenkinsJava
- jenkins自動化專案部署實戰Jenkins
- 實戰專案之自動簡歷
- ReactNative專案自動化打包釋出React
- Jenkins自動化前端專案構建Jenkins前端
- 輕鬆搞定專案流程自動化
- 自動化專案Jenkins持續整合Jenkins