简化 Spring Cloud 发布列车

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

Spring Cloud 持续受到极大欢迎,并且在过去几年中,许多 IaaS 提供商与其技术进行了集成并加入了发布列车。这通常涉及加入 spring-cloud GitHub 组织并在 org.springframework.cloud Maven groupid 中发布。随着包含的项目数量似乎在增加,这变得有点难以管理,我们希望退一步审查这种模式的优缺点,并提出一个能惠及所有相关项目的更优前进道路。

成为发布列车一部分的最大缺点也许是它剥夺了项目维护者一定程度的控制权。由于核心 Spring Cloud 团队负责发布,维护者无法按照他们正在集成的技术的发布时间表工作。即使他们设法发布了一个服务更新,在下一个发布列车版本发布之前,该更新也不会被发布列车收录。这种模式还意味着,通常情况下,项目维护者无法直接获取关键统计数据,例如他们项目的 Maven 下载量。

此外,成为发布列车的一部分似乎有很多好处,但实际上其中许多好处是任何项目都可以获得的,与是否在发布列车上或是否在 spring-cloud GitHub 组织中无关。

  • Spring Cloud 团队定期与外部项目合作,帮助审查它们并提供关于如何最好地与 Spring Cloud 集成的建设性反馈。是否被纳入发布列车对此没有影响。(如果您需要反馈,请联系我们。)
  • 有一种看法认为,这使得在 start.spring.io 上获得那个难以企及的复选框变得更容易。这不是真的。有一些关于如何确保项目开发符合 start.spring.io 要求的指南,但关于是否包含的决定不仅仅基于命名方案。我们是否发现社区正在接受该项目集成的技术?该项目是否建立了充满活力和可持续发展的社区,确保长期生命周期和健康的 codebase?是否有足够的文档、指南等来展示如何使用该项目?这些指南中没有任何内容强制要求包含在 Spring GitHub 组织中。
  • Spring 团队定期制作涉及第三方项目的内容,突出关键发布或增强功能。为此,无需成为发布列车的一部分。

https://springjava.cn 网站显然包含涵盖主要 Spring Cloud 项目的内容,但也包含涵盖一些第三方项目的内容。这可能是一个展示如何使用该技术的指南,或现有项目页面上的一个条目。请参阅 https://springjava.cn/projects/spring-cloud,其中提及了许多项目——其中一些在发布列车上,一些不在。

由于这些原因,Spring Cloud 团队决定采用一种精简发布列车的模式,从而解决缺点,同时保留所有 perceived benefits(感知的好处)。提议是 IaaS 提供商将在其自己的 GitHub 组织中托管和维护其代码。这适用于目前在发布列车上的所有现有集成项目。Spring Cloud Azure 从未加入发布列车,而 Spring Cloud Alibaba 团队在从孵化器组织毕业时已经采用了这种新模式。

这在实践中意味着什么?

将其中一些项目从 Spring Cloud GitHub 组织和发布列车中移除,并不意味着活跃开发或支持策略发生变化。同样的团队将继续致力于这些项目,并跟上 Spring Cloud 的发布节奏。如果说有什么影响的话,这个变化可能会使支持模式更加清晰:如果项目托管在 IaaS 提供商的 GitHub 组织中,那么他们显然会提供支持。

新模式确实意味着 group-id 和 artifact-id 可能会发生变化。包名也很可能会更新以反映这些变化。开发人员还需要在他们的项目中明确包含这些依赖项,而不是通过 Spring Cloud BOM 的托管版本来继承它们。

Spring Boot 团队有关于模块(自动配置和 starter)恰当命名的指南。这些对于 Spring Cloud 并非强制执行,但遵守这些指南意味着任何依赖该方案构建的东西都将“正常工作”(例如,IDE 中的内容辅助工具)。

遵循此模式,阿里巴巴团队正从 spring-cloud-incubator 毕业到他们自己的 GitHub 组织 https://github.com/alibaba/spring-cloud-alibaba,我们将继续与他们合作,因为他们本周将发布一个重要的版本,支持 Spring Cloud Greenwich.SR2 和 Finchley.SR4。此版本将包含对 Spring Cloud Gateway 的 Sentinel 支持,并使 Nacos 服务发现和 Spring-Cloud-Config 能够一起使用。敬请关注!

您可以预期在未来主要的 Spring Cloud 发布列车发布期间,其他提供商也将进行迁移,因为主要版本是进行这种重大更改的合适时机。

请注意,这仅描述了当前主要 Spring Cloud 发布列车的情况和计划;它不影响其他项目(例如,Spring Cloud Stream binders)。

我们希望上述理由解释了我们试图通过这一战略实现的目标。一如既往,我们乐于接受反馈——请告诉我们您的想法。赋予项目所有者完全的灵活性,使其能够构建和发布更符合他们文化需求的软件,同时继续提供与我们紧密合作进行代码审查和项目推广的所有好处,这将使每个人受益。

获取 Spring 时事通讯

订阅 Spring 时事通讯,保持联系

订阅

领先一步

VMware 提供培训和认证,为您的进步加速。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看全部