svn利用hooks自動更新遠程服務器上的項目

項目開發階段往往需要頻繁的提交代碼,如果不加svn鉤子的話,每次提交都要到項目目錄下執行一下svn up,非常費事,所以今天決定加個把鉤子做上。利用鉤子更新遠程項目的關鍵是實現ssh無密碼登錄。


svn倉庫所在服務器(以下簡稱機器A) :6.111

項目所在服務器(以下簡稱機器B):6.28

一、首先我們實現ssh無密碼登錄(A->B)

1.在A機器上生成祕鑰對

[root@domin ~]# ssh-keygen -t rsa
一路ENTER下去,祕鑰對就可以成功生成啦。生成完的祕鑰對保存/root/.ssh目錄中(因爲我是root用戶)

[root@domin .ssh]# pwd
/root/.ssh
[root@domin .ssh]# ls
id_rsa  id_rsa.pub

2.將id_rsa.pub複製爲authorized_keys,並將authorized_keys文件上傳到B機器的
[root@domin .ssh]# cp id_rsa.pub authorized_keys
[root@domin .ssh]# scp authorized_keys [email protected]:/root/.ssh

3.ssh登錄B機器,第一次需要輸入密碼,以後就不在需要了,至此,無密碼登錄就已經實現了

二、在B機器上創建更新svn的腳本

1.創建腳本文件/shell/svnup.sh

[root@domin shell]# vim svnup.sh

#!/bin/bash

/usr/bin/svn update /var/www/projcet #projcet爲項目文件
[root@domin shell]# chmod 755 svnup.sh

三、創建鉤子

svn倉庫創建完後會有一個hooks文件夾,該文件夾下面已經自帶了一些鉤子文件,我們要用到的是post-commit

1.將post-commit.tmpl複製爲post-commit

[root@101-server hooks]# cp post-commit.tmpl post-commit
2.註釋掉post-commit裏面的所有內容,並添加我們的更新命令

/usr/bin/ssh -l root 192.168.6.28 "/bin/bash /shell/svnup.sh"

四、總結

實現過程中有幾個需要注意的地方,1..ssh目錄和authorize_keys文件的權限,.ssh目錄的權限是700,authorize_keys的權限應該爲644.

2.post-commit文件和svnup.sh文件的權限,至少爲755


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章