FSTS 版本開發生命週期與 CI/CD Pipeline

OMS 專案(.NET 8 + Docker + GitHub Actions)從需求到 Production 的端到端流程,以及背後的 CI/CD Pipeline 組件。回到 FSTS 專案總覽,相鄰規範:後端編碼規範前端編碼規範

一句話

OMS 採「push 即部署」模式:push 程式碼 → GitHub Actions 跑測試並 build Docker image → 推到 GHCR → Watchtower 自動偵測並更新容器;整條流程由 六大關鍵節點 把關(需求建立 → 開發分支 → CI Pipeline → AI Code Review → UAT 驗證 → Production 部署)。12

六大關鍵節點總覽

#節點把關方式是否需人工
1需求建立PM / PO 確認範圍
2開發分支feature/* / fix/* + AI 輔助
3CI PipelineLint → Build → Test → Security Scan → Quality Gate自動
4AI Code Review🔴 Must Fix = 0 才可合併自動
5UAT 驗證Watchtower 自動部署 + PM/QA 驗收
6Production 部署AI Review + 人工 Review(≥ 1 Approve)+ Environment Gate

把關分層:進 UAT 由「CI + AI Review」自動把關,不需人工審核可快速迭代;進 Production 則要「AI Review + 人工 Review」完整審查後才上線。34

端到端流程摘要

開發     feature/* / fix/*  →  git push
   │
CI       Lint → Build → Test → Security Scan → Quality Gate
   │
AI 審查  AI Code Review(🔴 Must Fix = 0)
   │
UAT      自動合併 → Watchtower 部署 → PM / QA 驗收
   │
審核     AI Review + 人工 Review(1 人 Approve)
   │
上線     Environment Gate → Push :latest → Health Check
   ▼
v{X.Y.Z} 上線完成

5

節點 1–2:開發 → CI 自動驗證

開發分支(節點 1–2):6

  • 建立 feature/*fix/* 分支
  • 開發者自行決定 AI 輔助程度
  • 撰寫程式碼 + 單元測試
  • git push 觸發 CI Pipeline

CI Pipeline

  • Lint & Format Check
  • Build(Docker multi-stage)
  • Unit / Integration Tests
  • 安全掃描:CodeQL、Gitleaks、Trivy
  • Quality Gate 判定

節點 3–4:AI Code Review → UAT 驗證

AI Code Review:由工具檢查 7

  • 程式邏輯 & 潛在 Bug
  • 架構一致性 & 命名規範
  • 安全性審查
  • 測試充分性評估
  • 🔴 Must Fix = 0 才可合併

UAT 驗證環境

  • PR → uat 自動觸發
  • Watchtower 自動部署 :uat image
  • PM / PO 功能驗收
  • QA 測試(手動 + 自動)
  • 效能測試(若有重大變更)
  • 通過 → 建立 PR: uat → prod

節點 5–6:人工審核 → Production 部署

人工 Code Review8

  • PR: uat → prod 觸發
  • 查看 AI Review 報告
  • 程式碼 Diff 審查
  • 商業邏輯正確性
  • UAT 驗收結果確認
  • 至少 1 人 Approve

Production 部署

  • Merge to prod → CD Pipeline
  • Environment Gate(人工 Approve)
  • Push :latest → GHCR
  • Watchtower 自動拉取更新
  • Health Check 驗證
  • 上線後監控(至少 30 分鐘)

CI / CD 分工

兩個完全獨立的 workflow:9

面向CICD
觸發開 PR 到 main/uatPush 到 prod/uat
內容Unit + Integration + API TestTest → Build Image → Push GHCR
目的驗證 PR 品質打包發佈 image

環境對應與 Watchtower 自動部署

環境分支Image tag
Productionprod(由 main 合入)latest
UATuatuat

Watchtower60 秒 檢查 GHCR,偵測新版 → 自動拉取 → 重啟容器;merge PR 到 main 後約 2–3 分鐘 Production 即自動更新。10

每次 build 都會附帶 commit SHA tag(例 oms-api:a1b2c3d),確保可精確回滾。

回滾機制 SOP

出問題時:11

  1. 停掉 Watchtowerdocker stop watchtower
  2. 指定版本重建容器:用 commit SHA tag 啟動舊版
  3. 確認穩定後恢復docker start watchtower

安全重點

  • 敏感設定不進 Git:DB 連線字串、JWT Secret 放 VM /opt/oms/ 目錄,透過 Docker volume mount
  • 檔案權限控管:設定檔 chmod 600,只有擁有者可讀寫
  • SSH Key Only:禁用密碼登入,只允許 SSH Key 認證
  • 最小權限原則:GitHub PAT 只給 read:packages 權限

12

相關頁面

補充資訊

(未來 ingest 新來源會在此追加段落)


參考資料

Footnotes

  1. OMS-CodingRule-CICD §Slide 13 Pipeline 全景

  2. OMS-CodingRule-CICD §Slide 15 Summary

  3. 版本開發生命週期 §Slide 2 流程總覽

  4. OMS-CodingRule-CICD §Slide 17 流程總覽

  5. 版本開發生命週期 §Slide 3 端到端流程摘要

  6. 版本開發生命週期 §Slide 4 節點 1~2 開發 → CI

  7. 版本開發生命週期 §Slide 5 節點 3~4 AI 審查 → UAT

  8. 版本開發生命週期 §Slide 6 節點 5~6 人工審核 → Production

  9. OMS-CodingRule-CICD §Slide 13 CI vs CD

  10. OMS-CodingRule-CICD §Slide 13 環境對應 + Watchtower

  11. OMS-CodingRule-CICD §Slide 14 回滾 SOP

  12. OMS-CodingRule-CICD §Slide 14 安全重點