SVN持续部署

2 篇文章 0 订阅
2 篇文章 0 订阅

SVN持续同步远程测试服务器的WEB

一、部署环境

centos7.4

192.168.159.132:svn的服务器

192.168.159.131:同步的web

192.168.159.132:部署安装svn,过程如下

[root@svn-server ~]# yum –y install subversion   		#安装软件
[root@svn-server ~]# mkdir -p /home/svn/abcd			#创建目录
[root@svn-server ~]# svnadmin create /home/svn/abcd 	#创建新的repository(版本库):
创建版本库后,在这个目录下会生成3个配置文件:
[root@svn-server ~]# cd /home/svn/abcd/conf
[root@svn-server conf]# ls
authz  passwd  svnserve.conf
[root@svn-server conf]# vim svnserve.conf				#//下面5行注释打开
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository	

#svnserve.conf 文件, 该文件配置参数项分为以下5项:
#anon-access: 控制非鉴权用户访问版本库的权限。
#auth-access:  控制鉴权用户访问版本库的权限。
#password-db: 指定用户名口令文件名。
#authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
#realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件

[root@svn-server conf]# vim passwd		#修改口令文件
admin1 = admin1
admin2 = admin2
添加两个用户admin1,admin2;密码为admin1,admin2
[root@svn-server conf]# vim authz		#修改权限配置文件
[groups]								#定义组user1,里面admin1,admin2,组名可以自定义,用户名可以加多个,以逗号隔开
user1 = admin1,admin2		
[abcd:/]								#[abcd:/] //定义目录,此目录是项目abcd的根目录
@user1 = rw
[root@svn-server conf]# svnserve –d –r /home/svn
[root@svn-server conf]# lsof -i:3690
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
svnserve 103491 root    3u  IPv4 534579      0t0  TCP *:svn (LISTEN)s

二、脚本钩取

在创建的svn的hooks里面新建post-commit,

[root@svn-server hooks]# vim post-commit
#!/bin/sh
export LANG=en_US.UTF-8
WEB=/www/wwwroot/abcd
RSYNC=/usr/bin/rsync
LOG=/tmp/rsync_test_nokia.log
SVN=/usr/bin/svn
WEBIP="192.168.159.131"
$SVN update $WEB --username admin1 --password admin1

if [ $? == 0 ]
then
    echo ""     >> $LOG
    echo `date` >> $LOG
    echo "##############################" >> $LOG
    chown -R www.www /www/wwwroot/
    #同步代码从SVN服务器到WEB服务器 notes:by the key 
	$RSYNC -vaztpH --delete --timeout=90 --exclude='.svn' $WEB root@$WEBIP:/www/wwwroot >> $LOG
fi

WEB=/www/wwwroot/abcd #svn拉取到本地的目录

LOG=/tmp/rsync_test_nokia.log #日志

WEBIP=“192.168.159.131” #web的ip

$SVN update $WEB --username admin1 --password admin1 #SVN拉取本地命令

$RSYNC -vaztpH --delete --timeout=90 --exclude=’.svn’ W E B r o o t @ WEB root@ WEBroot@WEBIP:/www/wwwroot >> $LOG

#通过rsync同步到web目录下 rsync的命令详情

–delete 以SRC为主,对DEST进行同步。多则删之,少则补之。注意"–delete"是在接收端执行的,所以它是在exclude/include规则生效之后才执行的。

–exclude=’.svn’:指定排除规则来排除不需要传输的文件。同步时不同步".svn"

三、在本地svn一个仓库

[root@svn-server abcd]# cd /www/wwwroot/
[root@svn-server abcd]# svn checkout svn://192.168.159.132/abcd			
[root@svn-server hooks]# pwd
/home/svn/abcd/hooks
[root@svn-server hooks]# ./post-commit			#执行脚本

之后每次svn更新代码就会同步到远程web目录下面。如有问题欢迎留言。
如对你有帮助,来个一键三连!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值