CD展望

最终,你的 CI 管道将运行良好,你可以完全信任它。如果部署顺利,你会发现自己做的手工检查越来越少。这时,你就可以考虑使用 CD:它描述了自动将代码部署到任何环境的工具和流程组合。

通常的工作流程是,每当变更合并到某个分支(例如,生产环境的主分支)时,CI/CD 管道就会自动触发。如果变更通过了所有检查和测试,那么该流程就会非常可靠,代码就会被部署到所需的目的地,而无需再手动测试构建结果。

如果你有机会在这样的环境中工作,你一定不会错过。除了一个优秀的 CI/CD 管道和 99% 的信任度之外,它还需要更多的流程,以便在部署出现问题时快速做出反应。即使是最好的工具也无法避免逻辑错误或基础设施问题,这些问题只会在更大的负载下出现。

一旦部署后出现问题,你的团队应该是第一个发现问题的人!你不仅需要完全信任管道,还需要完全信任监控和日志设置。现在有很多概念和工具,我们在此不再讨论代码质量,而是进入开发-运营(DevOps)和系统管理领域。不过,我们还是想就以下几个关键概念为你提供一些简短的指导:

  • 监控收集有关系统状态的信息。在我们的语境中,这通常是指中央处理器(CPU)负载、随机存取内存(RAM)使用情况或所有服务器或实例的数据库流量等信息。例如,如果 CPU 负载突然大幅增加,这就是一个很好的指标,说明前方有麻烦。

  • 日志记录可帮助你将应用程序产生的所有日志信息整理到一个易于访问的地方。当系统出现问题、所有警报都响起时,如果你需要先在不同的服务器上搜索任何日志文件,那就帮不上忙了。

  • 有多种部署方法可供选择。特别是当你的设置已经发展壮大并由多个服务器或云实例组成时,你可以只在几个实例甚至一个单独的部署环境中推出新代码,并监控那里的行为。如果一切顺利,就可以继续部署到其余实例。这些方法称为金丝雀部署、滚动部署和蓝/绿部署。本章末尾将提供一个链接,介绍有关这些方法的更多信息。

  • 无论你对软件的监控做得多好,如果出了问题(也会出问题),你都需要返回到应用程序的上一版本。这就是所谓的回滚。你应时刻做好准备,尽可能方便快捷地返回到以前的版本。这就要求你准备好多个先前版本的可交付成果。最好至少保留 5 个或 10 个版本,因为有时并不清楚到底是哪个版本导致了问题。

当然,CD 超出了编写简洁的 PHP 代码的范围。不过,我们认为这是一个值得追求的目标,因为它将大大加快你的开发速度,并向你介绍各种迷人的工具和概念。

总结

我们希望,读完本章后,你能和我们一样相信,CI 是非常有用的,因此是你工具箱中的必备工具。通过使用 GitHub Actions 构建一个简单但可行的管道,我们不仅在理论上而且在实践中解释了围绕这一主题的必要术语以及管道的不同阶段。最后,我们向大家介绍了 CD 的前景。

现在,你已经具备了编写优秀 PHP 代码的知识和工具基础。当然,学习永远不会停止,还有更多的知识等着你去发现,我们无法在本书中一一介绍。

如果你以开发 PHP 软件为职业,那么你通常会在开发团队中工作。即使你在维护自己的开源项目,你也会与其它人互动—​例如,当他们提交对你代码的修改时。CI 是一个重要的构建模块,但并不是成功组建团队所需要考虑的唯一因素。

对我们来说,这个主题非常重要,因此我们在接下来的两章中专门介绍了现代协作技术,这些技术将帮助你在团队工作时编写出优秀的 PHP 代码。希望我们能在下一章再见!

进一步阅读

如果你想了解更多信息,请查看以下资源: