如何进行 Stubs 版本控制?
API 版本控制
版本控制的真正含义是什么?如果参考 API 版本,则有 不同的方法:
-
使用超媒体链接,并且不要以任何方式对您的 API 进行版本控制
-
通过标头和 URL 传递版本
我们不试图回答哪种方法更好的问题。你应该选择任何东西 满足您的需求,并让您产生业务价值。
假设您确实对 API 进行了版本控制。在这种情况下,您应该提供尽可能多的合同,以及您支持的版本。 您可以为每个版本创建一个子文件夹,也可以将其附加到合同名称 - 任何最适合您的方式。
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
在这种情况下,您应该在 or
引用存根,提供存根的最新版本。您可以通过传递 sign 来做到这一点。下面的示例演示如何执行此操作:application.yml
@AutoConfigureStubRunner
+
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:8080"})
但是,如果版本控制是固定的(例如, or ),则必须设置 jar 的具体值
版本。以下示例显示了如何为版本 2.1.1 执行此操作:1.0.4.RELEASE
2.1.1
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:2.1.1:stubs:8080"})
开发或生产存根
您可以操作分类器以针对当前开发版本运行测试
其他服务的存根或部署到生产环境的服务。如果您更改
您的构建,用于在投入生产后使用 Classifier 部署 stub
部署中,您可以在一种情况下使用开发存根运行测试,在另一种情况下使用生产存根运行测试。prod-stubs
以下示例适用于使用存根的开发版本的测试:
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:8080"})
以下示例适用于使用存根的生产版本的测试:
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:prod-stubs:8080"})
您还可以在部署管道的属性中传递这些值。