如何進行存根版本控制?
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"})
您也可以在部署流水線的屬性中傳遞這些值。