SVN代码上线流程

简介:

为了确保维护svn代码的正确性,特制定上传代码流程如下:

开发人员开发:

开发人员本地分支----取得svn最新代码(根据前一天的最后tag合并)-----代码开发----提交分支。

合并时候注意事项,对于冲突的文件看是不是自己本地正在修改的文件,不是的话就按照诛仙的tag来覆盖,否则按照本地,最好提前解决冲突问题(不好操作的话就被分好自己本地代码,讲SVN代码拿过来,好好看一下冲突冲突的问题),这样在回合的时候就可以按照自己分支来操作了(当然我们也要看一下,以防止别人先合并)

开发人员代码合并:

开发人员本地svn主线---》取得svn最新代码---》从本人分支合并到本地svn主线---》提交到svn主线(小心谨慎的)

每周值班人员代码取得、本地编译增量包

取得上线列表----->检查svn开发人员提交日志---->取得最新代码---->值班人员打标签----->本地编译增量包

打标签的工作在检查后提交sa前进行,每次提交给sa都打个tag

这部分工作做种是自动化,经每次打包的文件放在固定目录下共sa使用,在打包后注意一些目录和文件不要打包进去一时占空间,而是冲掉网站的文件。

1.2.1小型公司代码上线

wKioL1iirTaz1GUyAAEndVjOzI0094.jpg-wh_50

现状:

此类公司一般有3-5个开发人员,程序多位PHP程序,直接通过FTP直接上传代码到线上服务器,随时随地上线更新

此上线方法存在的问题:

1.开发不经过测试人员测试,用户访问页面刷新后页面即改变,对用户体验比较差,如果开发写错了代码造成的影响就更大了。

2.大概百分之50以上的故障直接和开发程序代码相关(比如:开发1写错了一个循环代码,此时用户访问就能把服务器搞死)

3.网站出了问题一般是运维人员的问题(例如宕机)但这种情况下,问题大多strace可能有开发人员引起的

解决方案

1.开发人员需在个人电脑搭建LAMP环境测试网站代码,并且在办公室或IDC机房测试环境。

2.代码上线规定时间,例如:三天上线一次,如网站需经常更新可每天下午17点上线(看网站业务性质而定,原则就是影响用户最小)

3.代码上线之前需备份,网站程序除了问题方便回退,另外,上传代码时尽可能先传到临时目录,完整后MV过去。

4.由运维人员管理上线,对于代码的功能性,开发更在意,而对于代码的性能和服务的稳定,运维更在意,因此,运维上线这样更规范科学

1.2.2中型企业上线解决方案

规范运维人员操作步骤,制定统一的操作脚本,备份文件名称,备份文件路径。使操作人性化,统一化。

Web代码的上线流程演示图:

wKiom1iirabhTeBtAAC4lqvZjRM903.jpg-wh_50

1.2.3 大型企业上线解决方案

wKioL1iircbDBPhMAAEwG7ilOJc924.jpg-wh_50

提示:

特别是JAVA代码环境,上线时,有数台机器同时需要更新:

1.本地开发人员取SVN代码。当天上线提交到trunk,否则,长期项目单开分支开发,然后再合并上线(trunk)。

2.办公室内网开发测试环境时,有开发人员或配置人员通过部署平台jenkins实现统一部署,(即在部署平台上控制开发及其从SVN取代码,编译,打包,发布开发几包名如idc_dep.war)。

3.开发人员通知测试人员或仪器测试,没有问题后,大上tag标记。

4.配置管理员,根据上部的tag标记,checkout出代码,并配置好IDC环境的所有配置,执行编译,打包(mvn,ant)(php不需要),然后发布到IDC内的统一分发服务器

5.配置管理员或SA上线人员,把分发的内容图送到相关测试的服务器(报名:idc_test.war)然后通知开发测试。如果有问题向上回退。

6.如果没有问题,继续打好tag,此时,配置管理员,根据上步的tag标记,checkout出代码,并配置好IDC正是环境的所有配置,执行编译,打包(mvn,ant)(php不需要),然后发不到IDC内的同意分发服务器。

7.配置管理员或SA上线人员,把分发的内容推送到相关正式服务器(报名:idc_product.war),然后通知开发及测试人员进行测试,如果有问题直接发布回滚指令。

IDC正式上线的过程对于JAVA程序,可以是AB组分组上线的思路,即平滑下线一半的服务器,然后发布更新代码测试,五问题后,挂上服务器,同时在平滑下线另一半的服务器,然后发布更新代码测试(或者直接发布后就挂上线)

对于PHP上线的方法:发布时可以用发布到正式线临时目录,然后mv或更改link的方式发不到正式线目录,不需要重启。

对于java上线方法:需要分组平滑下上线(如从负载均衡上摘掉部分服务器),发布代码后,重启服务器测试。

注意事项:

wKioL1iirlOSQJSAAAKn9nHylP8837.jpg-wh_50

SVN上包含代码和配置

wKioL1iirtOQkhioAAEPmmlkm3o208.jpg-wh_50

上线单:


wKiom1iirwnQ2k9FAADuE5KjEpk375.jpg-wh_50

什么是平滑代码上线?

最简单的讲,平滑代码上线就在网站代码更新时,不影响正在浏览用户的正常浏览网页或其正在使用的其他相关应用。

平滑上线的概念解析

为了说清楚这个问题,我们还是举例说明。

wKiom1iir02DbO4pAAFvbhTfoKk965.jpg-wh_50

wKioL1iir2Xhyqb0AAFbuHo9qPQ668.jpg-wh_50

一些软件的平滑重启的方式

wKiom1iir4_R5_SOAACaLsXIfvk093.jpg-wh_50

门户网站是如何做到平滑上线的呐?

wKioL1iir7rAcmYLAADPAacwRYo911.jpg-wh_50

wKiom1iir9PxugqXAAGrPbBNjBo201.jpg-wh_50

集群后端分为两组:一组平滑下线一端,上传下线的代码进行测试。测试完毕平滑上线,然后在进行另一组下线进行上传代码。进行测试然后平滑上线










本文转自 妙曼  51CTO博客,原文链接:http://blog.51cto.com/yanruohan/1897645,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
程序员 Linux 开发工具
Git基本概念、工作流程及与SVN的对比
Git基本概念、工作流程及与SVN的对比
49 0
|
18天前
SVN 如何将分支代码合并回主干
SVN 如何将分支代码合并回主干
16 0
|
2月前
|
自然语言处理 Shell 网络安全
Liunx服务器搭建SVN服务,并通过钩子实现代码自动部署
Liunx服务器搭建SVN服务,并通过钩子实现代码自动部署
32 3
|
8月前
|
Java Android开发
eclipse中向svn提交代码冲突的解决
eclipse中向svn提交代码冲突的解决
|
9月前
|
Android开发
Android 中使用SVN恢复原来的代码
Android 中使用SVN恢复原来的代码
56 0
|
9月前
|
Android开发
Android中使用Tortoise SVN遇到代码被锁定的解决办法
Android中使用Tortoise SVN遇到代码被锁定的解决办法
75 0
|
SQL 运维 jenkins
测试思想-流程规范 SVN代码管理与版本控制
测试思想-流程规范 SVN代码管理与版本控制
106 0
亲测解决,IDEA-SVN无法更新代码。
为什么SVN update不能更新别人提交的代码?
亲测解决,IDEA-SVN无法更新代码。
SVN回滚代码时,提示冲突怎么办
SVN回滚代码时,提示冲突怎么办
67 0
SVN回滚代码时,提示冲突怎么办
|
网络安全 数据安全/隐私保护 Windows
基于阿里云搭建svn代码管理系统
使用阿里云服务器搭建svn代码管理系统并集成便于小组开发
基于阿里云搭建svn代码管理系统