|
此版本仍在开发中,目前尚不被视为稳定版本。如需最新稳定版本,请使用 spring-cloud-contract 5.0.2! |
如何进行存根版本控制?
API 版本控制
版本控制到底意味着什么?如果你指的是 API 版本,那么有多种不同的实现方式:
-
使用超媒体链接,切勿以任何方式对API进行版本控制
-
通过请求头和URL传递版本
我们并不试图回答哪种方法更好的问题。您应选择适合您需求并能为您创造商业价值的方法。
假设您对API进行版本控制。在这种情况下,您应为所支持的每个版本提供尽可能多的契约(contract)。您可以为每个版本创建一个子文件夹,或将其附加到契约名称上——无论哪种方式最适合您。
JAR版本管理
如果您的意思是JAR文件中包含存根的版本,则主要有两种方法。
假设您正在进行持续交付和部署,这意味着每次通过流水线时都会生成一个新的 JAR 文件,并且该 JAR 文件可随时部署到生产环境。例如,您的 JAR 文件版本可能如下所示(因为其构建于 2016 年 10 月 20 日 20:15:21):
1.0.0.20161020-201521-RELEASE
在这种情况下,您生成的存根JAR应如下所示:
1.0.0.20161020-201521-RELEASE-stubs.jar
在这种情况下,您应在引用存根时,在application.yml或@AutoConfigureStubRunner内部提供最新版本的存根。您可以通过传递+符号来实现这一点。以下示例展示了如何操作:
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:8080"})
然而,如果版本控制是固定的(例如,1.0.4.RELEASE 或 2.1.1),则必须设置 JAR 版本的具体值。以下示例展示了如何为版本 2.1.1 执行此操作:
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:2.1.1:stubs:8080"})
开发或生产桩模块
您可以调整分类器,以针对当前开发版本的其他服务存根或已部署到生产环境的存根运行测试。如果您在达到生产部署时修改构建配置,将存根与 prod-stubs 分类器一起部署,则可在一种情况下使用开发存根运行测试,而在另一种情况下使用生产存根运行测试。
以下示例适用于使用存根开发版本进行的测试:
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:8080"})
以下示例适用于使用存根生产版本进行测试的情况:
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:prod-stubs:8080"})
您还可以在部署流水线中通过属性传递这些值。