什麼是軟體工程的 CI/CD

跳脫舒適圈,離開老舊的手動上下版災難吧

Bruce Hsu
5 min readJan 3, 2022

最近看到 “持續交付 使用JAVA” 這本書,前面開始講古的說明JAVA是如何繁衍到現在的,以及交代了現在JAVA如何做到持續交付。

在還懵懂無知的時代,我們就是使用大量的 bat,shellscipt 來做一些程式包版、移動、運行,執行檔包執行檔 … 是非常家常便飯的事情。

現在

Continuous Integration / Continuous Delivery

是現代化軟體工作非常重要得一環,接下來想在這邊紀錄並分享一下,我們現在是如何自動化這些東西,讓我們有了這些基礎建設後,更專注在功能的實現、減少犯錯。

CI / CD ( 持續整合、持續發佈 )

這個觀念在說明著,軟體的生命週期應該是一個持續整合健康的程式碼、發佈新的程式,良好的 CI / CD 幫助我們更輕鬆的追蹤已知錯誤和專案近況。

一個舊有正常軟體開發的情境

試著想想,如果現在公司產品商業邏輯複雜,模組多,各專案有自己的打包方式,如果 CI/CD 的基礎設施沒有做好 … 每當修好一個模塊,或一個小功能,就要擔心什麼時候可以上版給 QA ,QA 在測之前又要擔心是不是部署成功,環境在哪,unit test 是不是都跑過了種種因素 … 是不是光想就頭很大 …
開發人員每天都膽戰心驚的上著自己的程式,而不能好好產出。

CI / CD 我來了

上頭的故事在軟體發佈的過程中,伴隨著的是

無數的程式碼整合、

無數的軟體測試、

無數的 hotfix ,快速反應 QA team 回報的問題

既然是 “無數的” ,簡單的說,他其實就是一直重複做的事情。

所以我們想做點事情來解決它,讓它朝著更好更健康的方向進行。

更安全不容易出錯、更懶惰的寫程式去幫我們做、或是更邪惡的想到這些事情能不能自動在某個時機點觸發

所以就我自己的初步認識,他應該是

  • 自動化管理組織的軟體交付流程
  • 盡可能的無感知 ( 不需要看著操作手冊去做,漏做一個步驟就毀天滅地,造成無法挽回的問題 )

--

--

Bruce Hsu

I'm a Java engineer, eager to learn new skills, technique and willing to take challenges.