centos7 svn hook 自動同步程式碼到 web 目錄
阿新 • • 發佈:2019-01-08
非指令碼,只是命令合集
#!/usr/bin/env bash
## svn 同步 指令碼
## yum 安裝 svn
yum install -y subversion >> ~/svn_install_log.log
## 檢測安裝版本
svnserve --version|grep "版本"
echo "建立 svn 倉庫目錄: /var/svn"
mkdir -p /var/svn
cd /var/svn
pwd
echo 建立版本庫
svnadmin create /var/svn/project
cd project
pwd
echo "會看到自動生成的版本庫檔案"
ls -al ./
echo "vim /var/svn/project/conf/authz"
cat >/var/svn/project/conf/authz<<EOF
[groups]
alliance = store,wholesaler, logistics,platform
[project:/]
@alliance = rw
EOF
echo "vim /var/svn/project/conf/passwd"
cat >/var/svn/project/conf/passwd<<EOF
[users]
store = store
wholesaler = wholesaler
logistics = logistics
platform = platform
EOF
echo "vim /var/svn/project/conf/svnserve.conf"
# anon-access = none //匿名使用者訪問許可權:無
sed -i 's/# anon-access = read/anon-access = none/g' /var/svn/project/conf/svnserve.conf
# auth-access = write //普通使用者訪問許可權:讀、寫
sed -i 's/# auth-access = write/auth-access = write/g' /var/svn/project/conf/svnserve.conf
# password-db = passwd //密碼檔案
sed -i 's/# password-db = passwd/password-db = passwd/g' /var/svn/project/conf/svnserve.conf
# authz-db = authz //許可權配置檔案
sed -i 's/# authz-db = authz/authz-db = authz/g' /var/svn/project/conf/svnserve.conf
# realm = /var/svn/project //版本庫所在1
sed -i 's/# realm = My First Repository/realm = \/var\/svn\/project/g' /var/svn/project/conf/svnserve.conf
#### 注意:所有以上的配置項都需要頂格,即前面不能預留空格,否則報錯 ####
echo "啟動svn服務:"
killall svnserve
svnserve -d -r /var/svn
echo "測試伺服器"
mkdir -p /home/wwwroot/svntest # 這裡的目錄應該隨自己專案做出修改
cd /home/wwwroot/svntest
# 如果手動檢出可以這樣
# svn co svn://localhost/project --username store
# 手動輸入密碼,或在指令碼中這樣寫:
svn co svn://localhost/project --username store --password store <<EOF
yes
EOF
## svn 客戶端儲存文字密碼
sed -i 's/# store-plaintext-passwords = no/store-plaintext-passwords = yes/g' /root/.subversion/servers
cd project
touch README.md
svn add README.md
svn commit README.md -m "測試提交檔案"
## 下面新增 post hook
cat >/var/svn/project/hooks/post-commit<<EOF
#!/bin/sh
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=/home/wwwroot/svntest/project
\$SVN_PATH update \$WEB_PATH --username 'store' --password 'store' --no-auth-cache
EOF
## 修改 hook 指令碼使用者、組 為www,這裡的使用者組與 web 目錄要一致
chown www:www /var/svn/project/hooks/post-commit
## 新增執行許可權
chmod 755 /var/svn/project/hooks/post-commit
## 下面檢驗成果
mkdir -p /home/wwwroot/testhook
cd /home/wwwroot/testhook
svn co svn://localhost/project --username wholesaler --password wholesaler <<EOF
yes
EOF
cd project
touch HOOKTEST.md
svn add HOOKTEST.md
svn commit HOOKTEST.md -m "hook test"
ls -al /home/wwwroot/svntest/project
ps:經過測試功能木有問題,已經改過一些地方,還是有些不盡人意的地方,今天太晚了,該休息了,就這樣吧。