将Spinnaker与Jenkins 2.0作为持续交付工具进行比较

时间:2016-06-21 06:25:50

标签: jenkins jenkins-pipeline jenkins-2 spinnaker

众所周知,Jenkins 2.0已经发布,它不仅仅是持续集成(CI),还包括持续交付(CD)。所以我想问一下,与Jenkins 2.0相比,Spinnaker的竞争优势是什么?

3 个答案:

答案 0 :(得分:71)

我在Spinnaker的Jenkins集成以及Netflix的Pipelines功能方面进行了广泛的工作。

Spinnaker从未打算成为端到端的构建工具。詹金斯在管理SCM,运行测试,构建软件包,拥有大量插件等方面都会做得更好。

Spinnaker试图做得好的事情是使用您已发布的软件(debian软件包,docker镜像或可部署的JAR)并通过可高度自定义的可预测软件部署周期运行它。换句话说,Spinnaker中的每个功能都可以轻松实现高可用性,多帐户,多云工件部署。

Spinnaker管道采用以云为中心的视图。我们的大多数管道阶段和API控件都关注创建新服务器组和以可预测和用户友好的方式更改现有服务器组。如有疑问,我们会优化这种情况。

我们对云部署的外观有了更强烈的意见,在处理我们的CD管道中的云部署任务时,我们通常会有点击式用户界面 - 在群集x中找到图像,禁用此群集,调整大小服务器组,缩小此群集,使此群集占用流量,销毁此旧群集等。

当我们2年前开始编写Spinnaker时,我们无法使用Jenkins管道功能,因此我们构建了所需的功能。我们提出的Jenkins支持源于我们的需求,帮助Netflix的其他团队在内部构建数千个部署管道。由于Netflix大量依赖Jenkins进行构建和测试,因此Jenkins工作和Spinnaker阶段之间的转换非常顺畅。

Netflix的团队不使用Spinnaker管道功能,而是在其Jenkins作业中使用Spinnaker API作为部署到AWS的快捷方式。如果您正在使用Jenkins管道或类似的CD工具,Spinnaker会使您的部署阶段非常灵活。

我们也有团队喜欢Spinnaker将Jenkins工作分解为一个应用程序的原子,可重用任务的方式。未部署到云的团队使用Spinnaker,因为我们的管道比他们能够找到的Jenkins世界更能满足他们的需求。

詹金斯的管道非常整洁。我不认为Spinnaker会完全取代Jenkins及其所做的百万件事。我们的目标是让“部署到云”步骤更简单,更具可扩展性。选择使用其中一个,一起使用或根本不使用,取决于您。

答案 1 :(得分:23)

有几个原因可以选择Spinnaker而不是Jenkins(2.0)Pipeline作为CD工具:

  1. Spinnaker包含一个可以实际配置资源的Web UI,并且可以在多个云环境中执行此操作。因此,要创建VM,负载均衡器,集群等基本资源,您可以使用与交付工具相同的UI来执行此操作。
  2. 如果您的架构类似于Netflix,Netflix将其用作整个云管理平台,几乎不需要使用扩展工具来支持您的交付和基础架构管理。
  3. 另一方面,选择Jenkins Pipeline而不是Spinnaker有很多理由

    1. Spinnaker仍然需要构建工具,因此您可能需要维护Jenkins。因此,如果Jenkins Pipeline成为您的CD工具,它本身就可以执行特定于执行程序的任务。
    2. Spinnaker没有细粒度的访问控制(并且最近才添加任何类型的身份验证),而Jenkins在Pipeline中有许多插件和本机配置,以提供资源级访问控制。
    3. 一切都是由一个groovy脚本驱动的,所以它是真正的配置代码。它允许简单的流/逻辑/控制,这在其他CD工具中是不可能的(或至少是简单的)。
    4. 多分支管道支持,轻松创建/删除/更改分支
    5. 已经为Jenkins提供了广泛的插件支持。例如,我们使用AWS ECS Plugin来为我们的管道提供动态docker节点。
    6. 轻松分享/协作管道代码。您肯定可以在多个管道中使用可重用的功能,Jenkins使用Remote Loader Plugin
    7. 等工具轻松实现这一功能
    8. 大型社区支持
    9. 我们最终选择了Jenkins 2.0 Pipeline作为Spinnaker和其他几个人的CD工具。

答案 2 :(得分:1)

我们使用Maven打包整个代码库以及配置,属性(即在GitHub中版本化的所有内容)并创建一个RPM。随着此流程结束 - 我们在AWS或任何其他云中触发Spinnaker管道以启动CD部分。

Spinnaker在这个给定的CD范围内非常独特。

  1. 代码促销:我们将提升的相同RPM确保我们使基础代码/ env不可变。

  2. 我们可以控制Spinnaker控制台本身的实例大小调整

  3. 只需点击一下即可退回。

  4. 所有现代部署概念,如蓝绿/红黑,金丝雀,高地等,都是OOB。

  5. 管道日志提供了一个非常有见地的视图,包括高级别和低级别

  6. 多区域部署(DR战略)

  7. 如果有人需要帮助(免费帮助!)在RHEL上安装Spinnaker,你可以告诉我。

    但我必须说我们仅将Spinnaker用于以云为中心的部署。