Directed Acyclic Graph
Directed Acyclic Graph
版本历史
- 在 GitLab 12.2 中引入 .
- 在 GitLab 12.10 中 .
可以在 CI / CD 管道的上下文中使用有向无环图,以建立作业之间的关系,从而以最快的方式执行,而不管如何设置阶段.
例如,您可能拥有特定的工具或单独的网站,这些网站是作为主项目的一部分而构建的. 使用 DAG,您可以指定这些作业之间的关系,然后 GitLab 将尽快执行作业,而不是等待每个阶段完成.
与其他针对 CI / CD 的 DAG 解决方案不同,GitLab 不需要您选择其中一个. 您可以在单个管道中实现 DAG 和传统的基于阶段的操作的混合组合. 配置非常简单,只需一个关键字即可为任何作业启用该功能.
考虑如下的 monorepo:
使用 DAG,您可以将作业与_b
作业彼此关联,即使服务a
构建时间很长,服务b
也不会等待它,并且会尽快完成. 在这个非常相同的管道中, 和_d
可以单独放置,并且可以像任何普通的 GitLab 管道一样以分段的顺序一起运行.
DAG 可以帮助解决 CI / CD 管道中作业之间的几种不同类型的关系. 最典型的情况是,当作业需要展开或展开和/或合并回去时(钻石相关性),这可以解决. 当您处理多平台构建或复杂的依赖关系网时,例如在操作系统构建或可独立部署但相关的微服务的复杂部署图中,可能会发生这种情况.
此外,DAG 可以帮助提高管道的总体速度,并有助于提供快速反馈. 通过创建不会相互阻塞的依赖关系,您的管道将尽可能快地运行,而不管管道的阶段如何,从而确保开发人员可以尽快获得输出(包括错误).
使用定义作业之间的关系.
请注意, needs:
也可与parallel关键字一起使用,从而为管道内的提供了强大的选项.
- requirements and limitations.
- 相关的史诗 .
版本历史
通过 DAG 可视化,可以更轻松地可视化 DAG 中依赖作业之间的关系. 此图将显示管道中需要或其他作业需要的所有作业. 没有关系的作业不会显示在该视图中.
单击节点将突出显示其依赖的所有作业路径.
它部署在默认情况下启用的功能标志的后面. 可以选择为您的实例禁用它:
# Instance-wide
Feature.disable(:dag_pipeline_tab)
# or by project