专栏首页民工哥技术之路配置SVN的hooks功能自动更新代码

配置SVN的hooks功能自动更新代码

前言解读

用过SVN的小伙伴们,都应该知道hooks(钩子)这个功能,的确日常企业内部测试环境经常会用过这个“特殊”的功能,今天来聊一聊SVN hooks

为何而用?

传统的WEB网站代码发布基本依靠手工操作

大概的整个流程如下:

开发本地环境开发代码

提交SVN版本库

然后将本地环境代码使用工具上传至待发布目录

备份原WEB站点代码目录

发布新代码至WEB目录

基于这类重复操作的问题,为了提高效率,因此,引入了SVN hooks功能

配置SVN hooks

SVN安装这里就不赘述了,需要了解可参考以前的文章(如下链接)

https://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247484395&idx=1&sn=fa514768d628649a104b32ba140087e4&chksm=e91b66f7de6cefe1cee310357feb9e26f694de3809bb5b89917ebb17421e96598eb4dcda7fac#rd

安装完成,开始配置hooks功能

[root@centos ~]#cd /svndata/doc/hooks
[root@centos hooks]#ll
total 40
-rw-r--r-- 1 root root 1977 Jun  8 23:50 post-commit.tmpl
-rw-r--r-- 1 root root 1638 Jun  8 23:50 post-lock.tmpl
-rw-r--r-- 1 root root 2289 Jun  8 23:50 post-revprop-change.tmpl
-rw-r--r-- 1 root root 1567 Jun  8 23:50 post-unlock.tmpl
-rw-r--r-- 1 root root 3426 Jun  8 23:50 pre-commit.tmpl
-rw-r--r-- 1 root root 2410 Jun  8 23:50 pre-lock.tmpl
-rw-r--r-- 1 root root 2786 Jun  8 23:50 pre-revprop-change.tmpl
-rw-r--r-- 1 root root 2100 Jun  8 23:50 pre-unlock.tmpl
-rw-r--r-- 1 root root 2780 Jun  8 23:50 start-commit.tmpl

备份下配置文件

[root@centos hooks]#cp post-commit.tmpl post-commit
[root@centos hooks]#chmod +x post-commit

修改post-commit配置文件

[root@centos hooks]# vim post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
export LC_CTYPE="en_US.UTF-8"
export LC_ALL=
LOCALPATH="/svncode/test/"
WEBPATH=/usr/local/apache-tomcat-8.5.9/webapps/
DATE=`date +%F`
SVN=/usr/bin/svn
[ ! -d {LOCALPATH} ] && mkdir 
##update code 
SVN update {LOCALPATH} --username=test --password=test123
#backup web dir
cd /usr/local/apache-tomcat-8.5.9/webapps/
mv test test.${DATE}
##update code and restart Tomcat service
ln -s LOCALPATH  WEBPATH
cd /usr/local/apache-tomcat-8.5.9/bin/
./shutdown.sh
sleep 2
./startup.sh

备注:SVN服务器与WEB在同一台服务器上,如果分开,配置是需要有所变化的,以上配置供参考,但方法与步骤相同

测试访问

首先我们在WEB站点目录下更新下当前的代码,这个更新的动作相当于将SVN的代码目录在WEB目录下复制了一个“副本”

svn co svn://192.168.4.254:/doc/test /svncode/test/ --username=test01 --password=test123
[root@centos test]# pwd
/usr/local/apache-tomcat-8.5.9/webapps/test
[root@centos test]# ll
total 216
-rw-r--r-- 1 root root   1241 Jun 11 04:06 index.html
-rw-r--r-- 1 root root 142943 Jun 10 20:12 server.jpg
-rw-r--r-- 1 root root  68533 Jun 10 20:12 u.jpg

打开浏览器测试访问

接下来模拟开发修改相关代码文件,重新提交了代码至SVN版本库

重新打开浏览器测试访问页面是否更新?

代码自动更新至WEB目录完成

本文分享自微信公众号 - 民工哥技术之路(jishuroad),作者:民工哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-19

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mongodb数据库基础入门(一)

    Mongodb是一个基于分布式文件存储的数据库,由C++语言编写,为WEB应用提供可扩展的高性能数据存储解决方案

    民工哥
  • 14个Linux系统安全小妙招,总有一招用的上!

    对于互联网IT从业人员来说,越来越多的工作会逐渐转移到Linux系统之上,这一点,无论是开发、运维、测试都应该是深有体会。曾有技术调查网站W3Techs于201...

    民工哥
  • Linux系统组建SVN服务器

    SVN是一款非常优秀的版本管理工具,与CVS管理工具一样,SVN 是一种跨平台的开源的版本控制系统,它会备份并记录每个文件每一次的修改更新变动

    民工哥
  • 014.Docker Harbor+Keepalived+LVS+共享存储高可用架构

    共享后端存储是一种比较标准的方案,将多个Harbor实例共享同一个后端存储,任何一个实例持久化到存储的镜像,都可被其他实例中读取。通过前置LB组件,如Keepa...

    木二
  • Linux工作目录切换命令

    心跳包
  • 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kd...

    Michael阿明
  • 利用rbd命令把 ceph pool 中的一个镜像导出

    查看镜像 [root@node1 ~]# rbd ls images a56330e7-79d7-4639-a68f-366ac344bfe2 eccfee07...

    院长技术
  • Golang Leetcode 450. Delete Node in a BST.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/89175007

    anakinsun
  • 浏览器环境检测

    本文是直接把seleniumpyppeteer 以及正常打开浏览器 的环境差异直接列出来

    爬虫
  • 【趣学程序】Linux流的重定向

    趣学程序-shaofeer

扫码关注云+社区

领取腾讯云代金券