利用svn钩子hooks/post-commit实现代码自动部署

说明: 配置了台svn服务器,用来保存公司项目的代码,同时svn服务器也是一台web服务器。因此希望当我本地代码commit到svn服务器时,能够触发svn服务器的钩子hooks/post-commit将新版本的代码自动update到站点目录上去。 其实这样做,感觉有点傻。还不如直接把svn版本库指定到web服务器的站点目录下。而且这样,svn库一改,站点目录也马上就更改了。

svn 目录:/home/svn/dl_test/ 站点目录:/home/www/data/dl_test/

实现: 1.找到svn项目的hooks目录,这里是/home/svn/dl_test/hooks。目录中默认会几个对应操作的钩子模板,我们需要创建一个post-commit的文件。

2.新建post-commit,内容如下

#!/bin/bash
REPOS="$1"
REV="$2"
export LANG=zh_CN.UTF-8
echo "Code Deployed at `date "+%Y-%m-%d %H:%M"`" >> /home/svn/dl_test/hooks/deploy_log
/usr/local/subversion/bin/svn update --username ****** --password ****** /home/www/data/dl_test

3.修改post-commit权限

# chmod +x post-commit

4.Checkout一份代码到web服务器上

# cd /home/www/data
# /usr/local/subversion/bin/svn checkout svn://127.0.0.1/dl_test

5.测试 测试的话,我这里是在本地修改版本库,点commit,然后再看web(nginx)服务器上的数据是否更新来测试。

附录: 1.Warning: post-commit hook failed (exit code 255) with no output. 赋予post-commit文件可执行权限,文件第一行有没有#!/bin/sh,在Post-commit第一行不是#!/bin/sh开头也是出现255的

2.这样做,还有点问题。因为是在web服务器上checkout产生的版本库。会发现/home/www/data/dl_test里有.svn。听说这会有安全问题。考虑nginx配置下。

3.大数据量同步时,速度会变慢。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博文

Git 服务器搭建

接下来我们将以 Centos 为例搭建 Git 服务器。 1、安装Git $ yum install curl-devel expat-devel gettex...

39760
来自专栏重庆的技术分享区

详述前端安全问题及解决方案

CSRF攻击(cross site request forgery,跨站请求伪造)

52990
来自专栏帅小子的日常

redis的数据持久化方案

31150
来自专栏小狼的世界

SSH连接服务器并且拷贝文件

” Remote Host Identification Has Changed“

34350
来自专栏运维小白

2.8 创建和删除目录mkdir/rm

mkdir mkdir = make directory mkdir就是创建目录,不能级联创建目录 date 显示当前时间 mkdir -p ...

20990
来自专栏重庆的技术分享区

前端安全问题

21740
来自专栏码生

nginx python Django 集成总结之-nginx 安装与常用命令

在你的CentOS 7 服务器中使用yum命令从Nginx源服务器中获取来安装Nginx:

12410
来自专栏Jerry的SAP技术分享

如何给VirtualBox虚拟机的ubuntu LVM分区扩容

我在VirtualBox安装的ubuntu里安装Cloud Foundry时遇到错误信息,磁盘空间不够了:

38640
来自专栏玄魂工作室

CTF实战11 任意下载漏洞

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

18730
来自专栏GreenLeaves

Nginx学习系列三Nginx的启动、停止、修改配置文件后重启

第二步:通过mster进程的进程号进行关闭   kill -QUIT Nginx master进程号

21730

扫码关注云+社区

领取腾讯云代金券