如何使你的CircleCI运行更快、更安全

294 阅读7分钟

无论你是一个从事个人项目的开发者,还是一个从事关键任务平台的分布式团队的成员,在你的过程中走得太远之前,建立一个持续集成/持续交付(CI/CD)系统是非常值得你去做的。CI/CD过程可以在两个主要方面使你的项目受益。

  • 允许开发人员专注于编码功能,同时让网站可靠性工程师(SRE)和其他DevOps专家来处理测试和部署。
  • 建立在使用持续集成来验证你的构建的DevOps模型之上,它可以按需复制,而不必在特定的开发人员的桌面上运行。

而通过在至少一个简单的测试环境中加入持续交付,你可以确保没有任何需求被遗漏,你的应用程序可以无缝地部署到你指定的任何目标环境。

有大量的平台和软件产品,你可以用来支持你的CI/CD管道。有些,如 Jenkins,已经在几十年的发展中得到了磨练,并在无数的组织中得到了验证。其他的则是内置于源代码管理(SCM)平台,如 GitLab CI

在这篇文章中,我们将研究 CircleCI,它是一个流行的软件即服务的CI/CD产品。我们将引导你完成为CircleCI设置CI/CD管道的整个过程。它包括以下几个步骤。

  1. 为我们的代码创建运行环境,以便我们可以用它来设置我们的CI/CD环境
  2. 用ActiveState和CircleCI配置文件更新项目的代码库
  3. 配置我们的CircleCI管道
  4. 做一个测试运行

如果你已经熟悉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阶段)。

ActiveState Platform - create new Python project

图1:ActiveState平台上 "新项目页面 "的上半部分

ActiveState Platform - create new Python project for windows, linux and macOS at the same time

图2:ActiveState平台上的 "新项目页 "的下半部分

点击创建运行时按钮 将创建一个新的公共运行时项目,可以从任何代码库访问。平台将显示一个配置页面,我们可以通过requirements.txt文件(将由pip作为构建的一部分加载)添加更多的依赖,或者通过一次一次添加软件包,以配置项目的特定代码库。你可以在平台文档中找到更多关于如何做到这一点的细节 。

提示:一旦你按照自己的喜好配置了项目,点击 提交按钮。平台现在将开始为你选择的架构构建运行时。这可能需要一些时间(点击下载构建标签观察构建的进度),但你需要等到这部分完成后再进行下一步。

Learn Python Runtime on the ActiveState Platform

第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将能够自动找到您想利用的项目。否则,请在第一次登录时点击**"添加项目 "的大按钮**。

CircleCI dashboard

图4:CircleCI仪表板

接下来,你需要选择你想做的项目。在这种情况下,这将是我们添加CircleCI config.yml文件的Learn-python资源库的分叉。

CircleCI project

图5:在CircleCI上添加一个新项目

然后,你需要选择添加config.yml文件的那个分支。在许多情况下,你可以使用默认的启动文件之一,但我们想利用ActiveState Platform的运行时构建功能。

CircleCI pipeline

图6:为我们的CircleCI管道选择分支

第4步 - 执行测试运行

点击Let's Go按钮将启动构建。它将很快完成,输出将显示你在config.yml文件中概述的所有步骤。

CircleCI run

图7:CircleCI的成功构建

结论。CircleCI+ActiveState平台=优化的、更快、更安全的CI/CD

CI/CD对您的开发团队成功地、更快地交付产品的能力至关重要。无论您的产品是打包给客户自己安装,还是要部署到您的软件即服务(SaaS)产品内部管理的系统,CI/CD都有很多好处。例如,CI/CD提供的可重复性和灵活性允许你调整你的构建和部署管道,而不影响个别开发人员的工作流程,这将被证明是非常有价值的,一次又一次。它还将使您能够随着您不断增长的客户群而扩展,并确保您符合新的法规和要求。

虽然CircleCI提供了标准的方法来拉动你需要建立的每个环境的运行时间,但与ActiveState Platform合作有一些明显的优势,包括。

  • 预构建的运行时环境比通过通常的 "一次一个包 "的安装方法从头开始构建一个新的运行时加载更快。
  • 预制运行时还能确保避免依赖关系的混乱,确保(例如)Pip不会意外地从PyPI拉入一个名称相似的自定义依赖关系的版本。
  • 由于ActiveState Platform作为每个人--从开发人员到QA到DevOps到Ops--的运行环境的单一、中央真理源,它消除了环境的不一致性,防止了 "在我的机器上运行 "问题的产生。

最后,由于ActiveState平台从经过审查的源代码中构建所有的运行时环境,你可以确信你的运行时比直接从公共资源库中提取预构建的、未签署的软件包要安全得多。

接下来的步骤。

推荐阅读

优化GitHub Actions中的CI/CD管线

降低Azure管道CI/CD的成本和复杂度