加快CI/CD构建的5种方法

185 阅读5分钟

如果你实行持续集成,你就需要依靠CI/CD管道来构建、测试和打包你的产品。这意味着你的CI/CD构建的速度直接影响到软件开发的速度--如果你的CI/CD管道运行得更快,那么生产力将会提高。

多快才算快?1999年,Kent Beck在具有里程碑意义的《*极限编程解释》*一书中,将标准设定为最长10分钟。所有的事情--从构建到部署--都应该在这个时间范围内发生。

你的构建达到标准了吗?如果你需要帮助来加快它,这里有五种方法可以使你的CI/CD构建更快。

1.使用更强大的机器

CI/CD管道就像一列火车:它接收你的代码并提供一个可部署的包。给火车增加马力,它就能在更短的时间内完成更多的工作。当你的CI机器拥有更多的内存和CPU时,也会发生同样的情况;通过垂直扩展,你会发现受处理器约束的任务,如构建可执行文件、构建Docker镜像或执行端到端测试,运行得更快。

如果你的CI/CD是在内部运行的,那就要靠你来进行硬件升级了。有了基于云的CI/CD平台,如Semaphore,选择一个更强大的机器就像改变一个设置一样简单。

还有第三个选择:在更精细的基础上混合不同类型的机器。你可以通过自我托管的代理实现这一点。有了自我托管的代理,你可以选择哪台服务器,无论是在云端还是在内部,来运行管道的每一部分。例如,你可以在一个强化的内部服务器上执行构建,并在许多小型云虚拟机上并行测试。

2.增加并行化

提高CI/CD时间的另一种方法是将负载分散到许多机器上,这也被称为水平扩展。基于云的平台,如Semaphore,可以实时配置机器,所以学习如何设置你的管道以利用并行化的优势,对于获得快速构建至关重要。

并行化是改善构建时间的最快方式。不过,它也是有代价的,因为更多的机器意味着更高的费用。你可以通过运行你自己的服务器来管理成本,无论是在内部还是在云端的自我托管代理。你甚至可以根据需要使用Semaphore维护的AWS自动缩放器来旋转和关闭服务器。

3.使用人工制品和缓存

缓存和工件是两种类型的存储功能,可以极大地加快你的构建时间。

缓存是作为临时存储的意思。它有三个决定性的特点。

  • 它是免费的。
  • 它的大小限制是每个项目大约9.6GB。
  • 它有1个月的到期时间。

缓存加快了构建时间,因为你不必每次运行都从互联网上下载文件。由于旧文件在需要时被自动删除,它的主要目的是保留依赖性,如node_modules 文件夹或中间构建文件。

另一方面,Artifacts就像S3桶。它们是作为持久性或半持久性的存储,以保持数据和可执行文件更长的时间。虽然在目前的测试期是免费的,但工件最终将按使用量收费。

有三类工件,允许你选择一个最佳的保留政策。

  • 工作工件:用于收集特定的工作数据,如调试信息、日志和用户界面截图。
  • 工作流工件:适合于将数据和构建从一个工作传递到另一个工作,允许你构建一次,测试多次。
  • 项目工件:用于存储最终的交付物。

4.优化测试

一个测试套件可以很容易地包含成百上千个测试,所以这是大部分CI/CD时间花费的地方。测试的麻烦在于,增加更多的力量并不总是有帮助。这就像在拥挤的城市中驾驶跑车--马力并不能让你忽视交通。

解决办法是调试和优化测试。为此,我们必须首先确定缓慢或不稳定的测试,这说起来容易,做起来难。找到管道中的瓶颈的最简单方法是配置测试报告,它为你提供关于所有运行中的作业的汇总统计数据。

然而,识别缓慢的作业只是计划的第一步。为了消除它们,你应该。

  1. 决定是否真的需要测试。
  2. 在作业上运行剖析器,看看是什么导致了速度减慢。
  3. 一旦发现问题,优化作业以消除瓶颈

5.改变CI/CD解决方案

如果,尽管你做了所有的努力,构建仍然很慢,这可能不是你的错。这可能是你使用了错误的工具。

有许多CI/CD解决方案可供选择,有不同的功能和使用情况。有些,如Jenkins,需要你设置、配置和管理硬件。你要对系统的可靠性负责,并随着你的项目的增长而扩大系统的规模。虽然这允许你有很大程度的控制,但在某些情况下你可能没有时间或倾向于微观管理一切。

其他CI/CD解决方案,如Semaphore,是基于云的。不需要管理;你可以注册并立即开始工作。这些解决方案是最快和最灵活的,因为它们可以根据需要自动扩大规模。

保持你的构建速度

加快你的CI/CD构建速度绝不是白费力气。相反,从管道中减少的每一秒钟都会因你提交代码到存储库的频率而增加,这意味着在一个典型的星期中会有许多生产时间被回收。

保持你的CI/CD管道运转良好和快速,将确保你的开发团队达到其最大潜力。

The post5 Ways to Run Faster CI/CD Buildsappeared first onSemaphore.