配置文件可能需要一些时间来设置,但在最初的推动之后,它们很容易被忘记。"如果它没有坏,就不要修 "是许多开发人员对他们的配置文件采取的常见方法。但是,当涉及到你的持续集成管道时,小的变化可以有巨大的好处。在CircleCI,我们推送新功能和更新的速度比以往任何时候都快,定期审查和更新您的配置可以大大减少工作流程的时间。
为了帮助那些投资于我们的支持计划的客户充分利用CircleCI,我们的DevOps客户工程(DCE)团队提供定期审查配置文件。DCE团队已经审查了数百个配置文件,并创建了一个可以用于任何项目的过程。在这篇文章中,我们将通过DCE的审查过程,使你能够进行自己的配置审查。你可以成为减少你的管道的反馈回路的人。想象一下,你的团队能够在补充咖啡的时间内推送代码并收到反馈,而不是在吃午饭的时间内。
什么是配置审查?
配置审查不仅仅是查看YAML文件。它应该被视为一个关键的过程,被规划出来,并被记录下来。我们建议选择一个项目,至少每年进行一次审查,如果不是每六个月一次,然后将结果记录在一份文件中,供团队其他成员查阅。记录基线指标、审查期间所做的工作和结果,可以说和审查本身一样有价值。有了这些信息,你的团队可以建立一个CI知识库,专门针对你的用例,可以用于未来的审查或新项目。
配置审查的主要目标是分析你的项目的配置文件,以确保管道在与你的指标目标相比较时运行得最好。我们的Insights仪表板是在这个过程中跟踪指标的一个好方法。如果你的团队使用另一个指标应用程序,你可以使用我们的Insights API将数据拉入其中。为您的团队进行配置审查,也是了解CircleCI如何工作的一个好方法。我们建议利用这个时间来记录功能如何与您的用例配合,以及它们如何为您的工作流程实施。
为配置审查做准备
在您深入审查您的配置之前,有几个重要的步骤,这将有助于确保您的审查是有效的。在准备阶段,你要选择一个项目来审查,确定你的审查目标,并建立一些基线指标,你可以用来衡量你的目标进展。
选择一个要审查的项目和工作流程
大多数团队有不止一个项目,审查多个项目的配置可能会让人不知所措。当DCE与客户一起审查他们的配置文件时,我们一起决定一个特定的项目来关注。选择一个项目的前三个原因是。
- 高信用消耗
- 工作流程持续时间长
- 过于复杂的配置
选择一个项目也有很多其他原因。也许它是其他项目的概念证明,一个很久没有接触过的项目,或者一个有相关指标的项目。
决定一个目标
在选择了一个项目之后,你要为审查决定一个目标。你是否希望通过减少工作流程的持续时间来提高开发人员的生产力?是否需要优化信贷消耗?也许你正在寻找自上次审查配置以来实施新的CircleCI功能。
无论你的团队选择什么目标,都要写下来,以便将来做审查的人可以了解审查使用的是哪种方法。
使用洞察力来收集基线指标
现在你已经设定了一个目标,你将如何知道你的审查过程是否成功?
CircleCI是为数不多的提供洞察力的CI工具之一,以了解您的团队的指标。使用Insights工具,您要收集项目和/或工作流程的四个关键指标。
- 持续时间
- 吞吐量
- 成功率
- 平均恢复时间
如果你想了解更多关于我们为什么认为这四个关键指标的信息,我们建议你阅读我们的《软件交付状况报告》(2022),在那里我们对它们进行了更详细的分析。
这些指标可能并不都是跟踪你的目标成功所必需的,但记下它们来设定一个基线是有帮助的。在对配置文件进行修改后,我们将采取更多的指标快照,并将它们与这个快照进行比较,以了解这些修改的效果如何。
这也是一个确定哪些指标对这个项目很重要的好时机。每个项目都是不同的,所以用来确定每个项目的成功的指标也会不同。如果你正在优化信贷消耗,那么持续时间是一个很好的指标,因为这直接影响到信贷。如果你的目标是整体效率,那么在关注持续时间的同时,你也要关注使用Docker执行器的作业的资源使用情况。
除了这四个关键指标外,可能还有其他的指标对个别工作流程很重要。其中许多指标,如故障测试和信用使用,都包含在Insights中。如果有你感兴趣的指标被添加到Insights工具中,请让我们知道它们。
审查您的CircleCI配置文件
一旦你确定了你的目标,并记录了你的基线指标,你就可以开始审查的内容了。如果你把审查作为一个机会,了解更多关于你的管道和/或CircleCI,建议你阅读下一节,以更熟悉你的团队的用例。如果你对你的团队的管道如何工作感到满意,请随意跳过前面的配置文件。
了解你的工作流程
如果你是CircleCI和/或你的团队的工作流程的新手,我们建议你从Insights仪表板开始审查项目。在审查配置时,对工作流程中预期的内容和它们的结果有一个大致的了解是很有帮助的。使用洞察力工具,你可以审查项目内特定工作流程和工作的指标。洞察力仪表板显示最近100个工作流程的运行情况,你可以调查任何外围的运行情况。也建议点击进入最近10个左右的工作流运行,以确保工作以一致的方式运行。审查每个作业的步骤、它们的输出和它们的个别指标,也有助于确定任何不一致的地方。
深入研究配置文件
在用户界面中打开配置文件将使您能够访问CircleCI自动提供的任何通知横幅或建议。不要觉得你需要先解决这些问题。把它们记下来,以便以后我们深入研究配置文件时使用。在整个审查过程中,记下与你的目标有关的变化,以及出现的任何问题及其答案。这也是注意任何可以解决的小问题的好时机,比如过时的注释或不一致的命名惯例。
在这一点上,如果你觉得更舒服,可以自由切换到你最喜欢的代码编辑器。你花时间设置这些颜色是有原因的。在审查过程中,我们将在工作流程/工作的用户界面和配置文件之间来回穿梭,所以把两者都打开是很方便的。如果你还没有,别忘了在用户界面中至少打开一次配置文件,以查看任何重要的通知。
配置文件布局
CircleCI的配置文件不需要对配置文件的版本、设置、orbs、作业或工作流有特定的顺序。这取决于你的团队,你想如何组织它们。然而,以下格式对许多团队来说是成功的。
- 配置文件版本(目前是2.1)
- 设置,如果你的团队使用动态配置
- 定制的逻辑,如。
- 宝石
- 命令
- 参数
- YAML 锚
- 工作
- 工作流程
- 提交触发的工作流
- 设置工作流以通过预定管道触发
定制的逻辑、执行器和轨道
配置文件版本和使用设置布尔值是非常直接的,所以让我们开始回顾CircleCI提供的各种定制选项,首先是定制逻辑。
定制的逻辑
定制的逻辑包括命令、参数、执行器和YAML锚。你很可能需要保留你目前使用的所有参数,但这是一个好主意,审查他们,看看另一个功能,如上下文,将是一个更好的选择。命令、执行器和YAML锚点我们可以做得更多。当你需要的时候,在配置文件中写上快速的定制是非常容易的,但是当你添加了一些之后,就会开始降低配置文件的可读性。这就是orbs可以提供帮助的地方。
符号
如果你的团队还没有使用orbs,它们会非常方便。本质上,它们是YAML逻辑的包,可以用命令访问,而不是在配置文件中写出完整的逻辑。有许多经过认证的和第三方的orbs已经可用,通过orb注册表进行搜索,看看哪些对你的技术栈有帮助,是一个好主意。
如果你的团队不愿意使用公共轨道,CircleCI也提供私人轨道,限制一个轨道只对你的组织可用。轨道对于从配置文件中提取冗长的代码、多次使用的代码或在多个项目中使用的代码是非常有用的。当你浏览你的配置文件时,考虑你可以把什么转移到一个轨道上。
如果你的团队已经在利用轨道,你要检查你正在使用的轨道是否有任何更新的版本。可能有额外的命令、工作或其他可用的功能,可以在轨道注册表的轨道页面中找到。
执行器
CircleCI提供了各种各样的执行环境选择,所以审查目前正在使用的执行环境可以是达到你的审查目标的一个好方法。
作为第一步,检查执行环境是否有更新是一个好主意。假设你的团队使用的是方便的Docker镜像,那么就去镜像库看看有什么更新。如果你的团队没有使用这些镜像,为什么不检查一下呢?它们有很好的缓存,可以减少启动时间。如果你正在使用另一个执行环境,你可以在配置参考文件中找到一个可用的选项列表,并检查任何更新。
在审查应该使用哪个执行器的同时,你可以确认当前使用的资源类是否适合这项工作。当使用Docker执行器时,CircleCI提供了监控作业生命周期内资源消耗的能力,这对审查的这个阶段很方便。你也可以在Insights的Job标签上看到多次运行的作业资源使用历史。我们希望在未来为其他执行环境添加同样的功能,但现在,如果你使用Docker以外的执行器,你需要自己在作业中添加资源记录。
默认情况下,新作业会使用较大的资源类,所以对于简单的作业,如linting或一个API调用,可以考虑降低资源类大小。我们建议总是在配置文件中设置你自己的资源类,而不是使用默认的。
作业和功能
每个工作都是独特的,所以很难提供关于如何在工作层面进行优化的一揽子建议。好消息是,CircleCI提供了相当多的可视性,以了解工作中发生的情况。你想先看哪项工作是由你决定的,但最终,你会想在用户界面中查看每项工作,以确认它是按预期工作的,并看看你是否可以根据你的配置审查目标来优化它。
首先,在CircleCI中打开作业,逐一审查每个步骤。审查工作的多次运行,以确认某些东西是否是一个异常值,这可能是有帮助的。用这种方法可以发现的一些常见的问题是。
如果减少持续时间是你的目标之一,那么研究一下引入或增加作业的并行性是一个好主意。与测试拆分一起使用,并行性可以大大减少持续时间,这取决于设置测试所需的时间。如果你的目标是信贷优化,考虑是否可以减少正在使用的容器的数量。
当你扫描你的作业时,你可能会发现相同的测试在不同的执行环境中被运行。为了帮助配置的可读性,考虑是否可以利用矩阵作业。你还可能发现,逻辑在不同的作业中被重复。这是另一个地方,orbs可以通过提取该逻辑,使其不仅适用于这个项目,也适用于整个组织。
根据你上次做配置审查的时间,可能已经发布了一些新的功能,你的团队可以利用。我们的公共路线图和我们的更新日志是很好的资源,可以看到最近有什么新的功能出来。虽然不是所有CircleCI的功能都可以在配置文件中找到,但另一个资源是配置文件参考,在这里你可以阅读任何你不熟悉的功能。
工作流程
与工作类似,工作流程往往是独特的。虽然有标准的工作流程,如构建-测试-部署,但每个组织都有自己的设置方法。就像工作一样,首先在CircleCI中打开工作流程。
当你审查工作流程时,有几个一般的提示要记住,主要是工作顺序对你目前的需求是否有意义。也许你可以通过更快失败或将较短的测试放在较长的测试之前,向你的开发人员提供反馈。你的一些工作可能是按顺序运行的,而它们可以并行运行。创建适合你的团队的需求可能需要一些实验,这也是可以的。洞察力仪表板提供了许多功能和指标,可以帮助你决定哪种工作流程设置适合你。
最后,如果你正在使用任何过滤或逻辑语句,你会想确认它们是否按预期工作。如果你没有使用这些功能,可以考虑把它们添加到你的工作流中,以帮助确保工作只在需要的时候运行,比如部署工作只在默认分支上运行。检查一下,看看它们是否适合你的团队。
发布审查
现在审查已经完成,还有几个步骤要做,但困难的部分已经完成。干得好!
归功于人
在你进行配置审查的时候,你的团队中有人可能已经实现了一些东西,为大家节省了时间。也许有一些逻辑在另一个项目中是有用的,而你却没有注意到。如果你确实发现了一些很酷的东西,请给实现它的人记功。每个人的工作都应该得到认可,包括你做的审查。
实施变化
在实施变化时,确定预期的结果是很重要的。如果你的团队决定增加某项工作的并行性,也许是一个好主意,可以单独测试这个变化,这样指标就不会被其他变化所掩盖。如果你发现有多个变化具有较小的预期结果,那么在测试时可以随意将这些变化分组。为这些变化创建一个测试分支,可以快速确定一个变化在短期内对指标的影响,并允许你测试各种程度的变化,如不同级别的并行性。
比较指标
无论你选择哪种方式来实施改变,使用Insights在改变前和改变后的固定时间段内获取指标都是一个好主意。一旦做出改变,建议在逐渐增加的时间间隔内对项目的指标进行快照。这不仅可以确认或反驳预期的结果,而且还可以让你监测任何指标的波动。
仍然不相信Insights可以帮助你审查和优化你的配置文件?看看我们的Insights团队如何使用Insights来执行他们自己的配置审查。
总结
在整个过程中,你已经学会了如何使用Insights来设置项目的目标,审查CircleCI配置文件,并实施改变以达到这些指标目标。我们已经发现,CircleCI提供了你所需要的一切,从洞察力到UI横幅建议,以帮助你在配置审查的旅程。我希望这里已经为你阐述了深入研究你的团队的配置文件的价值。
如果你走到了这一步,恭喜你!你可能已经注意到,这个过程可能会影响到你的团队。你可能已经注意到这个过程可能是相当复杂的,并对自己说,"我没有时间做这个,但我看到了好处。"好消息是,我们前面谈到的那些DevOps客户工程师可以为你的团队进行配置审查。我们的DCE已经做了大量的配置审查,并汇编了各种使用案例的最佳实践数据。除了配置审查,我们还提供许多增值服务,您的团队可以利用,包括帮助项目迁移到CircleCI和功能培训。如果您的团队想与我们的DCE会面进行配置审查,请随时联系我们的销售团队,以升级您的支持计划。