宝马的Zuul使用心得。

Zuul驱动持续集成、交付和部署的系统,宝马(BMW)选择了它。在这里,BMW的软件工程师Tobias Henkel介绍和讨论了Zuul的好处、挑战和希望。

每年、每月甚至每周发布的时代已不复存在。在BMW,CI / CD如何定义软件开发和管理的新方法?

几十年来,软件已成为汽车不可或缺的一部分,并已成为许多安全和舒适功能的关键推动因素之一。实现这些功能所需的软件数量,以及当前汽车的许多配置选项所带来的复杂性,都在不断增加。

车辆中的SW架构已经从或多或少的独立电子控制单元(ECU)演变为分布在许多ECU上的一系列高度连接的功能。如果没有正确的策略,就无法管理所有必需的软件项目,而这些项目必须按严格的时间表汇总,以便为客户提供BMW体验。

尽管当前和未来的软件项目非常复杂,但在我们的内部和外部开发团队中广泛采用CI / CD是按时、保质交付和集成所有软件组件的必要工具之一。如今,大多数BMW软件项目依靠CI / CD来自动化日常工作的用例。

Zuul是否有什么特定的功能吸引了你?

在将CI / CD系统用于不断增加的项目多年之后,现有CI解决方案的局限性开始影响我们的软件开发工作。随着当今软件项目(如自动驾驶)的规模和复杂性不断增加,CI / CD解决方案的扩展能力已成为未来发展的关键先决条件。

虽然可扩展性是开发人员、测试人员和集成商的必备条件,但CI / CD还有其他重要要求:

1.支持多个项目的集中托管实例

2.支持复杂的跨项目CI配置

3.与现有基础设施的兼容性

4.一个活跃的开源社区

Zuul解决方案,特别是在3.0版本发布之后,完全支持我们提供集中托管解决方案的所有要求,这些解决方案可由许多内部软件项目共享。这大大降低了运维开销,并节省了开发人员的宝贵时间,从而不断改进CI系统设置的各个方面。

Zuul与我们的内部OpenStack云以及存储库系统Gerrit和GitHub无缝集成。它还拥有一个活跃的社区,提供了我们项目所需的灵活性。

你现在如何使用Zuul?

几年来,我们一直在为需要高CI / CD性能的大型软件项目运行数个Zuul V2实例。当然,这是以运维具有类似配置的多个实例为代价的。

最近几个月,我们一直在准备基于Zuul V3的集中托管的CI / CD实例,许多使用以前的CI / CD解决方案的项目已经在迁移到新的Zuul V3实例。

在一个集中平台上托管多个项目对于云中的运维开销和资源共享来说具有许多优势,但是在一个CI / CD实例上托管多个项目直接转化为高稳定性和可用性。

为了最大限度地提高中心CI / CD服务的可用性,我们在OpenSthift托管的OpenShift集群中运行Zuul、Nodepool和Zookeeper服务。除了提高可用性之外,我们还看到了内部CI / CD开发团队的一些开发和运维优势。

到目前为止你还看到了哪些其他好处?

通过自动化开发周期的每个组成部分(从简单的提交检查到完全发布流程),CI / CD在软件项目中的广泛采用是及时交付高质量软件的基础。

随着基于Zuul的CI / CD实例的引入,项目能够以非常动态的方式使用云资源实现自动化。因此,项目可以在更短的时间内完成更多的过度测试,从而直接产生更高质量的软件,同时加快开发和集成。

随着Zuul V3的推出,我们也从运维人员的角度看到了很多好处——提供集中托管的CI / CD实例,而不是许多必须单独管理的小实例。

你克服了哪些挑战?

多个项目的集中托管CI / CD平台面临着这么一个挑战:支持项目固有的许多不同用例或限制。我们项目一个常见的限制是需要非Linux构建节点,因为某些必需的应用程序或工具链仅支持某些操作系统,如Microsoft Windows的显式版本。

从运维人员的角度来看,我们不需要用于更新节点镜像的特殊解决方案,我们希望Nodepool能够自动为我们这样做,就像基于Linux的镜像一样。这需要一些额外的努力。

另一个有趣的挑战是管理Zuul和Nodepool配置,或者更确切地说,管理配置的职责。一方面,我们希望尽可能多地为项目提供配置灵活性,但另一方面,我们仍需要集中管理集中式配置文件。一个示例是在CI系统里注册静态节点。我们仍在研究如何有效地管理这些集中式配置文件。

未来有什么计划?

我们目前正在将许多项目迁移到基于Zuul V3的集中提供的CI / CD实例。这个实例将成为BMW许多现有和新软件项目的首选解决方案。我们预计项目数量和规模将持续增长,并且用户群将大量增加,其中包括内部和外部项目成员。

鉴于Zuul和Nodepool对开发基础设施的战略重要性,我们主要关注的是稳定性、可用性以及可扩展性。虽然Zuul已经为稳定性和可扩展性需求做好了充分准备,但仍然需要提高可用性。

要解决的主要问题是通过使Zuul CI系统的所有服务高度可用(HA)来消除所有单点故障。即使单个(虚拟)机器甚至整个OpenStack可用区域存在问题,CI / CD服务也应始终保持完全正常运行。

你希望Zuul社区继续关注或提供什么?

虽然Zuul V3为我们的大多数软件项目提供了开箱即用的解决方案,但仍然有一些改进空间。

我们Zuul CI / CD系统的用户希望改进Zuul-Web组件,例如:提供有关当前和过去作业的更多信息,取消正在运行的作业或者为每个租户配置状态页面布局。

但是,从我们的角度来看,最高优先级是删除任何单点故障以支持具有高可用性的配置。

还有什么想说的吗?

在BMW使用Zuul CI解决方案的明显原因是Zuul的全面功能集支持我们的所有主要用例。

我们决定采用Zuul还有一个重要原因是积极和很有帮助的社区推动了Zuul和Nodepool的发展。

BMW CI / CD开发团队很自豪能够成为Zuul社区的一员,并将继续成为Zuul OSS项目的积极贡献者。我们要感谢所有Zuul开发人员和维护人员所做的出色工作。

原文链接:

http://superuser.openstack.org/articles/zuul-case-study-bmw/

内容覆盖主流开源领域

投稿邮箱

openstackcn@sina.cn

案例:宝马的软件交付离不开OpenStack Zuul相关推荐

  1. 如何提升软件交付效能?答案未必如你所想

    Editor's Notes: 如何提高软件交付效能?研发支撑部门 BP 化,项目管理流程精简化,忘掉代码量去构建效能度量模型.一个个富有冲击力的理论不断涌现,细一琢磨,又觉得个中道理正是如此.一切皆 ...

  2. 持续交付 devops_使用DevOps开始加速软件交付

    持续交付 devops 一次又一次,我们听说公司借助DevOps实现了快速加速. 公司正在以每天的部署量来吹捧成功,共享每天10.50甚至100个部署的新基准. 在更成熟的组织中,例如LinkedIn ...

  3. 《企业软件交付:敏捷与高效管理精要》——2.8 结论

    2.8 结论 本章重点介绍了一个企业软件交付项目的具体例子,展现了当今软件交付所面临挑战的许多特征:让分布在全球各地的在岸 - 离岸混合团队交付核心业务能力.这个例子切实地展现了,对于全球企业软件交付 ...

  4. 软件度量五步法包括_软件交付效能度量——从吞吐量和稳定性开始

    除了感性的工作体验外,我们还需要指标来度量改进措施是否对提升软件交付效能有帮助.过多的指标会对团队造成不必要的管理成本,也容易让团队失去关注焦点.从吞吐量和稳定性两个维度考量的四个关键指标是简单但有效 ...

  5. 《企业软件交付:敏捷与高效管理精要》——2.2 MyCo公司和MyProj企业软件交付项目...

    2.2 MyCo公司和MyProj企业软件交付项目 这个案例取材自真实的项目,可以说明很多实际情况.有一个跨国公用事业公司,依赖一家企业软件交付机构来为业务提供IT服务,而后者承受着很大的成本和效率压 ...

  6. Zadig 完成 100% 开源:开启软件交付 3.0 时代

    经历过流程驱动的 1.0 时代,工具驱动的 2.0 时代的,软件开发已经进入到数字业务驱动的 3.0 时代,成为企业生存的命脉."要想富,先修路" .开源云原生软件交付产品 Zad ...

  7. KubeVela 为 CNCF 孵化器带来软件交付控制平面能力

    CNCF TOC(Technical Oversight Committee,技术监督委员会)已经投票接受 KubeVela 作为 CNCF 的孵化项目. KubeVela [ 1] 是一个应用交付引 ...

  8. 顶级大厂是如何做软件交付的|文末赠书

    在激烈竞争.快速发展的互联网时代,产品创新和交付面临着越来越多的挑战.淘宝天猫作为电商行业直接触达消费者日常生活的一款重要产品,它的每一次发展.每一次新功能的升级,都将直接影响数亿消费者的体验. &q ...

  9. 软件交付时间紧,赶着上线怎么办?

    前言 软件交付时间紧,赶着上线怎么办?很多人在工作中都遇到这样的事吧,原因有很多在这列几个.再给出我的解决方案,我说的不一定正确,但是期望能帮助各位解决这样的事. 一.产生的原因 1.项目经理对上线时 ...

最新文章

  1. Win64 驱动内核编程-28.枚举消息钩子
  2. Qt修炼手册6_图形:图形视图框架
  3. 艾伟:ASP.NET实用技巧(一)
  4. opencv学习笔记01
  5. tp3.2 URL生成
  6. 游戏检测到计算机性能过低,windows检测到您的计算机性能缓慢
  7. 过去一年对我帮助最大的三本书
  8. 工作3年以上的程序员现在都在做什么工作?
  9. 去除 华军 恶心的广告验证码
  10. selenium模拟登录某宝
  11. 2022最新高通8155平台开源代码最新代码下载、编译方法
  12. 虚拟化介绍及Docker与传统虚拟化有什么区别
  13. K3实现按虚拟件/组件发料
  14. 【转】机器学习embedding
  15. python中base64库用法详解
  16. C# TreeView基本操作及其节点增,删,改(3级节点)
  17. Socket状态变迁图
  18. [一维前缀和]leetcode303:区域和检索 - 数组不可变(easy)
  19. Windows 10 安装 Android 13版本的安卓子系统(带 Google Play 商店和 Magisk) 2210.40000.7.0
  20. ROS意外崩掉解决方案

热门文章

  1. 3.2.1 对流项离散格式的基本介绍 | 3.2.2 中心离散格式与一阶迎风格式(OpenFOAM理论笔记系列)
  2. Android固件1.0现身在CTIA
  3. Python报错File “「string」“, line 1, in 「module」 NameError: name ‘q‘ is not defined
  4. Android 奇怪的问题
  5. php5 安装imagick,CentOS 6.5编译安装PHP拓展imagick
  6. 判断德国时间冬令时和夏令时
  7. 购买二手房超级指导手册
  8. 技术能否成为解决问题的“最优解”?来WAVE SUMMIT 2022找答案
  9. 原来Linux是这么管理内存的
  10. 为什么有的公司开发者觉得很累