用这些CI/CD最佳实践优化你的管道
对于工程团队来说,CI/CD是改善其开发周期的关键。CircleCI致力于帮助我们的客户优化他们的管道,以简化交付到生产。
如果你的团队重视加快你的上市时间,承诺尝试这5个最佳实践。这些是CircleCI对缩短您的开发周期和改善您的CI/CD流程的建议。

CI/CD最佳实践1:CI/CD不是一个新鲜事物--它是所有开发团队的要求
各组织正在发现他们的开发周期对于提高代码生产质量是多么重要。在我们的2022年软件交付状况报告中,我们看到一些组织脱颖而出:与行业内其他组织相比,它们的规模建设更加迅速和成功。通过分析,我们发现这些表现优异的团队在4个关键基准上都有较高的跟踪。
CI/CD最佳实践2:最好地利用宝贵的开发者时间
现在你知道了如何使用指标基准来优化你的管道,我们的下一个建议是最好地利用宝贵的开发者时间。你可以通过以下方式做到这一点。
- 重复使用配置
- 使用缓存策略
- 实施测试分片
重用配置
优化的一个很好的方法是不要两次编写相同的配置。使用CircleCI的orbs,YAML配置的可重复使用的包,它可以自动重复的过程,并加快项目的设置。
私有的orbs让你在多个项目中共享配置,在你的组织的约束下。
也有许多开放源码可用。
- 开发者中心- 扫描我们的公共注册表以获取开源的轨道,这是可重复使用的配置包,可以自动进行重复处理并加速项目的设置。
- 轨道开发工具包- 轨道开发工具包有助于简化希望创建自己的轨道的工程师的整个轨道制作过程。开发人员现在可以从CLI生成一个全功能的轨道样本项目。
使用缓存策略
优化项目构建和工作流程的一个简单方法是实施特定的缓存策略,允许重复使用以前构建和工作流程中的现有数据。缓存是使工作更快的最有效方法之一,无论是决定软件包管理应用程序还是手动改进你的缓存。
在我们的文档中了解更多关于如何优化构建和工作流程的信息。
实施测试分片
最后,开发人员可以通过利用测试拆分来加快项目构建的速度。自动测试分割通过在同一作业的多个实例中自动分割测试套件--或者说是一系列平行运行的测试环境,缩短了反馈回路。
在这里了解如何根据你的应用程序的具体要求大大减少你的测试时间。
CI/CD最佳实践3:保护你的管道
使用符合全行业安全标准的CI/CD平台与有意采取措施保护你的管道同样重要。这个建议是关于确保你在CircleCI平台上提供的附加产品安全功能,以确保你的管道安全。
私有环境
私有环境变量使开发人员能够安全地存储秘密,甚至为他们的公共项目。秘密掩盖增加了另一层安全,因为它使你的环境变量在工作的输出中不被项目和上下文所察觉。
每个工作流程的多个上下文
为了进一步限制访问,每个工作流程有多个上下文,允许开发人员限制对环境变量的访问,让他们包括特定领域的值,而不是特定的工作流程。这在要求访问工作流中的特定上下文时提供了更大的粒度,提高了你的组织的安全性。
灵活的管理控制
灵活的管理控制允许你在你的项目中管理用户访问。通过在整个组织内对CI平台的可访问性和使用进行标准化,你可以保持你的应用程序的安全性。确保你的管道安全与确保你的工作流程快速运行同样重要。
要了解更多关于CircleCI产品的功能,为您提供更多的应用安全,请查看我们的CI/CD安全和DevSecOps终极指南博文。
CI/CD最佳实践4:保持整个管道的测试覆盖率
使用CircleCI,开发人员可以与一些最好的开发工具集成,以合作伙伴的形式。
Orbs是可重复使用的配置包,有助于加快项目的建立。CircleCI的合作伙伴提供了多种类型的轨道,从代码分析到部署,但我们想叫出那些帮助维护测试覆盖率的管道。
考虑使用这些流行的合作伙伴轨道集成作为您的开发周期的一部分。
- Codecov将你的覆盖率报告上传到Codecov,无需处理复杂的配置。迅速获得你的应用程序的覆盖率结果,这样你就可以轻松地呼吸,并自信地提交你的代码。
- Cypress在Cypress Dashboard上记录结果,并以并行模式进行负载平衡测试。运行端到端的浏览器测试,无需花费时间配置CircleCI。
- Sonarcloud在你的软件库中的错误和漏洞成为问题之前,检测它们。
- Coveralls将您的测试套件的LCOV覆盖率数据发布到coveralls.io,用于分析、变化跟踪和通知。当运行在Pull Request上时,会在PR上添加注释,详细说明如果合并,覆盖率会受到什么影响。
- Snyk查找、修复和监控你的应用依赖和Docker镜像中的已知漏洞。
CI/CD最佳实践5:让这些流行的兽人进入你的轮回空间
我们认为我们应该把最好的留到最后:我们最好的CircleCI orbs。包括这些轨道是增强你的CI/CD实践策略的一个好方法。
- Node轻松地安装Node.js和它的包管理器(npm,yarn)。最重要的是,安装你的软件包时默认启用了缓存。
- Slack在你所有的CI/CD管道中实施基于事件的通知。利用内置的消息模板或Slack的可视化Block-Kit构建器,创建和定制符合您组织需求的通知。加快反馈循环,以便更快地修复错误和加快交付。
- AWS-CLI安装和配置AWS命令行界面(awscli)。
- Python启用Python编程语言的常见CircleCI任务。
- Ruby轻松地自动缓存和安装您的Ruby Gems,运行并行的Rspec测试,或只是安装Ruby。
阅读我们的2022年软件交付状况报告,了解我们从世界各地的软件、医疗、零售、金融、房地产和媒体等50,000多个组织中收集到的关于建立优秀软件开发团队的最佳实践。