如何在CI/CD工作流中避免浪费时间和资源

86次阅读
没有评论

问题描述

在理想情况下,团队应该能够在每次提交时运行所有流水线,并自动部署到生产环境。然而,我不明白如何在使用资源方面最有效,以避免在即将被下一次提交覆盖的代码上浪费时间运行测试。如果构建或测试需要20分钟通过流水线,系统会”阻塞”。那么如何解决这个问题?当新代码被推送时,是否会取消测试/作业?如果是这样,那么如何一天多次部署?再加上对拉取请求或签署的需求。在能够自动化一切之前,可以采取哪些中间步骤?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

有效地利用资源

在CI/CD流程中,要有效地利用资源,可以将流水线分成不同的阶段,并使用拉取的方式(pull)而不是推送的方式(push)。

具体操作如下:
1. 将流水线划分为多个阶段,如构建(build)、测试(test)、部署(deploy)等。
2. 当新代码提交时,不立即触发单独的构建和测试,而是等待一段时间,将多个提交归并为一个构建。
3. 在每个阶段中,使用最新的成功构建进行操作,而不是针对每个提交都进行操作。

这样做的好处是,即使提交频率很高,也能够在较短的时间内进行多个提交的构建和测试,减少资源的浪费。

流水线运行与并行

在CI/CD流程中,流水线的运行是并行的,即使新的代码变化触发了新的流水线运行,之前的运行仍然会继续执行。

具体操作如下:
1. 每次提交触发流水线运行时,新的运行会与之前的运行并行执行。
2. 无论新的运行是否在之前的运行完成之前完成,只要运行成功,就会进行部署。
3. 正在进行的运行仍然能够提供有关集成到分支的变更质量的关键信息,这是CI/CD的主要目标之一。

不必担心新的运行会影响之前的运行,因为每次运行都有其独立的结果,不会互相影响。

手动介入与自动化

在传统的CI/CD流程中,虽然可以通过自动化部分流程来提高效率,但在某些阶段仍然需要人工干预。

具体操作如下:
1. 即使CI/CD流程中的大部分操作可以自动化,但仍然需要人工介入来修复和解除分支的阻塞。
2. 当出现问题时,人工介入可以更快地修复问题,避免阻塞分支。
3. 有些CI系统支持分支合并前的集中验证(gating CI),可以自动合并变更,确保分支保持始终可用。

在整个CI/CD流程中,自动化和人工介入是结合使用的,以确保流程的顺畅运行和问题的快速解决。

注意:本解决方案中的操作和建议适用于一般情况,不同的项目和组织可能需要根据具体情况进行调整和定制。

总结

在CI/CD工作流中,要避免浪费时间和资源,可以采取多种策略。将流水线划分为不同阶段,有效地利用资源,确保流水线的并行运行,结合自动化和人工介入等方法,都可以帮助团队更高效地进行持续集成和持续交付,提高软件交付的质量和速度。

正文完