多作业管道总是签出相同的提交?

Multi job pipeline always checks out same commit?

我定义了一个多作业 azure 管道,其中每个作业都需要克隆和检出源 git 存储库。其中一些工作可能需要一段时间,所以我想知道是否每个工作总是克隆并检查 Git 分支的瞬时 HEAD version/commit 或管道触发提交被管道记住然后用于每项工作都是为了拥有一致的管道 运行.

我很确定。只能希望第二次是这种情况(并且从未见过任何其他情况)但我想知道是否有人可以向我指出一些正式确认它的 Azure 文档。

当管道排队时,将设置 ref。管道中的所有作业都将检查该引用。这是代理专门检查 ref 并使 repo 处于分离的 HEAD 状态的原因之一。

我找不到明确解释这一点的文档,但这就是它的工作原理。

在构建管道(YAML 和 Classic)中,默认情况下,管道中的每个作业都会检查触发当前管道的提交版本 运行。

在 YAML 管道中,如果您不希望作业检查提交引用,您可以将以下步骤添加为作业中的第一个步骤。

steps:
- checkout: none
. . .

@Jesse 和@Bright 都对

有一个 pipeline decorator 在第一阶段进行评估,以查找是否存在结帐任务。如果找不到该任务,则会将其作为作业的第一步动态插入。

如果您查看阶段的 top-level 日志并展开 作业准备参数:

,您可以看到管道装饰器

通过指定不同设置的结帐任务,可以防止此任务被注入:

steps:
- checkout: none