设为首页收藏本站

追梦Linux

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 705|回复: 1

利用SVN的POST-COMMIT钩子自动部署代码

[复制链接]

482

主题

485

帖子

16万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
168264

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2015-11-2 10:14:02 | 显示全部楼层 |阅读模式
最近配置了一台SVN服务器,用来保存自己一些小项目的代码。同时,SVN服务器也是一台前端的Web。所以希望利用SVN的POST-COMMIT钩子HOOKS,在提交代码的同时进行部署。
  具体的步骤如下:
  1、找到SVN项目的HOOKS目录。目录中默认会几个对应操作的钩子模板,我们需要创建一个post-commit的文件。
  2、post-commit的主要内容


  1.     #/bin/bash

  2.     REPOS="$1"
  3.     REV="$2"
  4.     WEB_PATH="/home/fltrpsrv2/www"
  5.     TEST_PATH="/home/apache/testx/www.h.cn"
  6.      
  7.     export LANG=zh_CN.UTF-8
  8.      
  9.     CURDATE=`date`
  10.     echo "Code Deployed By at $CURDATE" >> /home/fltrpsrv2/svn/www.h.cn/hooks/code_deploy_log
  11.     /usr/local/bin/svn update --username xxx --password xxx /home/apache/htdocs/ >> /home/fltrpsrv2/svn/www.h.cn/hooks/
  12.        code_deploy_log
复制代码

3、接下来需要我们首先Checkout一份代码到WEB的服务目录中。
  4、代码CO出来之后,可以进行post-commit脚本的测试了。因为svn的hooks执行的时候不带有任何的环境变量,所以我们不能通过简单的 ./post-commit 进行代码的测试。必须要使用sudo su 等命令切换到svn或者apache服务器运行用户下,用下面的方法进行测试
  1. env – ./post-commit
复制代码
  1. 这样,执行svn update 命令的用户就是svn或者apache服务器的运行用户,因此,我们需要保证代码的存放目录必须有对应用户的权限,否则,这个脚本是不能执行的。我就是因为这个权限的问题,耽误了很多时间。

  2. 关于权限问题,在SVN的官方站点中也有说明,大家可以参考后面的资料。

  3. 在Unix系统中,如果没有对应的用户,也可以使用c语言编写脚本的形式,并且赋予+S的权限来达到相应的目的,具体的查看附件中的资料吧。

  4. 补充,使用这个方法部署代码并不能够保证同步完成,执行 svn update 时,如果check出来的文件夹中存在和svn中重名的文件夹或者文件,会导致 update 失败,这一点需要注意。
复制代码
附:本人亲测钩子文件
游客,如果您要查看本帖隐藏内容请回复





关于svn版本管理控制可参照此文,版本控制系统SVN的分支开发

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

30

主题

39

帖子

2万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
25284

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2017-9-27 17:56:45 | 显示全部楼层
这个碉堡了

QQ|小黑屋|手机版|Archiver|追梦Linux ( 粤ICP备14096197号  点击这里给我发消息

GMT+8, 2019-9-16 22:06 , Processed in 0.177568 second(s), 33 queries .

Powered by 追梦Linux! X3.3 Licensed

© 2015-2017 追梦Linux!.

快速回复 返回顶部 返回列表