如何进行存根版本控制?
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
在这种情况下,您应该在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"})
还可以在部署管道的属性中传递这些值。