写点什么

CI/CD 最佳实践,让研发团队效率起飞!

作者:极狐GitLab
  • 2023-11-30
    江西
  • 本文字数:3210 字

    阅读完需:约 11 分钟

CI/CD 最佳实践,让研发团队效率起飞!

本文来源:about.gitlab.com

作者:Valerie Silverthorne

译者:极狐(GitLab) 市场部内容团队

CI/CD 是 DevOps 成功实践的核心,想要实现现代化应用程序开发的团队,必须遵从 CI/CD 最佳实践。如何确保团队正确使用 CI/CD?以下内容供你参考。


CI/CD 是什么?


CI/CD 既是技术流程,又是一种思想,还是一系列步骤......CI/CD 包括以上全部内容。简而言之,CI/CD 能让 DevOps 团队通过自动化来简化代码提交。


  • CI(持续集成) 简化了软件构建和源代码集成,实现版本控制,并通过自动化促进良好协作;

  • CI 结束后,持续交付(CD)开始自动化测试和部署。CD 不仅减少了花费在交付和部署过程中因手动操作所带来的诸多弊端,还能够让团队在管理软件生命周期方面,极大减少所使用的工具数量。


CI/CD 有哪些最佳实践?


如果想用 CI/CD 来获得成功,那就让持续集成、持续交付及持续部署成为团队的习惯,因为它们是软件研发实践的基石。DevOps 的目标就是更快将软件交付给用户,而 CI/CD 实践将让这一切变为现实。


如果问 10 个 DevOps 团队的 CI/CD 实践,会得到 10 个不同答案。但以下几个方面都是大家一致推崇的:


  1. 只构建一次:不要为每个阶段创建一个新构建,这会带来不一致风险。在 CI/CD 流水线中,推荐使用同一个构建制品(与环境无关的构建);

  2. 简化测试:在测试覆盖率和性能之间取得平衡。如果花费很长时间才能出现测试结果,用户则会试图绕开这些流程;

  3. 快速失败:在 CI 侧,提交代码的研发人员需要尽快得知他们提交的代码是否有问题,以便还能在熟悉这些代码的时候快速回滚和修复。“快速失败” 理念帮助开发人员减少上下文切换,让 DevOps 专业人员更加快乐;

  4. 每天提交:代码提交越规律,DevOps 团队将能看到越多价值;

  5. 有问题就修复:CI/CD 让修复失败构建变得更加简单;

  6. 清空预生产环境:环境持续运行时间越长,越难追踪应用在环境上的配置变更和更新。在每次部署之间都清空预生产环境是好习惯;

  7. 始终自动化:不断调整 CI/CD 流水线以确保实现持持续自动化;

  8. 明确步骤:确保版本发布和回滚计划明确写进文档,并被整个团队理解;

  9. 保持安全:CI/CD 是一种左移,因此它提供了一个很好的机会,将安全集成到早期流程中;

  10. 反馈循环:确保整个团队有一个简单办法来接受(或者贡献)反馈。


深入研究 CD 的最佳实践


CD(持续交付/部署)也值得深入研究一下它们的最佳实践,尽管风头总是被 CI 抢走了。以下是 CD 的最佳实践:


  • 立即开始:不要等新平台,从现有的开始调整,让它们变得更快、更高效;

  • 少即是多:最好的 CD 是用最少的工具完成的;

  • 追踪正在发生的事情:Issue 和 Merge Request 可能会失控,但 Milestone 可以提供帮助的,例如在设置敏捷冲刺和发布时,Milestone 具有双重作用:帮助跟踪正在进行的所有事项;进行有计划的交付;

  • 自动化部署变更:通过自动化简化用户验收测试和 staging 环境部署;

  • 管理发布流水线:自动化一切;

  • 建立监控:密切关注生产流程能够节约时间和金钱,还能够对业务侧提供关键数据;

  • 启动持续部署:一旦启动持续交付,就把手从部署上拿开,通过自动化将变更部署到生产环境。


如何改进 CI/CD 流水线?


所谓流水线,其实只是一种描述部署新版本软件所涉及到的一系列步骤的方式。监控和自动化被引入到 CI/CD 中,用以改进应用程序开发流程,特别是在集成和测试阶段,以及软件交付和部署阶段。


一个典型的 CI/CD 流水线应具有这些元素:计划、分析、设计、构建、测试、发布、部署、验证、合规及维护。这些步骤都可以手动实现,但是 CI/CD 流水线的价值体现在自动化。


如果要微调 CI/CD 流水线,可以考虑通过以下几点来增强性能:


  • 混合发布策略。金丝雀发布(或金丝雀部署)或许值得考虑。在金丝雀发布中,只有特定用户群体能看到新功能特性部署。

  • 增加更多自动化测试,因为自动化测试用不嫌多。

  • 持续做减法。更少的工具意味着更少的手动操作和步骤。如果 CI/CD 是 DevOps 平台的一部分,那么一切都应该在一个平台上。

  • 将软件组件分析视为常规实践,以确保 DevOps 团队持续追踪重要的开源软件问题。


如何衡量 CI/CD 是否成功?


DevOps 团队可能不知道他们的 CI/CD 实践运行如何,除非能够衡量它们。指标在改进系统性能及帮助识别何处可以增加价值时,扮演了非常重要的角色,还为任何改进的影响提供了基准。


以下是一些衡量 CI/CD 是否成功的指标:


➤ 循环周期


指从开始编写代码到推出功能特性需要的时间。


为计算出循环周期平均时长,需衡量研发流程整个阶段。该指标提供总体开发时长以及过程瓶颈的洞察。


➤ 价值实现时间


指发布编写的代码需要多长时间。集成、测试、交付及部署应该需要几分钟到几小时才能完成测试周期。如果 CI/CD 流水线的构建需要数天才能完成,则无法实现价值,需要对整个流程进行调整。


➤ 持续运行时长


正常运行时长是对稳定性及可靠性的一种衡量,这是运维团队首要任务之一。


当 CI/CD 策略自动化时,运维负责人就可以将更多时间聚焦在系统稳定性上,而在工作流问题上花费更少时间。


➤ 错误率


应用程序错误率是研发过程中的一个既定事实。追踪错误率非常重要,因为错误率不仅能够指出质量问题,还可以指示连续的性能问题以及与正常运行时间有关问题。


如果持续运行时长和错误率都很高,说明开发团队和运维团队之间存在常见的 CI/CD 挑战。


➤ 基础设施成本


在云原生开发中,基础设施成本非常重要。如不加以控制,部署和管理一个 CI/CD 平台会带来巨大成本。为了确定它们如何定价,云厂商将考虑网络硬件、基础设施维护及人力成本。


➤ 团队留存率


众所周知:当开发人员或者任何一个人真切感受到自己的价值和被重视的时候,他们会留下来。


当团队默契协作,那么留存是必然结果。相反,开发者合作不顺畅、进展缓慢等,他们可能会感到不舒服。通过查看团队留存率,可以发现潜在问题。


遵循 CI/CD 最佳实践有哪些收益?


当遵循最佳实践时,CI/CD 的好处会贯彻整个组织:


从 HR 到运维,团队能够更好的工作并达到最终目的;围绕 CI/CD 性能建立指标不仅可以提供有关开发的洞察,还可以延伸到业务的诸多方面;一个功能良好的 CI/CD 流水线能够改变 DevOps 团队的游戏规则。


以下是一些巨大的优势:


开发人员不是在修东西,而是在写代码。越少的工具和工具链意味着在工具维护上花更少时间,从而将更多时间用于在生产高质量软件。


代码即生产。不要让代码排队等待,而应该立马进入真实世界。这能让开发人员收到及时反馈的成就感。


开发人员可以专注于解决业务问题。简化的 CI/CD 流水线能够让开发者真正聚焦在重要的事情上,而不是让问题代码、繁琐的手动操作、生产问题等其他事项来分散注意力。


更容易创新。这是一个充满竞争的世界,组织需要所有可用的工具来勇立潮头。一个构建良好的 CI/CD 流程能够让软件研发更容易、更快和更安全,这也意味着 DevOps 团队有更多时间和精力去创新。


吸引并留下人才。人力市场的竞争激烈,DevOps 人才难以被打动。与其画大饼说 “我们很重视 DevOps 团队”,不如围绕 CI/CD 流程和技术来进行一些实际投资。


每一个人发挥所长。CI/CD 流水线帮助研发、运维、安全以及测试各司其职,发挥所长。


CI/CD 部署策略


请记住,CI/CD 的目标是更快、更好地将软件交付到客户手中,提高生产力。诀窍在于采用在企业内部行之有效的部署策略。以下是一些让 CI/CD 成功的策略:


  • 频繁提交代码;

  • 自动化构建流程;

  • 并行运行测试,并构建一个部署流水线;

  • 快速失败并且采取左移措施,为开发人员提供技能和工具,以便在不破坏整体流程的基础上实现加速;

  • 使用能够快速获得反馈的 CI 工具。


如何在组织中实施 CI/CD?


在实施任何软件之前,关键是要确定业务驱动因素是什么,采用 CI/CD 也是如此,所有研发相关者都应该尽早参与实施过程。研发人员应该提供意见,因为他们将是产品的主要用户。


虽然这看起来有违直觉,因为 CI/CD 是以自动化方式加速软件交付的步伐,但是需要以缓慢而平稳的心态开始整个过程。


在集成过程中保持一致性很重要。执行单元测试、手动发版以及追踪指标。然后决定什么可以自动化、什么应该自动化。

发布于: 刚刚阅读数: 6
用户头像

极狐GitLab

关注

开源开放,人人贡献 2021-05-19 加入

开放式一体化DevOps平台,助力行业高速协同增长!

评论

发布
暂无评论
CI/CD 最佳实践,让研发团队效率起飞!_DevOps_极狐GitLab_InfoQ写作社区