Azure Devops 中拉取请求的构建策略是否可以使用在所述 PR 中更新的 yaml 文件?

Pål*_*vik 4 azure azure-devops azure-pipelines

我们将所有管道都签入了代码,但是如果我们在这些管道中更改了 PR,那么 PR 构建策略将与 MASTER 中的 YAML 文件一起运行,而不是我们想要签入 master 的文件。这基本上是一个僵局。

假设您要删除使所有 PR 失败的验证,因此您创建了一个 PR,但无法合并它,导致构建策略失败:P

PS:我知道我可以删除策略,完成合并,然后手动添加策略,但这并不是一个好的解决方案。

Rep*_*cak 5

使用您随后在 PR 策略中设置的预合并构建步骤创建一个单独的 yaml 管道。它将始终从创建 PR 的当前分支运行代码。

我们这样做:(都在同一个仓库中)

  1. build_steps.yml - 带有构建步骤的 Yaml 模板
  2. azure-pipelines-yml - 引用 build_steps.yml 以构建项目的主管道
  3. pre_merge.yml - 仅由 PR 请求运行的辅助管道,它引用了 build_steps.yml,因此构建中没有差异,如果发生变化,有两个地方需要更新。

整个 yaml 定义:

#pre_merge.yml
trigger: none #Pipeline should never trigger on any branches. Only invoked by the policy.

variables:
  - name: system.buildConfiguration 
    value: 'Release'

  - name: system.buildPlatform
    value: 'win10-x86'

  - name: system.debug
    value: 'false'

pool:
  vmImage: 'windows-latest'

name: $(SourceBranchName)_$(date:yyyyMMdd)$(rev:.r)

steps:
- template: build_steps.yml
Run Code Online (Sandbox Code Playgroud)

然后在你这样设置的策略中: 在此处输入图片说明

所有这些也适用于经典管道。您需要创建一个单独的预合并构建管道,该管道可以使用主构建管道中使用的步骤引用任务组。在这两种情况下,您都不必使用模板或任务组并手动创建步骤。但是,如果构建将来会发生变化,您有 2 个地方需要更新。