SVN版本管理与代码上线架构方案

/ 0评 / 0

         SVN集中式,GIT分布式

访问方式:   

         独立访问:svn://

         http服务:http://  通过Webdav协议访问

                  单独安装svn+apache

                  csvn是一个整合的软件,带Web界面管理的svn软件

         本地直接访问 E:file://app/svndata/sadoc

档案库数据格式:

         BDB(一种事物安全型表类型)

         FSFS(一种不需要数据的储存系统)

缺点:   

         每次提交保留一个原始副本,svn数据库容量会暴增

         如果不能连接到SVN服务器,不可以工作

         不适合开源系统开发

优点:

         管理方便,逻辑清晰,符合一般人思维习惯

         易于管理,集中式svn服务器更能保证数据安全性

         代码的一致性非常高

         适合开发人数不多的项目

         普及度高,大部分软件配置管理的大学教材用的是svn和vss

svn安装:

         没有特殊需求 rqm安装

         实在不行       编译安装

         安装指令:yum -y install subversion

建立两个目录:

         mkdir -p /application/svndata         数据存储根目录

         mkdir -p /application/svnpasswd          用户及密码的权限目录

启动svn:

         svnserve

                  -d daemon mode

                  -r 指定根目录

                  --pid-file arg 存放进程号

         svnserve -d -r /application/svndata 指定数据存储目录

         ps -ef|grep svn 查看svn是否启动

         svn端口:3690

         netstat -lntup|grep 3690 or lsof -i :3690  查看3690端口

建立项目版本库:

         svnadmin create /application/svndata/sadoc 创建

调整配置文件:

         cd /application/svndata/sadoc/conf

         cp svnsever.conf svnserve.conf.ori  修改之前进行备份!

         anon-access=none      不让匿名访问  去掉# 修改12行

         auth-access=write     修改权限

         password-db =/application/svpasswd/passwd 修改指向目录  方便管理

         diff svnserve.conf.ori svnseve.conf 比较改动

         cp passwd authz /application/svpasswd/ 拷贝过去 作为模板

         进入目录       

         chomd 700 * 给予700权限

         vi passwd 编辑passwd文件 e:yth=yth123  添加用户 yth账号 密码yth123

                  更改svnserve.conf必须要重启

         vi authz   编辑权限配置文件 按照提示去写

         [<版本库:/项目/目录>]

         @<用户组名>=<权限>       ps:@代表组  组的写法:组名=成员,成员

         <用户名>=<权限>

         ps:用户必须存在

重启svn:

         pkill svnserve                             kill进程

         svnserve -d -r /applatiaon/svndata/              重启

windows客户端软件:

         TortoiseSVN

         访问方式:svn://ip/项目

         右键chenkout

         蓝色表示提交一个修改

         紫色表示新增一项

         深红表示删除或者替换

         黑色其他所有项

         用户名yth 密码123

linux管理:

         check out(co)        从源码库取出一个工作版本的拷贝

                  svn co svn://ip/项目/  /目录/ --username=username --password=lpassword

         updata  同理

调整utf-8:

         export LC-CTYPE="en_US.UTF-8"

本地目录提交到svn

         svn add a b  c dc e f g

         svn ci -m "提示"

         比较规范的svn结构 : trunk主干   branch分支  tag标记

将目录导入到svn中去:

         svn import /目录 file://application/svndata/...    -m"import"

把主干复制到分支:

         svn copy svn//ip/项目/trunk svn//ip/项目/branch/branch_cms_110329 - m "提示" --username=... --password=...

svn钩子:

         就是shell版本,是被某些版本库事件触发的程序。e:创建新版本或修改未被版本控制的属性。

         hooks下钩子模板

         写钩子脚本两个重点: 1.全路径

                          2.环境变量

         常用模板:post-commit       提交完成成功创建版本执行钩子

                  pre-commit     提交完成前触发执行该脚本

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

钩子生产应用场景举例:

         pre-commit:

                  限制上传文件扩展名及大小,控制提交要输入的信息等

         post-commit:

                  svn更新自动周知,邮件

                  svn更新触发checkout程序,然后实时rsync推送到服务器

         ps:windows处理过的脚本,用dos2unix 处理

小型企业上线解决方案

         直接通过ftp上线到服务器

         特点:发布快,及时,不经过测试,对网站用户体验差,影响大,用户作为测试

         架构方案建议:

                  1,充分测试

                  2,程序代码上线规定时间

                  3,代码上线本分,网站出问题方便回滚

                          严格更新:把应用服务器从集群节点平滑下线,然后更新

                  4,上线由运维人员管理,开发人员在意代码功能,运维更在意优化和稳定。网站宕机责任归运维,就要让运维上线。

中型企业上线解决方案:

         开发内部测试,测试组内外网测试,上线,

         重要升级:运维组备份

         有问题:运维组回滚

大型企业上线解决方案:

         ITIL,BSW规范

Svn中存放:程序代码,服务的配置,项目文档,设计文档,运维部署优化文档

平滑上 下线:在流量低谷,分组下线服务器,并将IDC测试环境挂到下线的服务中,让测试进行测试,没问题后上线。分两组上线,

上线时间1小时

 上线流程:

  1. 办公测试环境-idc测试环境-正式生产环境-所以环境中软件应该统一版本,尽量单一
  2. 开发团队小组办公内部测试环境测试,代码有问题返回给某开发人员重新开发
  3. 有专门的测试工程师,程序有问题,直接返回给开发人员,无问题进行IDC测试
  4. IDC测试由测试人员和运维人员参与,进行程序压力测试,有问题直接返回给开发人员,无问题进行线上环境上线。 

业务变更管理平台优点:

  1. 变更管理制度流程有利于业务稳定
  2. 保留变更业务历史,便于核查发现的问题
  3. 故障跟踪平台,有利于跟踪问题的解决进度,而不是半途而废
  4. 相关常用软件
    1. Jira
    1. Mantis

发表评论

电子邮件地址不会被公开。 必填项已用*标注