CI/CD 概念

Ngchiwa Ng
OrienteBar
Published in
4 min readNov 3, 2018

在軟體行業演變中,大家有沒有想過從過往的每個月release 其實可以演變成每天release?如果是可以的話, 又如何確保code的品質?

答案 — 就是CI/CD

CI/CD 這個term 在目前在軟體業界非常popular, 它可以大幅減少開發到release 的時間。

對一個工程師新手來說, CI/CD是什麼?它的概念是什麼?如果有興趣的話, 歡迎往下看。。。

CI/CD — 其實就是持續交付(Continuous Integration,簡稱CI)和 持續發佈(Continuous Delivery,簡稱CD)

為什麼要CI/CD?, CI/CD 都 Continuous , 有什麼特別的涵意嗎?是有什麼好處嗎?

不知大家有沒有這樣的經驗, 你和你的同事一同開發一個功能, 從昨日到今天, 大家修改了不的程式碼, 到最後就不知道那個commit 弄壞了一整個程式?

或大家各自開發, 到最後整合失敗的, 但你的同事都說 “在我的開發環境是好的“

看到這邊,相信大家都㑹㑹心一笑 :)

我們有沒有一個方法, 只要code 有變動, 就幫我進行測試呢?

答案, 就是CIContinuous 一小步的改動就應該做 Integration, 進行unit test, 確保code 是可以整合成功, 如果測試失敗的話, 就㑹立刻發現, 就應該把錯誤修正。好處是, 儘早知道問題。可以早日修正。

而CD是CI的延伸,當測試成功後, 就可以包成package或release 一個版號。讓QA 針對讓版本進行自動測試。QA 進行自動化測試比較是偏向商業邏輯的測試, 而之前的integration 的比較是進行complie 有沒有成功, 給unit test 的測試。

其實,還有一個叫 Continuous Deployment

What? 還有一個CD?

Continuous Deployment

Continuous Delivery 就是QA 的測試後, 自動化把code deploy 到production

Continuous Delivery vs Continuous Deployment

Continuous Delivery 和 Continuous Deployment 最大的差別就是deploy 到production, Continuous Delivery 是有一個release manager 在把關,決定什麼時候要才要release 或 週期性(一星期一次/兩星期一次/一個月…)的release , 而Continuous Deployment 只要通過測試, 就代表 code 是可以安心直接上production :)

Continuous Integration / Continuous Delivery /Continuous Deployment的核心,只要code 一改動,經過自動化的測試,就自動化可以deploy 到production,最重要就是自動化測試。沒有測試, 就算是自動化也不㑹安心把code 放上到production。

在軟體行業,CI/CD 加速了整個開發到deploy 的流程(全自動化,沒有人為的介入)。想想, 你覺得 人類 可以每天測的test case 比較多, 還是電腦?想通了, 就㑹覺得應該要導入CI/CD 的流程。

希望這篇文章對工程師新手有幫助 :)

--

--