【问题标题】:Azure DevOps Pull-Request: Additional commits in a existing Pull-Request trigger rebuilds, ignoring the Path filter in the Build PolicyAzure DevOps 拉取请求:现有拉取请求触发重建中的其他提交,忽略生成策略中的路径筛选器
【发布时间】:2020-08-28 11:25:24
【问题描述】:

如果代码库的一部分已更改,我已经创建了一个构建策略来运行 CI 管道。 我想从重新触发构建中排除文件。

在 README.md 文件中创建包含更改的拉取请求时,不会触发构建(如预期的那样)。

在创建包含其他文件更改的拉取请求时,触发了构建(如预期的那样)

在另一个文件中创建带有更改的拉取请求时,会触发构建,但是当我提交对 README.md 文件的更改时,它会导致当前构建失败并开始新的构建。 (没想到,我希望路径过滤器能够阻止重新构建,因为此构建应该忽略该文件)

似乎构建策略路径过滤器仅在创建拉取请求时才有效。

有没有办法在不触发重建的情况下将文件提交到现有的拉取请求?

【问题讨论】:

  • 试图理解:您是否将提交推送到源分支中此忽略路径中的文件,然后再次触发构建?
  • @jmuz3 是的,完全正确

标签: azure-devops azure-pipelines pull-request azure-repos


【解决方案1】:

根据你的描述,我可以重现这种情况。

这里是ticket关于这种情况的解释。

有没有办法将文件提交到现有的拉取请求,而无需 触发重建?

您可以参考上面票证中的解决方法。

另一种解决方法:您可以尝试在“构建验证”中将“触发器”设置为'手动'

在这种情况下,您可以在 Pull Request 中手动排队构建。

当新的提交提交到源分支时,当前构建可以继续运行而不会直接失败。

希望这会有所帮助。

【讨论】:

  • 谢谢,为什么票中不支持此功能的解释很有帮助,这是他们不想支持的边缘情况。将“触发器”设置为“手动”将解决这个问题,但我更喜欢将触发器设置为自动,因为它非常适合 95% 的拉取请求而没有这个问题
  • 票证上的这条评论也很有帮助:“实际上,我能够通过使用 CI 构建来解决它。现在 PR 构建不会创建提交;在 PR 完成后, CI 构建在分支中创建提交和自动完成 PR。再次感谢您花时间回复。"
【解决方案2】:

我无法解决在新提交上重建的问题。

但是,我可以解决我们的特定问题。我们的管道中有一个步骤可以生成文件并提交它们,这会触发重建。我添加了一个步骤,用于检查文件是否已添加并跳过再次提交生成的文件。

要检查文件是否已存在于拉取请求中,我使用以下命令:

git diff origin/master -- {filename} --exit-code --shortstat

【讨论】:

  • 嗨@Marco Amersfoort 非常感谢在这里分享的反馈!你可以accept answer,让其他人直接知道这很有帮助。
猜你喜欢
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多