我们遇到了一个问题,有时 Azure DevOps 中的拉取请求不会自动合并,即使所有检查都通过了。
我们已经在目标分支上配置了策略(除了常规构建验证和最少审阅者之外),添加了必需状态和可选状态。两者都不使用迭代,并且仅在首次将状态发布到拉取请求时添加。只允许挤压合并。
构建验证管道在单独的阶段检查一些内容,并将所需的状态发布到拉取请求。如果不满足则会发布状态notSet,否则会成功。
webhook 已配置为每当审阅者投票发生变化时都会向 Azure 函数发送消息。此 Azure 函数将重新启动构建验证阶段,以便可以更新 PR 上的状态。
在管道的末尾,我们发布可选状态(状态为成功),而不等待响应。即使我们将所有 PR 配置为使用挤压合并自动完成,有时它也不会触发自动完成。我们最终得到一个拉取请求,它通过了所有检查,但没有合并到目标分支。
我注意到的是,可选状态是根据需要添加的,而不是被自动完成忽略。
在 PR 上再次将此状态检查设为可选将触发 PR 评估,然后完成合并。但这显然不应该是这样的。
是否有关于此问题的任何信息以及我们如何解决它以便我们的流程正常运行?
如果是
偶尔自动完成不起作用,这是由于可选状态检查变成必需的,您可以进入分支策略设置,确保没有其他人更改设置。如果设置正确,建议到开发者社区反馈,可能是潜在的bug。这是一个之前已修复的bug。