如何强制 Pact 生产者验证特定的合约版本?
How to force Pact producer to verify a specific contract version?
我有一个消费者生成了 Pact 合同的第一个版本,并将其上传到经纪人。生产者验证合同和验证已发布给经纪人。
现在我想续约。当我将更新后的合同发布给经纪人并随后 运行 生产者方面的验证时,它失败了,因为合同履行 API 尚未实施。我想先更新合约,发布它,避免破坏生产者构建(即不同步修改消费者和生产者)。
如何对 consumer/producer/contract 进行版本化,以便我可以在生产者中指定它当前与特定 consumer/contract 版本兼容?
我在 Maven 中使用 Pact JVM/Java(版本 3)。 pom.xml
中没有项目版本控制 - 它只是 1.0.0-SNAPSHOT
版本。 projectVersion
,在 Pact Maven 插件中配置的与 Maven 项目版本相同 - 1.0.0-SNAPSHOT
。
我应该和 projectVersion
和 tags
一起玩吗?我应该升级到 Pact 版本 4 并使用 consumer version selectors 吗?
所以我想你问的是如何有效地将 Pact 测试添加到你的 CI/CD 管道和功能开发工作流程中?
第一个文档解释了一般方法,(2) 是一个研讨会,您可以按照它来执行这些步骤(在 JS 中)。无论您使用什么语言,原则都是相同的(在您的情况下Java)。
然而,具体来说,您肯定需要使用标签来防止新功能 tags 破坏您的供应商主构建(例如 featureA
由消费者创建,不会破坏提供者例如,仅查找 production
和 development
)。
您可能还想查看未决协议(请参阅 https://docs.pact.io/pending and the 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。
我有一个消费者生成了 Pact 合同的第一个版本,并将其上传到经纪人。生产者验证合同和验证已发布给经纪人。
现在我想续约。当我将更新后的合同发布给经纪人并随后 运行 生产者方面的验证时,它失败了,因为合同履行 API 尚未实施。我想先更新合约,发布它,避免破坏生产者构建(即不同步修改消费者和生产者)。
如何对 consumer/producer/contract 进行版本化,以便我可以在生产者中指定它当前与特定 consumer/contract 版本兼容?
我在 Maven 中使用 Pact JVM/Java(版本 3)。 pom.xml
中没有项目版本控制 - 它只是 1.0.0-SNAPSHOT
版本。 projectVersion
,在 Pact Maven 插件中配置的与 Maven 项目版本相同 - 1.0.0-SNAPSHOT
。
我应该和 projectVersion
和 tags
一起玩吗?我应该升级到 Pact 版本 4 并使用 consumer version selectors 吗?
所以我想你问的是如何有效地将 Pact 测试添加到你的 CI/CD 管道和功能开发工作流程中?
第一个文档解释了一般方法,(2) 是一个研讨会,您可以按照它来执行这些步骤(在 JS 中)。无论您使用什么语言,原则都是相同的(在您的情况下Java)。
然而,具体来说,您肯定需要使用标签来防止新功能 tags 破坏您的供应商主构建(例如 featureA
由消费者创建,不会破坏提供者例如,仅查找 production
和 development
)。
您可能还想查看未决协议(请参阅 https://docs.pact.io/pending and the 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。