公司代码上线流程

简介:

说一说,正常上线的流程

很多时候,经验是被痛苦逼出来的,流程是被错误逼出来的。在上线的过程当中,这段时间遇到了一些问题,造成了研发耽误了不少时间。原因是上线的不规范性以及没有任何的权限限制。

另外互联网项目版本开发都非常频繁。一天上线十几个小版本,也是有可能的。像我现在的公司,经常一天修改好多次文案,就需要不断的上线。如果处理不及时上线的话,会造成用户的一些误解,导致一些投诉以及不好的用户体验。这么频繁的修改上线,也是需要一定的流程和规范保证。

Git 代码管理

很多互联网公司都开始使用Git,替换了svn。Git非常适合互联网迭代以及多人多版本开发。如果让我说为什么喜欢使用Git,我喜欢切换分支,以及分支之间merge的方便快捷。

新建分支以及合并分支的便利性,会造成一些问题,分支不自然的就会过多。所以需要定时的需要删除一些过时的分支。

项目分支

一般来说,互联网项目有上线分支,预上线分支,测试分支,开发分支等.

保证不同的分支做不同的事情,防止分支污染。

  1. 上线分支,是发布到线上的分支,以这个分支为准,其他分支都是以这个分支为基础拉取。

  2. 预上线分支,在预上线环境当中,防止出错的最后一道保证。

  3. 测试分支,可能测试环境大家共用一套,所以把代码都merge到这里,然后发布。这样大家各自测试自己的,互不打扰。如果有多个测试环境的话,直接使用开发分支测试也是可以的。

  4. 开发分支,从上线分支拉取,根据需求修改的新分支。

开发流程

上面的这张图看起来有一点复杂。总体上来,可以分为这么几步。

  1. 第一步,需求来了之后,从上线分支拉取一个开发分支。

  2. 第二步,在开发分支进行开发,自测。

  3. 第三步,合并到测试分支,通知QA测试。

  4. 第四步,如果通过测试,合并到预上线分支,然后继续测试。如果不通过测试,进入第二步。

  5. 第五步,如果预上线测试通过,将预上线分支合并到上线分支。如果不通过测试,进入第二步。

  6. 第六步,上线,然后线上测试。如果通过测试,那么这个需求开发就结束了。如果没有通过测试,就撤回上线,然后进入第二步。

分支规范

  1. 测试分支以及预上线分支要定时清理,和上线分支同步。

  2. 上线分支以及预上线分支,merge权限保证在少数人手里。merge的时候,需要检查提交以及对线上的影响。

  3. 只能在开发分支修改代码,其他分支都是等着被merge.

  4. 提交之前,需要保证和上线分支没有冲突。

  5. 防止分支被污染,特别是受到测试分支污染。

流程规范之外

人是最难管理的,以及人是懒惰的。这些话是非常准确的,所以会遇到一下问题,还得需要解决。

  1. 需求改动非常小,是不是还得走整体流程。

  2. 我只是修改文案,是不是还得走整体流程。

具体怎么做,每一个公司和组都有自己的做法,是不是都必须都得走一遍流程。但是,分支规范是必须的,不能随意修改。直接在上线分支修改,坚决说NO!


















本文转自浅景尘51CTO博客,原文链接:http://blog.51cto.com/857803451/1948889 ,如需转载请自行联系原作者


相关文章
|
数据库 网络虚拟化
卧槽,VPN又断开了!!
最近,家里事情非常多,很长时间没上班了。偶尔会打开钉钉群看一下工作情况。结果今天下午打开钉钉一看,运营群炸锅了,很多人都在说:卧槽,又不能访问了,什么情况啊?断网了吗?系统崩
5827 2
卧槽,VPN又断开了!!
|
Ubuntu 测试技术 Linux
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
1233 0
|
5月前
|
人工智能 NoSQL Java
你的 AI Agent 为什么总是“失忆”?揭秘 Spring AI 中的记忆管理陷阱与破局之道
Spring AI Agent常“失忆”?根源在于:1)HTTP无状态导致上下文丢失;2)未显式配置ConversationMemory;3)工具结果未回写记忆。本文剖析三大原因,提供Redis分布式记忆、sessionId绑定、工具结果自动注入等实战方案,并介绍滑动窗口、摘要压缩等高级技巧,助你打造真正连贯、可信的智能体。(239字)
746 2
|
11月前
|
安全 数据库 数据安全/隐私保护
Python办公自动化实战:手把手教你打造智能邮件发送工具
本文介绍如何使用Python的smtplib和email库构建智能邮件系统,支持图文混排、多附件及多收件人邮件自动发送。通过实战案例与代码详解,帮助读者快速实现办公场景中的邮件自动化需求。
870 0
WK
|
开发者 Python
Python命名规范
Python命名规范为编写代码提供了一系列规则和约定,以增强代码的可读性、可维护性和一致性。其涵盖了项目、模块、包、类、异常、变量、函数及方法的命名方式,并强调了避免使用单字母命名、关键字和内置名称的重要性。遵循这些规范能够帮助开发者编写更清晰、统一且易懂的代码。
WK
1868 2
|
存储 缓存 NoSQL
Redis内存管理揭秘:掌握淘汰策略,让你的数据库在高并发下也能游刃有余,守护业务稳定运行!
【8月更文挑战第22天】Redis的内存淘汰策略管理内存使用,防止溢出。主要包括:noeviction(拒绝新写入)、LRU/LFU(淘汰最少使用/最不常用数据)、RANDOM(随机淘汰)及TTL(淘汰接近过期数据)。策略选择需依据应用场景、数据特性和性能需求。可通过Redis命令行工具或配置文件进行设置。
402 2
|
Java 程序员 数据库
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)
【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)
|
Web App开发 测试技术 iOS开发
一篇文章讲明白locust性能测试
一篇文章讲明白locust性能测试
676 0
|
消息中间件 JSON 资源调度
深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust
深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust
52072 4
深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust
|
Web App开发 API
Chrome浏览器支持直接读写本地文件了
Chrome浏览器支持直接读写本地文件了
5043 1
Chrome浏览器支持直接读写本地文件了