azure - Azure Devops 中拉取请求的构建策略是否可以使用在所述 PR 中更新的 yaml 文件?
问题描述
我们已将所有管道检查到代码中,但如果我们在这些管道中提供更改的 PR,PR 构建策略将与 MASTER 中的 YAML 文件一起运行,而不是我们想要检查到 master 中的文件。这基本上是一个僵局。
假设您要删除使所有 PR 都失败的验证,因此您创建了一个 PR,但由于构建策略失败,您无法合并它:P
PS:我知道我可以删除策略,完成合并,然后手动添加策略,但这并不是一个好的解决方案。
解决方案
使用您在 PR 策略中设置的合并前构建步骤创建一个单独的 yaml 管道。它将始终从创建 PR 的当前分支运行代码。
我们这样做:(都在同一个仓库中)
- build_steps.yml - 带有构建步骤的 Yaml 模板
- azure-pipelines-yml - 引用 build_steps.yml 来构建项目的主管道
- 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
所有这些也适用于经典管道。您需要创建一个单独的合并前构建管道,该管道可以使用主构建管道中使用的步骤引用任务组。在这两种情况下,您都不必使用模板或任务组并手动创建步骤。但是,如果将来构建会发生变化,那么您有 2 个地方需要更新。
推荐阅读
- mysql - MySQL 上的 INTERVAL '0-0' YEAR_MONTH 是什么意思?
- actions-on-google - 在提示输出中包括会话存储日期和/或时间
- php - 开发我的 Web 应用程序时出现 EasyAdmin Bundle 问题
- excel - 没有为具有数值的字符串参数调用 UDF
- javascript - 如果文本进入下一行,则截断文本(调整窗口大小)
- node.js - 如何在nodejs中保存文件?
- react-native - 远程交互式推送通知 - 如何?
- react-native - 在 React Native 中向组件添加子组件
- c++ - 现代Cmake找不到Eigen库依赖
- javascript - 单击时滚动到 Kendo Grid 行 - 出现意外的 JavaScript 错误