簡化 Spring Cloud Release Train

發布 | Spencer Gibb | 2019 年 7 月 24 日 | ...

Spring Cloud 持續證明其極受歡迎,並且在過去幾年中,許多 IaaS 提供者已提供與其技術的整合,並加入了 Release Train。 這通常涉及進入 spring-cloud GitHub org 並在 org.springframework.cloud Maven groupid 中發布。 隨著包含的專案數量看起來會增加,它變得有點難以管理,我們希望退一步並審查此模型提供的優缺點,並提出一個更好的前進方向,使所有相關專案受益。

加入 Release Train 的最大缺點可能是它移除了專案維護者的一定程度的控制權。 由於核心 Spring Cloud 團隊執行發布,因此維護者無法根據他們整合的技術的時程表工作。 即使他們確實設法發布了服務更新,在下一個 Release Train 版本發布之前,它也不會被 Release Train 採用。 這種模式也意味著,通常專案維護者無法直接存取關鍵統計數據,例如他們專案的 Maven 下載次數。

此外,加入 Release Train 似乎有很多好處,但事實上,其中許多好處是任何專案都可以獲得的,而不是與在 Train 上或在 spring-cloud GitHub org 中有任何關係。

  • Spring Cloud 團隊定期與外部專案合作,以協助審查它們,並提供有關如何最好地與 Spring Cloud 整合的建設性回饋。 加入 Release Train 並不會使這種情況更有可能或更不可能發生。 (如果您需要回饋,請與我們聯繫。)
  • 有一種感覺認為,它可以更容易地在 start.spring.io 上獲得那個難以捉摸的核取方塊。 這並非事實。 有關如何確保專案開發得適合 start.spring.io,有guidelines,但是關於包含的決定是基於比遵循命名方案更多的因素。 我們是否發現社群正在接受該專案整合的技術? 該專案是否建立了充滿活力且可持續的社群,以確保長期的生命週期和健康的程式碼庫? 是否有足夠的文件、指南等,說明如何使用該專案? 指南中沒有任何內容要求包含在 Spring GitHub 組織中。
  • Spring 團隊定期製作涉及第三方專案的內容,重點介紹關鍵發布或增強功能。 無需加入 Release Train 即可實現此目的。

https://spring.dev.org.tw 網站顯然包含涵蓋主要 Spring Cloud 專案的內容,但它也包含涵蓋某些第三方專案的內容。 這可能是一個說明如何使用該技術的指南,或是在現有專案頁面上的一個條目。 請參閱 https://spring.dev.org.tw/projects/spring-cloud,其中提到了許多專案 - 其中一些在 Train 上,而另一些則不在。

由於這些原因,Spring Cloud 團隊已決定轉向一種精簡 Release Train 的模型,使我們能夠解決缺點,同時保留所有感知到的好處。 該提案是 IaaS 提供者將在其自己的 GitHub 組織中託管和維護其程式碼。 這適用於目前在 Release Train 上的所有現有整合。 Spring Cloud Azure 從未加入 Train,並且 Spring Cloud Alibaba 團隊已經採用這種新模型,因為他們從孵化器組織畢業。

這在實務上意味著什麼?

從 Spring Cloud GitHub 組織和 Release Train 中刪除其中一些專案,並不表示主動開發或支援政策發生了變化。 相同的團隊將致力於這些專案,並與 Spring Cloud 的發布保持同步。 如果有什麼不同的話,這種變化可能會使支援模式更加清晰:如果專案託管在 IaaS 提供者的 GitHub 組織中,那麼顯然是他們在提供支援。

新模型確實意味著 group-id 可能會發生變化,artifact-id 也可能會發生變化。 套件名稱也可能會更新以反映這些變化。 開發人員還需要明確地將這些相依性包含在其專案中,而不是透過 Spring Cloud BOM 的受管理版本來繼承它們。

Spring Boot 團隊對於模組(自動配置和啟動器)的適當命名有guidelines。 這些並未嚴格地在 Spring Cloud 中執行,但是遵守這些準則可能意味著任何依賴該方案的構建都會「正常工作」(例如,IDE 中的內容輔助工具)。

按照這種模式,Alibaba 團隊正在從 spring-cloud-incubator 畢業到他們自己的 GitHub org,網址為 https://github.com/alibaba/spring-cloud-alibaba,在那裡我們將繼續與他們合作,因為他們本週將進行一次重要的發布,該發布支持 Spring Cloud Greenwich.SR2 和 Finchley.SR4。 此版本將包括 Spring Cloud Gateway 的 Sentinel 支援,並啟用 Nacos 服務發現和 Spring-Cloud-Config 一起使用。 敬請期待!

您可以期望看到其他提供者在發布未來的 Spring Cloud 主要 Release Train 時移動,因為主要發布是進行如此重大變更的適當時機。

請注意,這僅僅是在描述目前主要 Spring Cloud Train 的情況和計劃; 它不會影響其他專案(例如,Spring Cloud Stream 綁定器)。

我們希望上述理由能解釋我們試圖透過此策略實現的目標。 與往常一樣,我們樂於接受回饋 — 請告訴我們您的想法。 給予專案所有者充分的靈活性來構建和發布與其文化更好地契合的軟體,同時繼續提供與我們在程式碼審查和專案推廣方面密切合作的所有好處,應該使每個人受益。

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

取得領先

VMware 提供培訓和認證,以加速您的進度。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

查看全部