测试进阶之——通过 SVN 钩子技术实现测试版本自动发布

本贴最后更新于 1569 天前,其中的信息可能已经时移俗易

上篇文章学习了怎么在Linux系统下搭建SVN服务器,今天我们继续学习怎么通过SVN实现软件(如网站)测试版本的自动部署。

众所周知,软件需要不定期的发布版本,在测试环境,甚至一天一个测试版本,那有没有什么方便快捷的方法,让保存在SVN上的代码快速的发布到测试环境呢?答案是肯定的,不仅仅快速,而且是可以即时发布的——通过SVN的hooks技术(钩子技术)。

cd到hook目录,ls查看下文件列表:

image.png

上图可以看到有许多模板文件,逐个解释一下,其中

post-commit:提交完成,成功创建版本之后执行该钩子

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

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

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

pre-commit:在提交之前,执行该脚本

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

post-revprop-change:修改 revision 属性之后,执行该脚本

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

start-commit:在客户端还没有向服务器提交数据之前,执行执行该脚本

这就是SVN的钩子(hooks)技术。通过钩子技术,我们可以编写各种钩子脚本,那么SVN客户端在操作文件各环节(如提交、开始提交、加锁、解锁等)前后就会对应调用并执行这些钩子脚本,达到我们的各种目的。

现在想在每次提交完成后,就自动发布更新的代码到部署测试版本的目录下。那我们使用post-commit脚本
编写一个提交完成的钩子脚本

1:在Linux本机checkout一个工作副本到/home/lemon目录下,作为我们站点发布的目录

2:在hooks目录下新建脚本

vim /var/svn/lemon/hooks/post-commit,新建并编辑提交完成的脚本post-commit如下:
image.png

这里的svn update /home/lemon --username lemon1 --password 123456 表示当有提交完成的操作时,就更新/home/lemon副本。其中

--username lemon1 --password 123456 :表示使用该用户名、密码进行更新操作。

3:授执行权限

编辑完成的脚本暂时是没有执行权限的,使用**chmod +x post-commit **为脚本文件授执行权限。
执行完毕,可以看到脚本已经具备执行权限了

image.png

4:测试是否同步更新

在我们的另外一台主机checkout一个副本,新建一个文件hello.html,然后提交,模拟版本发布。然后cd到Linux的/home/lemon工作副本下,可以看到这个副本也同步更新了hello.html

通过以上步骤,我们就解决了不用手动在Linux下进行svn update操作,而是只要其他SVN客户端一有提交,subversion就会调用编写的钩子脚本,实现自动同步。

image.png

1 操作
happy 在 2020-08-06 16:47:19 更新了该帖
回帖
请输入回帖内容 ...