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

上篇文章学习了怎么在 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 svn://127.0.0.1/lemon /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 更新了该帖
回帖
请输入回帖内容 ...