1说明
SVN采用post-commit方式(钩子文件)实现版本自动发布。
2实现方法
2.1SVN部署
安装:
# yum install httpd httpd-devel mysql-server php php-devel php-mysql subversion mod_dav_svn mod_auth_mysql -y
修改配置:
# vim /etc/httpd/conf/httpd.conf 添加一行: LoadModule php5_module modules/libphp5.so # cd /etc/httpd/conf.d # vim subversion.conf 添加如下代码: <Location /svn> DAV svn SVNParentPath/var/www/svn AuthTypeBasic AuthName"Authorization Realm" AuthUserFile /var/www/svn/passfile Require valid-user </Location>
创建SVN版本库:
# mkdir -p /var/www/svn/ # svnadmin create /var/www/svn/ #chown apache.apache /var/www/svn/ -R
增加用户名密码验证
# htpasswd -c /var/www/svn/passfile gamebox
2.2多版本库权限管理
采用多版本多配置文件的方式单独管理。
目的:创建两个版本库,test1、test2,分别通过test01和test02账户访问。
修改apache配置,提供访问方式:
# cd /etc/httpd/conf.d # vim subversion.conf 配置文件添加两段代码: <Location /test1> DAV svn SVNPath /var/www/offline/test1 AuthType Basic AuthName"Subversion repository test1" AuthUserFile /var/www/svn/passwd-test1 ## AuthzSVNAccessFile /var/www/svn/authz-test1 Requirevalid-user </Location> <Location /test2> DAV svn SVNPath /var/www/offline/test2 AuthType Basic AuthName"Subversion repository test2" AuthUserFile /var/www/svn/passwd-test2 ## AuthzSVNAccessFile /var/www/svn/authz-test2 Requirevalid-user </Location> 重启apache # /etc/init.d/httpd restart
创建版本库:
# mkdir -p /var/www/offline/test1 /var/www/offline/test2 # svnadmin create /var/www/offline/test1 # svnadmin create /var/www/offline/test2 # chown apache.apache /var/www/offline/ -R
用户名密码验证:
# htpasswd -c /var/www/svn/passwd-test1 test01 # htpasswd -c /var/www/svn/passwd-test2 test02
测试:两个版本库通过web访问,用各自账号可正常登陆,其他账号无法登陆打开。
2.3Post-commit钩子文件本地更新配置
Checkout:
# mkdir-p /home/htdocs/test1 # chown-R apache:apache /home/htdocs
要是用apache的所属用户(apache)来执行checkout。Apache用户的配置在此忽略,目的是能通过su到apache的用户。
# su –apache -bash-4.1$svn checkout http://10.127.1.19/test1/ /home/htdocs/test1/--username test01 --password test01 提示你输入apache密码,空 .直接Enter 输入前面配置好的username and password 输入两次"yes" OK.checkout结束 测试一下内容能不能更新: -bash-4.1$svn update /home/htdocs/test1/ --username test01 --password test01 提示At revision 11. 更新OK。
Update更新时出现不能同步的问题,会有一个交互式输入yes/no的提示框,导致不能同步。
修复方法:
根据提示的位置,配置文件:
# cd /var/www/.subversion # vim servers [global] store-plaintext-passwords = no # chown -R /var/www/.subversion 重启apache # /etc/init.d/httpd restart
post-commit文件配置:
root用户下:
# cd /var/www/offline/test1/hooks # cppost-commit.tmpl post-commit # catpost-commit export.UTF-8 SVN=/usr/bin/svn $SVN update /home/htdocs/test1/--username test01 --password test01 # chown-R apache.apache /var/www/offline # chmod+x /var/www/offline/test1/hooks/post-commit # /etc/init.d/httpd restart
测试:
Win7个人计算机,配置svn。提交文件。
查看服务器目标目录:/home/htdocs/test1
文件内容一致。测试OK。
2.4Post-commit钩子文件远端服务器配置方法
2.4.1Svn服务器到远端目标服务器的无密码ssh登陆。方法略。
2.4.2远端服务器首次checkoutsvn目录
# svncheckout http://10.127.1.19/test1/ /usr/local/htdocs/test1/--username test01 --password test01 提示你输入root密码,空 .直接Enter 输入前面配置好的username andpassword 输入两次"yes" OK.checkout结束 测试一下内容能不能更新: # svnupdate /home/htdocs/test1/ --username test01 --password test01 提示At revision 15. 更新OK。
2.4.3修改SVN服务器钩子文件
# cat /var/www/offline/test1/hooks/post-commit exportLANG=en_US.UTF-8 SVN=/usr/bin/svn $SVN update/home/htdocs/test1/ --username test01 --password test01 --no-auth-cache ssh root@10.127.1.242"export.UTF-8;/usr/bin/svn update /usr/local/htdocs/test1/--username test01 --password test01--no-auth-cache"
2.4.4测试
Win7个人计算机,修改文件并提交。
远端服务器目标目录查看结果:/usr/local/htdocs/test1
文件内容相同,SVN版本相同,测试OK。
3总结
Post-commit 钩子方法自动更新服务器代码部署测试完成。使用时,按照不同的项目给测试人员提供SVN账号和权限,测试人员每次提交代码都会自动更新到服务器端。
配置好后,钩子文件中可在远端执行任意命令。能做的事情可以有很多。
本文出自 “运维之道” 博客,请务必保留此出处http://pesen.blog.51cto.com/4575807/1410685
20140509-svn安装 post-commit(钩子)部署,布布扣,bubuko.com
20140509-svn安装 post-commit(钩子)部署
原文地址:http://pesen.blog.51cto.com/4575807/1410685