案例:宝马的软件交付离不开OpenStack Zuul


宝马的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/



内容覆盖主流开源领域

案例:宝马的软件交付离不开OpenStack Zuul案例:宝马的软件交付离不开OpenStack Zuul案例:宝马的软件交付离不开OpenStack Zuul案例:宝马的软件交付离不开OpenStack Zuul案例:宝马的软件交付离不开OpenStack Zuul案例:宝马的软件交付离不开OpenStack Zuul案例:宝马的软件交付离不开OpenStack Zuul

投稿邮箱

[email protected]

案例:宝马的软件交付离不开OpenStack Zuul案例:宝马的软件交付离不开OpenStack Zuul

案例:宝马的软件交付离不开OpenStack Zuul