这就是消费者驱动合约的本质——消费者在 API 中拥有重要的发言权!
作为一般规则,如果合同没有更改,则无需运行 Provider 构建,尽管目前在 Broker 中没有简单的方法来了解这一点(请参阅功能请求https://github.com/bethesque/契约经纪人/问题/48)。
至于解决方案,您可以使用以下一种或多种策略。
有效使用代码分支
当然,在消费者可以安全地发布之前,提供者对合同的新假设进行验证是非常重要的。在合并到 master 之前,对 Provider 进行分支测试。
但最重要的是 - 您必须与 Provider 团队密切合作!
使用源代码控制来检测修改过的合同:
如果您还将主协议文件签入源代码控制,则您的 CI 构建可以有条件地执行 - 如果合同已更改,您必须等待绿色提供程序构建,否则您可以安全地部署!
存储在单独的存储库中
如果您真的希望提供者保持控制,您可以将合同存储在由提供者管理的中间存储库或文件位置。我建议这是最后的手段,因为它否定了许多旨在促进的合作协议。
使用 Pact Broker Webhook:
我希望 Pact Broker 可以在合约发布时自动触发 Provider 测试,并在合约失败时通知消费者,但似乎并非如此。
是的,这可以使用Pact Broker 上的网络挂钩来实现。将新合同提交到服务器后,您可以立即在 Provider 上触发构建。
您可以设想此步骤与选项 1 和 2 一起使用。
有关此用例的更多信息,请参阅我们的常见问题中的在消费者团队与提供者团队不同的情况下使用 Pact 。