【问题标题】:Understanding Spring Cloud Release Versions了解 Spring Cloud 发布版本
【发布时间】:2017-06-26 17:00:36
【问题描述】:

春天的人们在发布大量优质项目方面做得很好。我们一直在使用的其中之一是 Spring Cloud 及其各种子项目。

让我真正感到困惑的一个方面是 Spring Cloud 版本名称。例如,如果您转到 Spring Cloud,它会显示为 CamdenAngelBrixton。然后,如果您转到特定的项目站点,例如 Spring Cloud Config,它会显示类似 1.3.01.2.3 的版本

关于这些的两个问题。

  1. 从命名版本(Camden、Brixton、Angel)很难想象哪个是最新的及其顺序。有没有什么地方有据可查?

  2. 命名版本如何与子项目编号版本相关?

感谢您的宝贵时间。

【问题讨论】:

    标签: spring-boot spring-cloud spring-cloud-config


    【解决方案1】:

    发布问题后,在主页上找到了有关这些版本的一些信息。这肯定会解决问题。

    Spring Cloud 是一个伞形项目,由原则上不同发布节奏的独立项目组成。为了管理投资组合,发布了 BOM(材料清单),其中包含对单个项目的精选依赖项(见下文)。发布火车有名称,而不是版本,以避免与子项目混淆。这些名称是伦敦地铁站名称的字母顺序(因此您可以按时间顺序对它们进行排序)(“Angel”是第一个版本,“Brixton”是第二个版本)。当单个项目的点发布累积到临界质量时,或者如果其中一个项目中存在需要所有人都可以使用的严重错误,则发布火车将推出名称以“.SRX”结尾的“服务发布”,其中“X”是一个数字。

    【讨论】:

    【解决方案2】:
    • 什么是 Spring Cloud?

    Spring Cloud 是一个伞形项目,由原则上不同发布节奏的独立项目组成。为了管理投资组合,发布了 BOM(材料清单),其中包含对单个项目的精选依赖项(见下文)。发布火车有名称,而不是版本,以避免与子项目混淆。这些名称是一个字母序列(因此您可以按时间顺序对它们进行排序)以及伦敦地铁站的名称(“Angel”是第一个版本,“Brixton”是第二个版本)。当单个项目的点发布累积到临界质量时,或者如果其中一个项目中存在需要所有人都可以使用的严重错误,则发布火车将推出名称以“.SRX”结尾的“服务发布”,其中“X”是一个数字。

    • 通常我们有一个基于 Spring Boot 的现有项目,并且我们希望向其添加来自 Spring Cloud 项目的一个或多个依赖项,然后我们面临的问题是那个特定的 Spring Cloud我应该使用与我当前版本的 Spring Boot 兼容的项目吗?

      与 Spring Boot 版本兼容的版本发布在 Spring Cloud 的 home page 上,在撰写本文时,这里是:

      此外,每个发布系列的release notes可能包含各个子项目的不同兼容版本。另外here,您可以找到他们的 GH 页面,了解给定的发布系列以及有关它使用的子项目的更多信息。

      现在要更准确地确定您感兴趣的特定子项目的确切版本,例如spring-cloud-starter-openfeign,要知道这个umbrella项目无非是:

      • 一个主 pom 文件 spring-cloud-dependencies-parent 其中:

      • 特定 spring-boot-starter-parent 的子 pom,它可以告诉您给定发布序列使用的 spring boot 版本。

      • 它还导入了spring-cloud-dependencies,它声明了我们的发布列车正在使用的各个子项目的所有版本,例如对于 Hoxton.SR3:

      <properties>
          <spring-cloud-kubernetes.version>1.1.2.RELEASE</spring-cloud-kubernetes.version>
          <spring-cloud-security.version>2.2.1.RELEASE</spring-cloud-security.version>
          <spring-cloud-config.version>2.2.2.RELEASE</spring-cloud-config.version>
          <spring-cloud-contract.version>2.2.2.RELEASE</spring-cloud-contract.version>
          <spring-cloud-netflix.version>2.2.2.RELEASE</spring-cloud-netflix.version>
          <spring-cloud-vault.version>2.2.2.RELEASE</spring-cloud-vault.version>
          <spring-cloud-openfeign.version>2.2.2.RELEASE</spring-cloud-openfeign.version>
          <spring-cloud-task.version>2.2.3.RELEASE</spring-cloud-task.version>
          <spring-cloud-stream.version>Horsham.SR3</spring-cloud-stream.version>
          <spring-cloud-commons.version>2.2.2.RELEASE</spring-cloud-commons.version>
          <spring-cloud-build.version>2.2.3.RELEASE</spring-cloud-build.version>
          <spring-cloud-zookeeper.version>2.2.1.RELEASE</spring-cloud-zookeeper.version>
          <spring-cloud-consul.version>2.2.2.RELEASE</spring-cloud-consul.version>
          <spring-cloud-bus.version>2.2.1.RELEASE</spring-cloud-bus.version>
          <spring-cloud-function.version>3.0.3.RELEASE</spring-cloud-function.version>
          <spring-cloud-sleuth.version>2.2.2.RELEASE</spring-cloud-sleuth.version>
          <spring-cloud-gateway.version>2.2.2.RELEASE</spring-cloud-gateway.version>
          <spring-cloud-gcp.version>1.2.2.RELEASE</spring-cloud-gcp.version>
          <spring-cloud-cloudfoundry.version>2.2.1.RELEASE</spring-cloud-cloudfoundry.version>
          <main.basedir>${basedir}/../..</main.basedir>
          <spring-cloud-circuitbreaker.version>1.0.2.RELEASE</spring-cloud-circuitbreaker.version>
          <spring-cloud-aws.version>2.2.1.RELEASE</spring-cloud-aws.version>
          <spring-cloud-cli.version>2.2.1.RELEASE</spring-cloud-cli.version>
      </properties>
      

      这告诉我作为一个例子,我可以使用 2.2.2.RELEASE 版本的 open feign,因为我的项目的 Spring Boot 版本是 2.2.5

      如果需要,这些 pom 文件都可以在 maven Central 上进行挖掘:

    【讨论】:

      【解决方案3】:

      Spring Cloud 发布命名已更改。在内部,他们仍然使用伦敦地铁站的名称,但发布到 maven 存储库的内容遵循日历版本控制。解释如下...

      2020 年发布火车的显着变化

      我们更改了版本 训练版本控制方案。我们现在关注 Calendar Versioning 或 calver 简而言之。我们将遵循YYYY.MINOR.MICRO 方案,其中MINOR 是 一个递增的数字,每年从零开始。 MICRO 段对应于以前使用的后缀:.0 类似于 .RELEASE.2 类似于 .SR2。预发布后缀也将 例如,从使用 . 更改为 - 作为分隔符 2020.0.0-M12020.0.0-RC2。我们还将停止使用BUILD- 为快照添加前缀——例如2020.0.0-SNAPSHOT

      我们将继续使用伦敦地铁站名称作为代号。这 当前代号为Ilford。这些名称将不再用于 发布到 maven 存储库的版本。

      参考:https://spring.io/blog/2020/04/17/spring-cloud-2020-0-0-m1-released#notable-changes-in-the-2020-release-train

      与 Spring Boot 版本的兼容性矩阵:https://spring.io/projects/spring-cloud#adding-spring-cloud-to-an-existing-spring-boot-application

      【讨论】:

        【解决方案4】:

        2021 年,要找到 最新 匹配的 Spring Boot 和 Spring Cloud 版本仍然很乏味......这里有一个过程:

        1. https://spring.io/projects/spring-cloudRelease Trains 表中查找兼容性矩阵,它显示了哪些 Spring Boot 和 Spring Cloud Release Train 版本匹配。截至 2021 年 12 月 14 日发布火车:

        2. 单击“Release Train”列中的链接以访问 Spring Cloud 发行说明,其中提到了最新的“Release Train”版本。
          例如:“Hoxton ==> Hoxton.SR12”。

          或者:
          https://github.com/spring-cloud/spring-cloud-release/tags 中查找最新匹配的 Spring Cloud Release Train 版本。
        3. 从“Boot Version”列中选择值并在 Spring Boot 版本中查找最高匹配版本,此处:https://github.com/spring-projects/spring-boot/releases 或(更快)此处:https://github.com/spring-projects/spring-boot/tags
          示例继续:“==> v2.3.12.RELEASE”。

        另一个信息来源是 Spring 博客类别“发布”:https://spring.io/blog/category/releases,但恕我直言,这有点……令人困惑。

        【讨论】:

          猜你喜欢
          • 2021-12-31
          • 1970-01-01
          • 2017-07-06
          • 2020-09-27
          • 2017-01-09
          • 2019-11-13
          • 2016-08-22
          • 2015-09-20
          • 1970-01-01
          相关资源
          最近更新 更多