什麼是軟體工程的 CI/CD
最近看到 “持續交付 使用JAVA” 這本書,前面開始講古的說明JAVA是如何繁衍到現在的,以及交代了現在JAVA如何做到持續交付。
在還懵懂無知的時代,我們就是使用大量的 bat,shellscipt 來做一些程式包版、移動、運行,執行檔包執行檔 … 是非常家常便飯的事情。
現在
Continuous Integration / Continuous Delivery
是現代化軟體工作非常重要得一環,接下來想在這邊紀錄並分享一下,我們現在是如何自動化這些東西,讓我們有了這些基礎建設後,更專注在功能的實現、減少犯錯。
CI / CD ( 持續整合、持續發佈 )
這個觀念在說明著,軟體的生命週期應該是一個持續整合健康的程式碼、發佈新的程式,良好的 CI / CD 幫助我們更輕鬆的追蹤已知錯誤和專案近況。
一個舊有正常軟體開發的情境
試著想想,如果現在公司產品商業邏輯複雜,模組多,各專案有自己的打包方式,如果 CI/CD 的基礎設施沒有做好 … 每當修好一個模塊,或一個小功能,就要擔心什麼時候可以上版給 QA ,QA 在測之前又要擔心是不是部署成功,環境在哪,unit test 是不是都跑過了種種因素 … 是不是光想就頭很大 …
開發人員每天都膽戰心驚的上著自己的程式,而不能好好產出。
CI / CD 我來了
上頭的故事在軟體發佈的過程中,伴隨著的是
無數的程式碼整合、
無數的軟體測試、
無數的 hotfix ,快速反應 QA team 回報的問題
既然是 “無數的” ,簡單的說,他其實就是一直重複做的事情。
所以我們想做點事情來解決它,讓它朝著更好更健康的方向進行。
更安全不容易出錯、更懶惰的寫程式去幫我們做、或是更邪惡的想到這些事情能不能自動在某個時機點觸發
所以就我自己的初步認識,他應該是
- 自動化管理組織的軟體交付流程
- 盡可能的無感知 ( 不需要看著操作手冊去做,漏做一個步驟就毀天滅地,造成無法挽回的問題 )