首页 > 代码库 > 20140509-svn安装 post-commit(钩子)部署

20140509-svn安装 post-commit(钩子)部署

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多版本库权限管理

采用多版本多配置文件的方式单独管理。

目的:创建两个版本库,test1test2,分别通过test01test02账户访问。

修改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)来执行checkoutApache用户的配置在此忽略,目的是能通过suapache的用户。

# 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