Skip to content
ADP
API Design PrincipleBETA

[ADP-24] 版本控制機制

簡介

在軟體開發領域中,語義化版本控制(Semantic Versioning,簡稱 SemVer)是一種被廣泛採用的版本控制方案,它提供了明確而簡潔的規則來分配和遞增版本號。本文件概述了在我們的 API 開發和發布過程中遵循語義化版本控制的強制要求。

我們將在 API 設計的不同主題中面臨版本控制,例如 API 版本控制、內容類型版本控制和事件版本控制。

什麼是語義化版本控制?

語義化版本控制(也稱為 SemVer)是一種版本控制系統,旨在傳達發布中底層變更的含義。版本號的格式為 主版本號.次版本號.修訂號,其中:

  • 主版本號的變更表示不兼容的 API 變更。
  • 次版本號的變更表示以向後兼容的方式添加功能。
  • 修訂號的變更表示向後兼容的錯誤修復。

版本格式

版本格式遵循以下模式:主版本號.次版本號.修訂號(例如,1.0.0)。

TIP

💡 在 API 版本控制中,另一種表示版本的方法是使用發布日期。這種方法仍然遵循語義化版本控制原則; 只有主要或次要變更才會影響發布日期。

例如:如果當前版本是 1.0.0,發布於 2024-01-01,並添加了一個向後兼容的功能,新版本可能是 1.1.0,發布日期為 2024-02-15。 對於破壞性變更,版本將是 2.0.0,並附帶相應的發布日期。

指導原則

  • 必須(SHOULD)遵循 SemVer:所有版本控制實踐必須(MUST)遵守語義化版本控制(SemVer)。
  • 在某些情況下顯示時可以(MAY)忽略修訂號:在某些場景中,可以(MAY)在顯示的版本中省略修訂號,前提是上下文清楚地表明只涉及次要或主要變更。
  • 在某些情況下顯示時可以(MAY)忽略修訂號和次版本號:在特定情況下,可以(MAY)在顯示的版本中省略修訂號和次版本號,特別是在傳達主要版本變更時,或當額外的細節對受眾來說不必要時。

實施細節

主版本號遞增

  • 當進行不兼容的 API 變更時,必須(MUST)遞增主版本號。
  • 不兼容的變更包括移除、重命名或以可能破壞現有客戶端的方式更改現有端點的行為。
  • 例如:如果當前版本是 2.4.3,而你引入了一個破壞性變更,新版本將是 3.0.0

次版本號遞增

  • 當以向後兼容的方式添加功能時,必須(MUST)遞增次版本號。
  • 這包括添加新端點、向現有端點添加新參數(只要它們是可選的),以及任何不破壞現有功能的其他添加。
  • 例如:如果當前版本是 2.4.3,而你添加了一個新端點,新版本將是 2.5.0

修訂號遞增

  • 當進行向後兼容的錯誤修復時,必須遞增修訂號。
  • 錯誤修復包括解決不影響 API 接口或添加新功能的問題,但改善當前版本的穩定性和性能。
  • 例如:如果當前版本是 2.4.3,而你修復了一個錯誤,新版本將是 2.4.4
  • 根據制定的策略,修訂號的變更可能會被省略。

參考資料