CI/CD 中的 CI 流程中该包含什么?

2024年3月26日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

前篇文章我们提到 CI 是持续整合,意思是让多个开发者,能够共同在同个代码库中开发不同的新功能,然后能够持续整合到某个分支上面。之所要持续做这件事,是因为开发不同功能时,代码可能会有冲突,而持续地整合就能及早化解冲突。

CI 流程会在代码推到远端分支后开始

一般来说,CI 流程会在代码推到远端分支后开始。现代的 CI 工具,会在代码推到远端分支后,由 CI 的伺服器完整跑过整个 CI 流程。而现代软体开发团队的 CI 流程,做的不仅仅是确保代码合并没有冲突。大家可以稍微回想一下,在自己的代码被部署之前,还会做什么?

多数人应该第一直觉会说是 Code Review。而在 Code Review 之前有许多能够自动化被检查的东西,也会被放在 CI 的流程中。举例来说,常见的包含代码格式化检查、代码静态检查。

代码格式化检查

代码格式化检查在做的事情,是统一代码的格式规范,例如 JavaScript 的 Prettier。很多工程师会喜欢用两格缩排,另外有些人喜欢四格,与其在 Code Review 花时间争论要两格还是四格,团队可以直接有规范,然后在 CI 的时候用格式化检查的工具,来扫过代码,确保每个有符合团队设定的格式风格。

静态检查

同样地静态检查工具,会对代码做静态分析,然后扫过代码,确保有符合团队所设立的相关规则,或者有符合程式语言的规则。举例来说,TypeScript 的 TSLint 会帮忙检查代码是否符合 TypeScript 的规则。很多工程师自己没注意到的,很可能在静态检查被找出来,这能避免有问题的代码被合并。

自动化测试

除了上面提到的两项检查,多数团队也会在 CI 流程中,加入自动化测试的环节。包含单元测试、整合测试、E2E 测试,如果新推到远端分支的代码,没有通过任一项测试,CI 工具就会报错,并且推送通知给相关人员。透过这方式,我们能确保代码在合并前,有经过完整的测试,这样能确保代码的正确性与品质有被兼顾到。

顺利被建构

当然除了上面提到的这些各类检测,CI 中的最重要环节之一,是确保代码能够被编译以及建构。为了确保不会浪费运算资源,通常会是在上面这些检测都通过后,才会建构。而要能顺利被建构,代码才能被部署。

在业界,许多软体开发团队会在 CI 当中加入其他更精细的检测,例如针对安全 (security) 做检测,避免写出有潜在漏洞的代码;或者对效能 (performance) 做检测,来确保代码的效能有达到一定的门槛。你可以针对团队的需求,在 CI 中加入各类自动化做的检测,确保团队的工程品质能维持。

而回到 CI 最核心的作用,是透过自动化的方式,让工程师可以在把代码推到远端分支后,不用自己手动,就能完成这些重要的检测,并完成代码的整合。


相关文章

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們