technine.io
深色背景下,藍色和紅橙色光線照亮一個帶齒的金屬齒輪特寫。

指南

CI/CD 是甚麼?將建置、測試和發佈步驟自動化

CI/CD 把程式修改由開發人員交到運行中網站或 App 的步驟自動化。了解這兩個詞的意思、流水線會做甚麼、它的限制,以及應向團隊查詢甚麼。

更新於

CI/CD 是持續整合(continuous integration)和持續交付(continuous delivery,或持續部署)的簡稱,指把程式修改由開發人員的電腦送到運行中網站或 App 的步驟自動化。團隊不必每次都靠人手建置、檢查和發佈,而是由流水線(pipeline)對每項修改按同一次序執行同一套約定好的步驟。

CI 和 CD 各指甚麼

  • 持續整合(CI):開發人員頻繁把修改合併到共用的程式碼庫,每次合併都會自動觸發建置和一組檢查,例如自動化測試。問題在修改後不久便會出現,仍然容易追查。
  • 持續交付(CD):檢查通過後,修改會被打包並準備好,可以發佈到測試或正式環境。最後的發佈通常仍由人員批准。
  • 持續部署:再進一步,通過所有檢查的修改會自動上線,不需要人手批准。並非每個團隊或企業都想這樣做。

「CD」可以指交付,也可以指部署,因此不妨向供應商確認他們指的是哪一種。

典型流水線會做甚麼

流水線因項目而異,常見步驟包括:

  • 建置:把原始碼轉成可以運行的版本。
  • 自動化測試:測試較小的邏輯單元,也測試較完整的流程。每次修改後重複執行以往的檢查,正是回歸測試的概念。
  • 程式碼和依賴項檢查:按項目的設定,套用格式規則,並檢查項目所用的程式庫有沒有已知問題。
  • 部署到 Staging 環境:把建置結果放到 Staging 環境 供進一步審閱。
  • 發佈到正式環境:經批准後或自動把修改發佈到正式系統,並最好設有回復到上一版本的方法。

如果其中一個步驟失敗,流水線會停下來並通知團隊,有問題的修改就不會繼續前進。

委託開發軟件時為何要留意

  • 減少人手失誤:寫成程式的步驟每次都以同一方式執行,較不容易被遺漏。
  • 及早得到回饋:有問題的修改在流水線內已被發現,不用等客戶發現。
  • 發佈規模較小:頻密的小修改,比一次過發佈一大批內容更容易審閱,也更容易撤回。
  • 有發佈記錄:流水線記錄顯示哪個版本去了哪裏,以及通過了哪些檢查。

CI/CD 做不到的事

  • 不能取代良好的測試。流水線只會執行已經存在的檢查。如果沒有測試涵蓋預約或付款,流水線通過並不代表這些功能沒有問題。
  • 不能取代業務方面的審閱。員工和客戶仍需確認軟件符合實際工作,例如透過用戶驗收測試。
  • 設定和維護都需要投入。需要有測試、環境、權限,以及負責保持流水線運作的人。
  • 並非每個項目都同樣需要。很少更新的小型網站,用較簡單的流程可能已經足夠。

以下為說明用例子:一間小公司經營網上預約系統。開發人員修改了時段的選擇方式。流水線建置這項修改,執行包括預約流程在內的自動化測試,再部署到 Staging 環境。員工在 Staging 環境試用新畫面,再由指定人員批准發佈到正式系統。如果預約測試失敗,修改會在到達 Staging 環境前停下,開發人員也會收到通知。

應向開發團隊查詢的問題

  • 有沒有自動化流水線?它會執行哪些步驟?
  • 哪些測試會自動執行?涵蓋哪些主要流程?
  • 每項修改是否都會經過 Staging 環境?
  • 誰負責批准發佈到正式環境?發佈如何安排時間?
  • 發佈後如何回復到上一版本?由誰操作?
  • 交接後,誰負責維護流水線,並保管其存取金鑰和機密資料?

針對關鍵用戶流程的自動化檢查,可以是流水線的其中一個步驟,也可以在用戶收到修改前,針對 Staging 版本或發佈候選版本執行。想了解 technine.io 的做法,請參閱我們的自動化 UI 測試服務。系統上線後,發佈、監察和維護通常由託管支援及 SLA涵蓋。

常見問題

CI/CD 只適用於大型企業嗎?

不是。這些做法適用於任何規模的項目,小項目的流水線也可以很簡單。不少程式碼託管和雲端平台都內置基本的流水線工具,但仍然需要有人決定執行哪些檢查,並持續更新。

用了 CI/CD,網站是否每天更新很多次?

不一定。CI/CD 讓發佈有固定做法,風險也較低。多久發佈一次屬於業務決定,不少團隊按預定時間表發佈。

CI/CD 等於 DevOps 嗎?

不等於。DevOps 是讓開發和營運團隊互相配合的較廣泛工作方式,CI/CD 是其中一套做法。

諮詢WhatsApp
CI/CD 是甚麼?淺白易明的入門指南 | technine.io