注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

zjcjack的博客

 
 
 

日志

 
 

利用svn钩子实现自动导出部署WEB应用  

2012-02-19 23:40:45|  分类: svn |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

应用场景:
开发团队3-5人,用svn做版本控制,测试环境和数据库在测试服务器上,一般情况下先在本地测试完成,然后传到服务器测试,这样显得有点麻烦,集中规定将代码上传到服务器进行测试,这里就涉及到一个应用自动部署的问题,有两种思路,一种服务器写一个crontab,编写一个shell脚本,实时监听服务器,将最新版本检出到web根目录;第二种思路,利用svn的钩子实现版本的实时导出。第一种方法比较简单,直接写一个导出版本的shell脚本即可,第二种方法其实使用起来更加便利。
首先简单介绍一下svn hooks,通常在创建svn版本库之后我们会在版本库的文件目录下找到一个叫做hooks的目录,这里存放的就是svn所谓的钩子了,他的主要用途在于在subversion执行一个操作时,会触发相应的钩子程序(前提当然是钩子存在),钩子程序就是一些shell脚本,执行相应的操作。

  1. ll hooks

如下图,列出的是一些钩子的模板案例,将后面的tmpl后缀名去掉,就变成了相应的钩子程序了。
1

post-commit
在提交完成,成功创建版本之后执行该钩子,提交已经完成,不可更改,因此本脚本的返回值被忽略。

post-lock
对文件进行加锁操作之后执行该脚本

post-revprop-change
在修改 revision 属性之后,执行该脚本。因为修改稿已经完成,不可更改,因此本脚本的返回值被忽略(不过实际上的实现似乎是该脚本的正确执行与否影响属性修改)

post-unlock
对文件进行解锁操作之后执行该脚本

pre-commit
在 Subversion transaction 完毕之后,在提交之前,执行该脚本

pre-lock
对文件进行加锁操作之前执行该脚本

pre-revprop-change
在修改 revision 属性之前,执行该脚本

pre-unlock
对文件进行解锁操作之前执行该脚本

start-commit
在客户端还没有向服务器提交数据之前,即还没有建立 Subversion transaction(缩写为 txn) 之前,执行执行该脚本

具体到我们的应用场景,我们要实现一个同步的测试服务器,我们只需要在一个用户执行完毕一个commit提交操作之后,让钩子程序去自动更新测试服务器的文件即可
。通过这个思路,我们需要作的就是建立一个post-commit的钩子。

  1. #!/bin/sh
  2. cd /usr/local/www/coolphp
  3. SVN=/usr/local/bin/svn
  4. export LANG=en_US.UTF-8
  5. $SVN update --username kokko --password 111111 --no-auth-cache

注意相关权限的设置…

  评论这张
 
阅读(647)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018