{{< 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 |
您可以通过使用 needs
将 a
作业彼此关联,而与 b
、c
和 d
作业分开,从而改进作业执行。build_a
可能需要很长时间来构建,但 test_b
不需要等待,它可以配置为在 build_b
完成后立即开始,这可能会更快。
如果需要,可以让 c
和 d
作业按阶段顺序运行。
needs
关键字也可以与 parallel
关键字一起使用,为您的流水线提供强大的并行化选项。
使用案例
您可以使用 needs
关键字在 CI/CD 流水线中定义几种不同类型的作业依赖关系。您可以设置依赖关系来收敛或发散,甚至重新合并(菱形依赖关系)。这些依赖关系可用于以下流水线:
- 处理多平台构建。
- 具有复杂依赖关系网络,如操作系统构建。
- 拥有独立可部署但相关的微服务的部署图。
此外,needs
可以帮助提高流水线的整体速度并提供快速反馈。通过创建不会不必要地相互阻塞的依赖关系,您的流水线尽可能快速地运行,而不考虑流水线阶段,确保输出(包括错误)尽快提供给开发人员。