SVN通過鉤子同步更新靜態文件並上傳OSS
需求:
需要高頻率的更新oss上多個bucket的不同目錄的內容。解決方案描述:
在svn上新建一個或者多個獨立的庫,在每個庫編輯hooks下的post-commit文件添加命令。- 注意事項:
需要安裝ossutil64 oss上傳工具,配置ossutil conf文件,svn權限密碼等
安裝ossutil64
根據您的操作系統選擇相應的binary或者壓縮包,下載後運行相應的binary。
Linux系統(以64位系統爲例)
下載工具:
wget http://gosspublic.alicdn.com/ossutil/1.6.0/ossutil64
修改文件執行權限:
chmod 755 ossutil64
使用交互式配置生成配置文件:
./ossutil64 config
該命令創建將一個配置文件,在其中存儲配置信息。 請輸入配置文件路徑(默認爲:/home/user/.ossutilconfig,回車將使用默認路徑。如果用戶設置爲 其它路徑,在使用命令時需要將--config-file選項設置爲該路徑):
未輸入配置文件路徑,將使用默認配置文件:/home/user/.ossutilconfig。
對於下述配置,回車將跳過相關配置項的設置,配置項的具體含義,請使用"help config"命令查看。
請輸入endpoint:http://oss-cn-shenzhen.aliyuncs.com
請輸入accessKeyID:yourAccessKeyID
請輸入accessKeySecret:yourAccessKeySecret
請輸入stsToken:
endpoint:填寫Bucket所在地域的域名信息,可參考訪問域名和數據中心。
accessKeyID:查看方式請參考創建AccessKey。
accessKeySecret:查看方式請參考創建AccessKey。
stsToken:非必配項,若採用STS臨時授權方式訪問OSS需要配置該項,否則置空即可。stsToken生成方式參考臨時訪問憑證
創建專用版本庫
建立版本庫目錄 選擇一個目錄之後
mkdir -p svntest
建立版本庫
svnadmin create svntest
SVN的hooks
#start-commit 提交前觸發事務
#pre-commit 提交完成前觸發事務
#post-commit 提交完成時觸發事務
#pre-revprop-change 版本屬性修改前觸發事務
#post-revprop-change 版本屬性修改後觸發事務
編寫 post-commit 文件
[root@hooks]# cd /data
[root@hooks]# svn checkout svn://17.17.177.177/svntest test
在項目庫的 hooks/ 目錄下新建 post-commit 文件 【鉤子腳本】
[root@hooks]# cd hooks/
[root@hooks]# ls
post-commit post-lock.tmpl post-unlock.tmpl pre-lock.tmpl pre-revprop-change.tmpl start-commit.tmpl
post-commit.tmpl post-revprop-change.tmpl pre-commit.tmpl pre-revprop-change pre-unlock.tmpl
[root@hooks]# pwd
/data/svn/svntest/hooks
[root@ hooks]# cat post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
WEB=/data/test
svn update $WEB
/data/shell/oss/ossutil64 cp -r -f $WEB oss://dev/xxx/ -c /data/shell/oss/oss.config
/data/shell/oss/ossutil64 cp -r -f $WEB oss://sit/xxx/ -c /data/shell/oss/oss.config
/data/shell/oss/ossutil64 cp -r -f $WEB oss://uat/xxxx/ -c /data/shell/oss/oss.config