由于过时的遗留系统,为一家全球汽车公司提供动力的技术团队正在努力解决构建和流程问题。他们借助Jenkins 对整个 CI/CD 流程中的工具集进行标准化,以提高性能、加快上市时间并降低变更失败率。
|
组织机构 |
财富 500 强汽车组织 |
编程语言 |
C/C++、Java、Node.js、Python、Golang、Scala |
|
平台 |
Docker、Kubernetes、Linux、Windows |
|
版本控制系统 |
Bitbucket Server,GitHub |
|
构建工具 |
Gradle、Maven、npm、docker、Golang、Helm、Packer、Dotnet、PY、SBT |
背景
一家大型的全球汽车公司需要快速的开发和上市速度。这涉及我们所有的开发人员始终保持同步。在我们迁移到 Jenkins 之前,我们公司依赖于过时的软件:我们的构建工具和框架是非标准的,应用程序使用的是比较过时的构建工具(例如 ant)和旧的 struts 框架。该公司还缺乏标准的代码扫描工具,例如 SonarQube。所有这些导致了大量安全漏洞和更慢的发布时间表。如果没有标准化的工具集,构建工具和流程使一切变得极其困难。目标
我们的主要重点是为组织中所有项目的所有CI/CD创建一个完整的标准化。我们的目标是实现可预测的行为和流程,同时标准化框架、构建工具、安全/扫描工具、测试工具等。
“我们选择 Jenkins 是因为它经过了实战测试,并且拥有独一无二的社区支持。从字面上看,没有什么是使用 Jenkins 无法实现的。” -Akhil Pradhan,DevOps 架构师
解决方案
作为迁移工作的一部分,我们需要对整个 CI/CD 流程中的工具集进行标准化。我们选择 Jenkins 是因为它经过了实战测试,并且拥有独一无二的社区支持。从字面上看,没有什么是使用 Jenkins 无法实现的。我们建立了Jenkins管道的共享库概念,并为应用团队提供 CI/CD 解决方案(又名管道即服务)。这样,应用程序团队就无需担心编写冗长的 groovy 管道代码。他们可以专注于编写业务逻辑,共享管道内置了自动化构建、单元测试、lint代码检查、打包、发布和部署到我们的目标环境。总结Jenkins 以其丰富的插件生态系统而著称。但正是允许我们编写自己的插件的灵活性使 Jenkins 成为我们组织中最重要和最广泛使用的工具。
由于丰富的社区插件支持和轻松编写我们自己的插件,我们能够设计和定制我们的工作流程和解决方案。例如,我们使用托管在 AWS 云上的自定义插件将 Jenkins 与我们的本地秘钥凭据管理器集成,这样我们就不会在 Jenkins 中存储任何机密信息。我们使用的其他有用的插件是 ECS、Artifactory、Email、Pipeline、Office365、Kubernetes等等。
Jenkins 之所以出色,是因为它快速、灵活且易于使用。管理员也很容易管理。由于新用户无需事先培训,Jenkins 是 IT 专业人士的理想平台。借助我们的新 CI/CD 平台,我们能够实现我们的目标以及更多目标,包括:
- 加快构建速度
- 可预测的行为
- 缩短上市时间
- 增加发布频率
- 降低变更失败率