CI/CD:自動化部署為什麼重要?
CI/CD 是什麼?
CI(Continuous Integration)持續整合:
每次 commit → 自動 build → 自動跑測試 → 結果回報
→ 早期發現問題,不要等到部署才爆
CD(Continuous Delivery)持續交付:
CI 通過 → 自動部署到 Staging → 手動核准 → 部署到 Production
CD(Continuous Deployment)持續部署:
CI 通過 → 自動部署到 Production(完全自動,不需要人核准)
沒有 CI/CD 的痛
1. "昨天還能跑的,今天怎麼壞了?"
→ 沒有自動測試,不知道哪個 commit 引入了 bug
2. 部署花 2 小時(手動 build → FTP 上傳 → 改設定 → 重啟)
→ 害怕部署 → 部署越少 → 每次部署的改動越多 → 越容易出錯
3. "我本地跑得好好的!"
→ CI 確保程式碼在乾淨環境也能 build
你的 DevLearn 的部署流程
現在的流程(半自動):
1. dotnet publish -c Release(手動)
2. python deploy.py(zip + az webapp deploy)
3. 等 Azure 啟動(3-5 分鐘)
理想的流程(CI/CD):
1. git push → GitHub Actions 自動觸發
2. 自動 build + 自動跑測試
3. 測試通過 → 自動部署到 Azure
4. 部署完成 → 自動通知(LINE / Discord)
部署策略
Rolling:逐步更新(一台一台換)
→ 零停機,但新舊版本會同時存在
Blue-Green:兩套環境切換
→ Blue(舊版)跑著,Green(新版)準備好
→ 切換流量到 Green,有問題切回 Blue
Canary:先給少數使用者
→ 新版先給 5% 使用者
→ 沒問題再慢慢開到 100%
你目前的單一 Azure App Service + zip deploy 是最簡單的方式,對學習平台足夠了。