如何处理提供商对消费者服务进行重大更改的工作流程?
How to handle the workflow where provider makes breaking changes to consumer services?
举个例子:
- 提供商更新现有消费者使用的字段。
- 提供商推送他们的更改,并在此提供商构建中触发提供商验证。
- 提供者验证测试所有标记为 'prod' 的消费者。
- 正如预期的那样,验证失败了,因为产品消费者仍然期待字段的未更改版本。
- 通知消费者服务,对他们的期望进行适当的更改,并将合同发布给经纪人。
- Webhook 触发提供商验证。
这是我迷路的地方。在提供者验证的这一步中,我们是否明确希望我们的提供者检查包含要用于提供者验证的更改的分支?因为如果我们在这里使用提供程序的生产版本,验证将失败,因为更改的字段尚不可用。
本指南解释了该过程并应为您阐明:https://docs.pact.io/pact_nirvana
但更一般地说,我认为您主要希望将重大更改添加到最初向后兼容的系统中,因此不需要这种耦合。所以首先,如果你是 changing/breaking API 中的一个字段,我会让消费者首先 stop 使用该字段(或者如果你可以使用 expand/contract 使用新行为添加新字段的方法)并将它们投入生产。那么更改 运行 所针对的分支无关紧要。但是,如果您不想那样做,上述文档中的 tagging/branching 部分应该会有所帮助。
举个例子:
- 提供商更新现有消费者使用的字段。
- 提供商推送他们的更改,并在此提供商构建中触发提供商验证。
- 提供者验证测试所有标记为 'prod' 的消费者。
- 正如预期的那样,验证失败了,因为产品消费者仍然期待字段的未更改版本。
- 通知消费者服务,对他们的期望进行适当的更改,并将合同发布给经纪人。
- Webhook 触发提供商验证。
这是我迷路的地方。在提供者验证的这一步中,我们是否明确希望我们的提供者检查包含要用于提供者验证的更改的分支?因为如果我们在这里使用提供程序的生产版本,验证将失败,因为更改的字段尚不可用。
本指南解释了该过程并应为您阐明:https://docs.pact.io/pact_nirvana
但更一般地说,我认为您主要希望将重大更改添加到最初向后兼容的系统中,因此不需要这种耦合。所以首先,如果你是 changing/breaking API 中的一个字段,我会让消费者首先 stop 使用该字段(或者如果你可以使用 expand/contract 使用新行为添加新字段的方法)并将它们投入生产。那么更改 运行 所针对的分支无关紧要。但是,如果您不想那样做,上述文档中的 tagging/branching 部分应该会有所帮助。