Spring Cloud Pipelines 迁移到 Cloud Pipelines

发布 | Marcin Grzejszczak | 2018 年 11 月 13 日 | ...

Spring Cloud Pipelines 是一个试图解决以下问题的 GitHub 项目

  • 创建通用的部署流水线

  • 推广良好的测试和部署实践

  • 减少将功能部署到生产环境所需的时间。

第一次提交发生在 2016 年 8 月 31 日。自那时以来,我们收到了来自社区的关于建议的部署流水线及其具体可视化的大量反馈。在这两年里,我们成功构建的最重要功能包括

  • 带有观点的部署流水线设置

  • 流水线脚本,用于验证项目的向后兼容性并实现零停机部署

  • 支持 PHP、.NET、NodeJS 和 JVM (Maven & Gradle) 项目

  • Cloud Foundry 的部署选项

  • Kubernetes 的部署选项

  • 通过 Ansible 的部署选项

  • 使用 Jenkins Job DSL 在 Jenkins 中实现流水线可视化

  • 使用 Jenkinsfile 在 Jenkins 中实现流水线可视化

  • 在 Concourse 中实现流水线可视化

我们宣布 1.0.0.M9 版本的 Spring Cloud Pipelines 发布,这也将是其当前形式的最后一个版本。

(Spring) Cloud Pipelines

由于我是 Spring Cloud 团队的成员,我们决定将其置于 Spring Cloud 旗下。除此之外,该项目与 Spring Cloud 没有任何关系,更不用说一般的 Spring 了。

这就是为什么我们决定将项目拆分成多个部分,重新命名,并将其放到一个独立的 GitHub 组织下。

欢迎,Cloud Pipelines!

Spring Cloud Pipelines 有了新家和新名字。该项目现在位于 GitHub 的 Cloud Pipelines 组织下。因此,项目被拆分成了以下几个部分

  • Scripts:包含部署流水线的核心逻辑。你可以称这个仓库为 recipes。每个 recipe 包含部署流水线的一个步骤。文档在这里

  • Concourse:使用 Concourse 完成的流水线可视化。文档在这里

  • Jenkins:使用 Jenkins 完成的流水线可视化。文档在这里

  • Project Crawler:对从仓库管理服务获取数据的抽象。

  • Pipeline Base:CI 服务器使用的 Docker 基础镜像。

将项目迁移到新组织后,我们决定将其标记为 功能完备。我们已经开发 Spinnaker 一段时间了,并计划投入资源,使 Cloud Pipelines 的回滚测试和契约测试 recipes 能够在 Spinnaker 上运行。对于其他重叠领域,如部署策略,我们希望依赖 Spinnaker 的抽象。当然,我们将促进围绕项目的任何讨论,并处理与问题、拉取请求和发布相关的杂务,但我们可以有把握地说,该项目将完全由社区驱动和维护。

如果您有兴趣将您的项目从 Spring Cloud Pipelines 迁移到 Cloud Pipelines,您应该查看迁移指南

为何选择 Spinnaker?

Spinnaker 是一个开源的多云持续交付平台,始于 Netflix,现在有来自 Google、Amazon、Pivotal 和许多其他公司的贡献者组成的更广泛社区参与其中。Spring 团队和 Pivotal Cloud R&D 的协作努力促成了 Spinnaker 对 Cloud Foundry 的支持。

Spinnaker 使我们能够访问更广泛的支持的云提供商,而无需重新发明这些交互。

Cloud Pipelines 在零停机部署和回滚测试方面的工作揭示了像 Spinnaker 这样的持续交付平台的关键价值,该平台单独维护已部署环境中资产的清单。

  • 在 Cloud Pipelines 中,没有存储当前的生产系统状态。为了缓解这个问题,我们使用 Git 标签来存储状态。然而,当进行手动部署或回滚时,这很容易被破坏。此外,生产系统状态可能跨越多个版本(跨云提供商或区域),并且通常无法简化为可以存储在标签中的单个值。例如,执行回滚测试的 Spinnaker 流水线可以自由地利用 Spinnaker 对系统状态的了解,将回滚测试上下文关联到目标区域的生产版本,而彼此独立。

  • Cloud Pipelines 中提供的部署选项有限。Spinnaker 将蓝/绿、滚动推送、零停机和自动金丝雀分析部署功能推广到一系列受支持的云提供商。

更具体地说,考虑蓝/绿部署。Spinnaker 支持蓝/绿部署,同时维护任意数量的先前版本服务器组。在下面的示例中,从应用程序的当前版本,您只需一步操作即可回滚到距离最新版本几个版本的应用程序。在任何时候,我们都可以选择销毁 V022,

Spinnaker

从而有效地使其无法回滚。这种事情可能发生在部署活动之外(例如为了释放容量),这使得无状态系统更难应对变化。

参与进来!

我们欢迎您以各种形式提供宝贵意见。如果您对 Spinnaker 有疑问,请在 Stack Overflow 上提问并使用 #spinnaker 标签。如果是 Cloud Pipelines,请在 GitHub 上提问。如果您想贡献代码,我们非常欢迎拉取请求。如果您发现问题,请在 Github 上提交 issue。

订阅 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

抢占先机

VMware 提供培训和认证,助力您的进步。

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看全部