什麼是 CI/CD?
CI(Continuous Integration,持續整合)是指開發者頻繁地將程式碼合併到主幹,每次合併都自動觸發建置與測試,快速發現問題。
CD(Continuous Delivery/Deployment,持續交付/部署)是指將通過測試的程式碼自動部署到各個環境,縮短從完成開發到上線的時間。
沒有 CI/CD:開發者手動建置 → 手動測試 → 手動部署 → 出問題手動排查
有 CI/CD:推送程式碼 → 自動建置 → 自動測試 → 自動部署 → 問題立即通知
有 CI/CD:推送程式碼 → 自動建置 → 自動測試 → 自動部署 → 問題立即通知
CI/CD 帶來的具體效益
- 更快的交付速度:從「每週發佈一次」縮短到「每天多次部署」
- 更高的程式碼品質:每次提交都自動跑測試,及早發現問題
- 降低部署風險:小步頻繁部署比大版本一次部署風險低得多
- 減少手動重複工作:釋放工程師時間,專注在有價值的開發
- 環境一致性:Docker 確保開發、測試、生產環境完全相同
GitLab CI 核心術語
| 術語 | 說明 |
|---|---|
| Pipeline | 一次 CI/CD 執行的完整流程,由多個 stages 組成 |
| Stage | Pipeline 的階段(如 build、test、deploy),同一 stage 的 jobs 並行執行 |
| Job | 實際執行的任務單位,包含 script 指令 |
| Runner | 執行 job 的機器,可以是 GitLab 共享的或自架的 |
| Artifact | job 產生的檔案,可傳遞給後續 stages 使用 |
CI/CD 工具比較
| 工具 | 適用情境 | 特色 |
|---|---|---|
| GitLab CI | GitLab 專案(自架或 SaaS) | 原生整合、自架 Runner、Container Registry |
| GitHub Actions | GitHub 專案 | Marketplace 豐富、YAML 語法簡潔 |
| Jenkins | 企業內部複雜需求 | 高度可客製、外掛生態豐富 |
下一步:完成環境設定,安裝並設定 GitLab Runner。