DevOps 是一種理念,目的是讓開發到發佈的速度、穩定性都能提升。
而 CI/CD 是實踐 DevOps 的其中一種實踐方式,CI/CD 分成 持續整合、持續交付、持續部署。
如果我們的產品已經步上正軌,我們會遇到很多重複的事情:
這樣的話,我們出版可能就要花個一兩天,如果我們一兩週出一次版,那是很高的時間佔比,所以就需要 CI/CD 了。
先用白話文說,CI 就是一個機器人,跟它說什麼情況下幫忙做什麼事,它還會在事情完成後通知我們。
CI 可以在自己的電腦、自家的 server、雲端服務上架設(不同 CI 能支援),也有線上的服務,而他就是台電腦,所以可以寫任何程式在裡面呼叫執行,只是透過該 CI 軟體的 GUI 或語言來設定。
我們可以選擇很多種觸發方式,例如:
舉例一般的情境:
我們讓 CI 偵測某 branch 被 push 後,執行測試,待測試完畢且通過後,編譯出我們要的檔案,並且不論成功或失敗,都發消息至通訊軟體中提示開發人員。
有很多,只列出一部分:
GitHub Actions
GitLab CI/CD
Jenkins
CircleCI
另外,CI 可能有 plugin 可以幫我們省下不少時間,像是 GitHub Actions 的部分就有上萬種插件,Jenkins 的部分也有很多,還可以繪製圖表。