antony@notes:~/ops-automation$ cat "CI-CD-Overview.md"
CI/CD Overview
CI/CD Overview
目錄 [TOC]
單人開發流程
- 攥寫Bash Script
- 執行程式 – > 成功
- 攥寫Dockerfile
- Build Image Run Container – > 成功
- Push Image
- 攥寫K8s Yaml檔
- Kubectl apply – > 符合預期
- 維運應用程式 —————– > 如有新需求 — > 回到第一步
:::spoiler 流程圖
:::
程式設計師的痛點
- 哪些東西需要備份?
- 如何備份?
- 程式碼版本差異如何得知?
- 時常出現的人為失誤如何減少?
- 人工手動的反覆步驟如何簡化?
夢想與現實
:::spoiler 示意圖
:::
三位工程師各自開發三個不同的新功能 (現實上很容易超過三個功能)
一個月後另一位工程師會來整合
發生 - > 整合地獄
最後測試人員 - > 測試 – > 部署上線

————————————————- 為了解決以上痛點
持續整合 Continuous integration (CI)
持續小規模小規模的(縮短時間週期)整合加測試 — > 快樂部署上線

持續交付 vs 持續部署(CD)
- Continuous delivery (手動)
- 持續交付:將整合+測試完成後的成果交付行為,減小規模、縮短週期,經過人工審查後交付(業界主流)
- Continuous deployment (自動)
- 持續部署:將整合+測試完成後的成果交付行為,減小規模、縮短週期,並且自動執行無人工審查(心臟要夠大顆)

導入Git
解決程式設計師的痛