第 6 章 持续集成和持续部署 持续集成和持续部署
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
作者:诺亚诺亚
持续集成(CI)和持续部署(CD)对于现代软件开发生命周期流程至关重要。CI 系统会从 GitHub 等源代码控制系统克隆所考虑软件的代码库,将软件构建为二进制文件、tar 压缩文件或 Docker 镜像文件等工件,更重要的是,它还会对软件进行单元和/或集成测试。CD 系统将 CI 系统构建的工件部署到目标环境中。这种部署可以在非生产环境中自动进行,但在生产环境中通常需要手动审批。此类系统中更先进的类型是持续交付平台,它能自动完成向生产环境的部署步骤,并能根据从监控和日志平台获取的指标回滚部署。
真实世界案例研究:将维护不善的 WordPress 网站转换为雨果网站
前不久,一位朋友请我帮忙修复他们公司的网站。这家公司销售非常昂贵的二手科学设备,其库存是通过一个 WordPress 网站提供的,该网站经常被黑客攻击、性能糟糕或宕机数天。通常情况下,我尽量避免卷入这样的项目,但既然是朋友,我还是决定帮忙。你可以在这个Git 仓库中参考转换项目的代码。
GitHub 代码库中涵盖了转换过程的每个步骤。这些步骤包括
-
备份
-
转换
-
升级
-
部署
备注
故事的结局很有趣。在创建了一个防弹 "坦克 "网站之后,该网站拥有令人难以置信的性能、安全性、自动部署和令人难以置信的搜索引擎优化功能,它运行了数年,没有出现过任何漏洞或宕机。在我忘记这个项目很久之后,我收到了朋友的一条短信。我已经有几年没有和他联系了。他说网站瘫痪了,需要我的帮助。
我给他回了短信,问他这怎么可能。网站是通过亚马逊 S3 运行的,其正常运行时间为 99.999999999%。他回短信说,他最近把网站改回了 WordPress,因为这样 "更容易 "修改。我笑着告诉他,我不适合他的项目。俗话说,好心没好报。
我考虑过的一些要求是
-
它需要持续部署。
-
它需要快速运行和发展!
-
它应该是一个由云提供商托管的静态网站。
-
从 WordPress 转换到 WordPress 应该有一个合理的工作流程。
-
使用 Python 应该可以创建一个合理的搜索界面。
最后,我决定使用Hugo、AWS 和Algolia。总体架构如图 6-1 所示。
图 6-1. 使用 Hugo 进行持续部署
设置雨果
开始使用 Hugo 非常简单(请参阅Hugo 入门指南)。首先,安装软件。在我的 OS X 机器上,我是这样安装的:
brew install hugo
如果您已安装 Hugo,可能需要升级:
Error: hugo 0.40.3 is already installed To upgrade to 0.57.2, run brew upgrade hugo.
如果您使用的是其他平台,可以按照此处的说明进行操作。要验证是否正常,请运行hugo version :
(.python-devops)➜ ~ hugo version Hugo Static Site Generator v0.57.2/extended darwin/amd64 BuildDate: unknown
剩下要做的就是初始化雨果骨架应用程序并安装主题: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access