为了确保维护svn代码的正确性,特制定上传代码流程如下:
开发人员开发:
开发人员本地分支----取得svn最新代码(根据前一天的最后tag合并)-----代码开发----提交分支。
合并时候注意事项,对于冲突的文件看是不是自己本地正在修改的文件,不是的话就按照诛仙的tag来覆盖,否则按照本地,最好提前解决冲突问题(不好操作的话就被分好自己本地代码,讲SVN代码拿过来,好好看一下冲突冲突的问题),这样在回合的时候就可以按照自己分支来操作了(当然我们也要看一下,以防止别人先合并)
开发人员代码合并:
开发人员本地svn主线---》取得svn最新代码---》从本人分支合并到本地svn主线---》提交到svn主线(小心谨慎的)
每周值班人员代码取得、本地编译增量包
取得上线列表----->检查svn开发人员提交日志---->取得最新代码---->值班人员打标签----->本地编译增量包
打标签的工作在检查后提交sa前进行,每次提交给sa都打个tag
这部分工作做种是自动化,经每次打包的文件放在固定目录下共sa使用,在打包后注意一些目录和文件不要打包进去一时占空间,而是冲掉网站的文件。
1.2.1小型公司代码上线
现状:
此类公司一般有3-5个开发人员,程序多位PHP程序,直接通过FTP直接上传代码到线上服务器,随时随地上线更新
此上线方法存在的问题:
1.开发不经过测试人员测试,用户访问页面刷新后页面即改变,对用户体验比较差,如果开发写错了代码造成的影响就更大了。
2.大概百分之50以上的故障直接和开发程序代码相关(比如:开发1写错了一个循环代码,此时用户访问就能把服务器搞死)
3.网站出了问题一般是运维人员的问题(例如宕机)但这种情况下,问题大多strace可能有开发人员引起的
解决方案
1.开发人员需在个人电脑搭建LAMP环境测试网站代码,并且在办公室或IDC机房测试环境。
2.代码上线规定时间,例如:三天上线一次,如网站需经常更新可每天下午17点上线(看网站业务性质而定,原则就是影响用户最小)
3.代码上线之前需备份,网站程序除了问题方便回退,另外,上传代码时尽可能先传到临时目录,完整后MV过去。
4.由运维人员管理上线,对于代码的功能性,开发更在意,而对于代码的性能和服务的稳定,运维更在意,因此,运维上线这样更规范科学
1.2.2中型企业上线解决方案
规范运维人员操作步骤,制定统一的操作脚本,备份文件名称,备份文件路径。使操作人性化,统一化。
Web代码的上线流程演示图:
1.2.3 大型企业上线解决方案
提示:
特别是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上线方法:需要分组平滑下上线(如从负载均衡上摘掉部分服务器),发布代码后,重启服务器测试。
注意事项:
SVN上包含代码和配置
上线单:
什么是平滑代码上线?
最简单的讲,平滑代码上线就在网站代码更新时,不影响正在浏览用户的正常浏览网页或其正在使用的其他相关应用。
平滑上线的概念解析
为了说清楚这个问题,我们还是举例说明。
一些软件的平滑重启的方式
门户网站是如何做到平滑上线的呐?
集群后端分为两组:一组平滑下线一端,上传下线的代码进行测试。测试完毕平滑上线,然后在进行另一组下线进行上传代码。进行测试然后平滑上线