{{< details >}}

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab,com, 私有化部署

{{< /details >}}

让作业更早开始使用 needs

您可以使用 needs 关键字在流水线中创建作业之间的依赖关系。作业一旦满足其依赖关系就会运行,而不考虑流水线的 stages 配置。您甚至可以配置一个没有定义阶段的流水线(实际上是一个大的阶段),作业仍然按正确的顺序运行。这种流水线结构是一种有向无环图。

例如,您可能有一个特定的工具或单独的网站作为主项目的一部分构建。使用 needs,您可以指定这些作业之间的依赖关系,极狐GitLab 会尽快执行这些作业,而不是等待每个阶段完成。

与其他 CI/CD 解决方案不同,极狐GitLab 不要求您在分阶段或无阶段执行流程之间进行选择。您可以在单个流水线中实现分阶段和无阶段的混合组合,仅使用 needs 关键字为任何作业启用该功能。

考虑如下的单一代码库:

./service_a
./service_b
./service_c
./service_d

这个项目可以有一个分为三个阶段的流水线:

build test deploy
build_a test_a deploy_a
build_b test_b deploy_b
build_c test_c deploy_c
build_d test_d deploy_d

您可以通过使用 needsa 作业彼此关联,而与 bcd 作业分开,从而改进作业执行。build_a 可能需要很长时间来构建,但 test_b 不需要等待,它可以配置为在 build_b 完成后立即开始,这可能会更快。

如果需要,可以让 cd 作业按阶段顺序运行。

needs 关键字也可以与 parallel 关键字一起使用,为您的流水线提供强大的并行化选项。

使用案例

您可以使用 needs 关键字在 CI/CD 流水线中定义几种不同类型的作业依赖关系。您可以设置依赖关系来收敛或发散,甚至重新合并(菱形依赖关系)。这些依赖关系可用于以下流水线:

  • 处理多平台构建。
  • 具有复杂依赖关系网络,如操作系统构建。
  • 拥有独立可部署但相关的微服务的部署图。

此外,needs 可以帮助提高流水线的整体速度并提供快速反馈。通过创建不会不必要地相互阻塞的依赖关系,您的流水线尽可能快速地运行,而不考虑流水线阶段,确保输出(包括错误)尽快提供给开发人员。