第二天:什麽是 CI/CD?

虽然一讲到敏捷开发、DevOps 时就很常听到 CI/CD 这些词汇,不过到底什麽是 CI?又什麽是 CD?当我们导入 CI/CD 後,又会有什麽样的好处呢?就让我们花一天的篇幅来科普一下。

什麽是持续整合(CI:Continuous Integration)

持续整合(英文原名 Continuous Integration,缩写 CI,以下内文为求精简皆会以缩写呈现)是软件开发的一种作法,它让一个软件专案里的每一位开发者定期同步彼此对原始码库的变更,然後在每次更改後检查程序码是否仍能通过编译与测试。CI 可以说是导入 DevOps 的第一步,也是建构和发布软件的重要关键,它可以促进协同合作、自动化并缩短回馈周期。

想要实践 CI 的话,得从定期的将变更提交至版本控制系统(通常是 Git)开始,以便让参与专案的每一个人都能在相同的条件下建置专案。每一次的提交都会触发一次建置以及一系列的自动化测试,以验证程序码的行为是正确并确保更改没有破坏任何内容。

什麽是持续部署(CD:Continuous Deployment)

持续部署(英文原名 Continuous Deployment,缩写 CD,以下内文为求精简皆会以缩写呈现)则是将 DevOps 自动化建置、测试和部署步骤的实践发挥到了极致。如果对程序码的变更成功通过了流水线(Pipeline)的各阶段,则该变更就会被部署到生产环境(Production Environment)中,无需任何人工介入。采用 CD 意味着您可以在维持相同软件品质的前提下,快速地为使用者提供新功能。

CD 以成熟的、经过良好测试的 CI 为基础。当一段程序码变更提交至程序码库後,就会在测试环境底下触发一系列的自动建置、测试等步骤。若是成功通过所有步骤且没有发现问题,就会将其部署上线。若能建构出强大且可靠的 CD 流程,意味着每天都可以部署非常多次而不用担心会发生意外。虽然不是每一个软件专案都适合导入 CD,但我们仍然可以从 CD 的实践精神中获益。

导入 CI/CD 有什麽好处?

发布软件是一个辛苦且耗时的过程。若其中有很多步骤需要透过手动执行、人为介入的话,中间就会产生出很多的风险。在过去,有些专案为了降低这种人为手动的风险而选择将提交与整合变更的时间拉长,但这样的方式反而让风险更高。导入 CI/CD 作法则是透过自动化工具来附低人为介入的比例,加上整合多种测试工具确保程序码的品质,因此可以在不影响品质的前提下更频繁地发布软件。若过程中有任何问题,CI/CD 服务器也会立即发出警报,团队可以在收到警报通知後再人为介入,大大的节省开发资源。除此之外,导入 CI/CD 还有这些明显的好处:

  • 更快地将产品送至市场做验证
  • 降低各种可能的风险
  • 相对较短的审阅时间
  • 更好的程序码品质
  • 平顺的软件发布路径
  • 更快的找到错误并修正
  • 更有效率的架构
  • 可度量的进程
  • 更紧密的回馈周期
  • 良好的合作与沟通
  • 最大化创造力

参考资料


<<:  Day7 风生水起,观元辰宫的木-2

>>:  6. Prototypal inheritance 的运作原理

Day 11 CSS <三大特性>

CSS中语法有着三大特性 分别为: 层叠性、继承性、优先性 1. 层叠性 若是设置给相同选择器相同的...

【Day 05】LeetCode:Plus One ( 用 JavaScript 学演算法 )

我们继续透过 LeetCode #66 Plus One 来实际感受解决问题的过程 ( 题目连结 )...

Day24. form_tag 与 simple_form_for 的用法 - 表单 part2

前一天,我们使用了simple_form_for提到了新增表单写法,而今天要讲一个上传情境。这个上传...

元件类别库魔术

今天要来介绍如何将自己撰写的元件包成元件类别库,并提供给 Blazor Server 与 Blazo...

Day1 前言

报名这次的铁人赛事十分紧张,对於我自己资讯方面的技术并不是那麽熟练,想利用铁人赛来督促自己学习新的...