无论你是一个从事个人项目的开发者,还是一个从事关键任务平台的分布式团队的成员,在你的过程中走得太远之前,建立一个持续集成/持续交付(CI/CD)系统是非常值得你去做的。CI/CD过程可以在两个主要方面使你的项目受益。
- 允许开发人员专注于编码功能,同时让网站可靠性工程师(SRE)和其他DevOps专家来处理测试和部署。
- 建立在使用持续集成来验证你的构建的DevOps模型之上,它可以按需复制,而不必在特定的开发人员的桌面上运行。
而通过在至少一个简单的测试环境中加入持续交付,你可以确保没有任何需求被遗漏,你的应用程序可以无缝地部署到你指定的任何目标环境。
有大量的平台和软件产品,你可以用来支持你的CI/CD管道。有些,如 Jenkins,已经在几十年的发展中得到了磨练,并在无数的组织中得到了验证。其他的则是内置于源代码管理(SCM)平台,如 GitLab CI。
在这篇文章中,我们将研究 CircleCI,它是一个流行的软件即服务的CI/CD产品。我们将引导你完成为CircleCI设置CI/CD管道的整个过程。它包括以下几个步骤。
- 为我们的代码创建运行环境,以便我们可以用它来设置我们的CI/CD环境
- 用ActiveState和CircleCI配置文件更新项目的代码库
- 配置我们的CircleCI管道
- 做一个测试运行
如果你已经熟悉CircleCI和ActiveState,这个过程应该是相当简单的。否则,您需要首先在CircleCI和ActiveState平台上创建一个免费账户。
都完成了吗?让我们开始吧!
第1步:在ActiveState平台上设置您的运行时项目
在你开始使用CircleCI之前,你要确保你已经在 ActiveState平台上设置了你的运行时间 。注册是免费的,只需几分钟就能为您的项目创建Python环境。
在本教程中,我们将点击Set Up a New Project按钮,然后用下面所示的包为所有三个主要平台建立一个Python 3.8项目。(我本来想用一个更近的Python 3.9版本,但是macOS对Python 3.9的支持仍处于Beta阶段)。
图1:ActiveState平台上 "新项目页面 "的上半部分
图2:ActiveState平台上的 "新项目页 "的下半部分
点击创建运行时按钮 将创建一个新的公共运行时项目,可以从任何代码库访问。平台将显示一个配置页面,我们可以通过requirements.txt文件(将由pip作为构建的一部分加载)添加更多的依赖,或者通过一次一次添加软件包,以配置项目的特定代码库。你可以在平台文档中找到更多关于如何做到这一点的细节 。
提示:一旦你按照自己的喜好配置了项目,点击 提交按钮。平台现在将开始为你选择的架构构建运行时。这可能需要一些时间(点击下载构建标签观察构建的进度),但你需要等到这部分完成后再进行下一步。
第2步:将文件添加到GitHub上的代码库中
为了使CI/CD运行正常,我们需要向GitHub上的代码库添加两个文件。在这个博文演示中,我们将创建一个 在ActiveState的GitHub页面上的learn-python代码库的分叉 ,然后添加一对yaml文件。
- activestate.yaml - ActiveState的配置文件,它告诉系统在哪里可以找到我们在步骤1中创建的运行环境,以及要运行哪些测试。
- config.yml - CircleCI的配置文件,它告诉系统如何构建测试环境。
第一个文件是与ActiveState平台相关的配置。为了让代码库在ActiveState平台上引用正确的运行时项目,它需要一些细节。ActiveState构建工具希望有一个名为activestate.yaml的文件,它需要在资源库的根目录下。由于这是一个公共运行时,你不需要API密钥或类似的东西。
下面的activestate.yaml文件将适用于ActiveState的learn-python项目。
project: https://platform.activestate.com/vincepower/learn-python?branch=main
第二个文件是CircleCI的配置。这个文件告诉它如何处理这些代码,包括如何访问ActiveState平台和处理构建。你需要把它命名为config.yml,并把它放在一个叫做.circleci的目录中。
下面是一个样本config.yml文件,对同一个learn-python资源库有效。这引用了该版本库的一个分叉,以便我们可以添加CircleCI的配置。
version: 2.1
第3步:配置CircleCI
在你开始使用CircleCI之前,你需要 至少注册 一个免费账户(我们将在这个演示中使用)。如果您使用GitHub作为您的认证机制,CircleCI将能够自动找到您想利用的项目。否则,请在第一次登录时点击**"添加项目 "的大按钮**。
图4:CircleCI仪表板
接下来,你需要选择你想做的项目。在这种情况下,这将是我们添加CircleCI config.yml文件的Learn-python资源库的分叉。
图5:在CircleCI上添加一个新项目
然后,你需要选择添加config.yml文件的那个分支。在许多情况下,你可以使用默认的启动文件之一,但我们想利用ActiveState Platform的运行时构建功能。
图6:为我们的CircleCI管道选择分支
第4步 - 执行测试运行
点击Let's Go按钮将启动构建。它将很快完成,输出将显示你在config.yml文件中概述的所有步骤。
图7:CircleCI的成功构建
结论。CircleCI+ActiveState平台=优化的、更快、更安全的CI/CD
CI/CD对您的开发团队成功地、更快地交付产品的能力至关重要。无论您的产品是打包给客户自己安装,还是要部署到您的软件即服务(SaaS)产品内部管理的系统,CI/CD都有很多好处。例如,CI/CD提供的可重复性和灵活性允许你调整你的构建和部署管道,而不影响个别开发人员的工作流程,这将被证明是非常有价值的,一次又一次。它还将使您能够随着您不断增长的客户群而扩展,并确保您符合新的法规和要求。
虽然CircleCI提供了标准的方法来拉动你需要建立的每个环境的运行时间,但与ActiveState Platform合作有一些明显的优势,包括。
- 预构建的运行时环境比通过通常的 "一次一个包 "的安装方法从头开始构建一个新的运行时加载更快。
- 预制运行时还能确保避免依赖关系的混乱,确保(例如)Pip不会意外地从PyPI拉入一个名称相似的自定义依赖关系的版本。
- 由于ActiveState Platform作为每个人--从开发人员到QA到DevOps到Ops--的运行环境的单一、中央真理源,它消除了环境的不一致性,防止了 "在我的机器上运行 "问题的产生。
最后,由于ActiveState平台从经过审查的源代码中构建所有的运行时环境,你可以确信你的运行时比直接从公共资源库中提取预构建的、未签署的软件包要安全得多。
接下来的步骤。
- 注册一个免费的 ActiveState Platform账户 ,亲自尝试一下他们的CI/CD功能。
- 要了解ActiveState Platform如何与其他CI/CD系统(不仅仅是CircleCI)一起工作,请参考他们的 CI/CD资源页面。
- 想看看您的CI/CD实施与其他系统相比如何?看 看ActiveState的企业CI/CD状态2020调查的结果 。
- 想知道您如何更好地优化您的CI/CD实施?请 阅读《 优化您组织中的CI/CD实施》 白皮书。