我在很多公司工作过,每个公司都有不同的环境,我最喜欢的有 5 个环境:
1)本地:基本上是你的机器。在这里,您甚至可以在要求同行评审之前对您的更改进行编码和测试。
2) 开发:如果由于某种原因您无法在本地测试您的代码(依赖关系问题主要是:“我的代码在我的机器中编译了 neves,但它在 Jenkins/Bamboo/Travis 中完美编译”),那么您将您的更改推送到您的功能分支在 Git 中并让 Bamboo 对其进行编译并将其部署到您可以测试的开发服务器(您仍然不确定它是否会工作,所以到目前为止还没有同行评审)。
3) 暂存:您认为您的代码有效并且您喜欢它的外观。您创建一个拉取请求是为了让您的同行在它被合并到主分支之前查看它。他们在这里发表评论并解决可能的问题,因为您对所做的更改更加确定 Bamboo 将其部署到更“稳定”的代码所在的 Staging 环境,并且更真实的数据存储在任何数据库中。部署后,另一位开发人员/测试人员可以检查您的更改是否真正有效,并使您成为“Staging Env 中的 QA Sign off”。
4) 稳定:好的,现在您完全确定您的更改在部署到 Staging 后可以正常工作,并且没有任何损坏。您将分支合并到 master,Bamboo 编译 master 并部署到稳定环境中的另一组服务器(在您完成部署到生产之前,没有其他人应该合并到 master,以避免合并不相关的合并)。此环境应该是生产、数据、代码和服务器条件的副本。在这里,您可以向经理、产品负责人或负责人展示您所做的更改,以在将其发送到生产之前验证您的工作。你得到了最后的批准,一切都很好,你满头大汗,你已经连续工作了 30 天来完成这个改变,你的妻子和你离婚了,但你非常有信心它会完美地工作。
5) 生产:客户连接以使用公司服务,或您的软件的最终版本发送给客户。在 Bamboo 中单击几下,即可将其部署到生产服务器或编译最终构建。它是绿色的,一切似乎都很好。你检查 Splunk 寻找错误,一切都很好,生活很好,你在离开前再喝一口咖啡,你开车回家,整个周末都和你的狗一起睡觉。
这是一个圆满的结局,因为拥有如此多的“测试”环境可确保质量,在每个人(不仅仅是您)完全确定更改正在发挥作用之前,不会对生产进行任何更改。