我有一个消费者生成了Pact合同的第一个版本,并将其上载到经纪人。生产者验证了合同和验证已发布给经纪人。
现在我想延长合同。当我将更新的合同发布给经纪人并随后在生产者端运行验证时,由于尚未实现合同履行API,因此它失败了。我想先更新合同,然后发布它,并避免破坏生产者的构建(即不要在锁步中修改消费者和生产者)。
如何对消费者/生产者/合同进行版本管理,以便我可以在生产者中指定它当前与特定的消费者/合同版本兼容?
我在Maven中使用了Pact JVM / Java(版本3)。 pom.xml
中没有项目版本控制-只是1.0.0-SNAPSHOT
版本。 Pact Maven插件中配置的projectVersion
与Maven项目版本-1.0.0-SNAPSHOT
相同。
我应该玩projectVersion
和tags
吗?我应该升级到Pact版本4并使用consumer version selectors吗?
答案 0 :(得分:0)
所以我想您是在问如何有效地将Pact测试添加到CI / CD管道和功能开发工作流程中?
第一个文档解释了一般方法,而(2)是一个可以实施这些步骤的研讨会(在JS中)。无论您使用哪种语言(以Java为例),其原理都是相同的。
但是,具体来说,您肯定需要使用标签来防止新功能tags破坏您的提供商的主要构建(例如,由消费者创建的featureA
不会破坏仅看起来是例如production
和development
。
您可能还希望查看待处理的协议(请参阅https://docs.pact.io/pending和https://docs.pact.io/implementation_guides/jvm/provider/junit5/#pending-pact-support-version-410-and-later),这是一个较新的功能,可以防止新合同破坏提供者。
版本
因此,您需要在代码中添加更多特定版本,以有效利用Pact(以及代理提供的工作流程)。您可以使用pact.provider.version
系统属性(例如System.setProperty("pact.provider.version", "some git sha");
)进行指定
我们recommend在该版本中使用您的版本控制SHA。