跳至主要內容
ESC
跳到課程內容
技術與業務流程優化 CI/CD 與軟體開發流程
0%
16 / 25 中級 30 分鐘 00:00

CI/CD 與軟體開發流程

建構完整的 CI/CD 流水線架構,整合 Cloud Build、Cloud Deploy 與 Artifact Registry 實現安全的持續交付

2026年3月13日

CI/CD 的架構師視角

CI/CD 不只是開發團隊的事——對架構師而言,它是交付可靠性的關鍵基礎設施。一條設計良好的流水線能同時提升速度、安全性和穩定性;反之,混亂的部署流程往往是生產事故的根源。

Google Cloud 推崇以 DORA 指標(DevOps Research and Assessment)衡量軟體交付效能,PCA 考試也經常圍繞這些指標設計情境題:

DORA 指標說明精英團隊基準
部署頻率多常將程式碼部署至生產環境每天多次按需部署
變更前置時間從 commit 到上線的時間少於一天
平均復原時間(MTTR)從事故發生到服務恢復的時間少於一小時
變更失敗率導致服務降級的部署百分比0–15%

架構師的職責是設計讓這四項指標同時改善的系統——而不是為了快而犧牲穩定。

💡 考試小提示:當題目問「如何提高部署頻率同時降低變更失敗率」,答案通常指向自動化測試 + 漸進式部署 + 快速回滾機制的組合。

Cloud Build

Cloud Build 是 GCP 全代管的 CI/CD 服務,負責從原始碼到可部署產物的整個建置流程。

Build Triggers 與觸發機制

Cloud Build 支援多種觸發來源:

  • Cloud Source Repositories — GCP 原生 Git 倉庫,與 IAM 深度整合
  • GitHub / GitHub Enterprise — 透過 Cloud Build GitHub App 連接,支援 push、PR 和 tag 觸發
  • 手動觸發 — 適合需要人為控制的部署場景,可搭配參數化建置

cloudbuild.yaml 核心結構

每個建置由一系列 steps 組成,每個 step 指定一個容器映像和要執行的命令。Substitution Variables(如 $PROJECT_ID$COMMIT_SHA)讓同一份設定可跨環境重複使用,自訂變數以 $_ 前綴定義。

Private Pools

標準建置在 Google 代管的基礎設施上執行,但若需要存取 VPC 內的私有資源(如內部 Artifact Registry、資料庫),則需使用 Private Pools。Private Pool 的 worker 運行在你指定的 VPC 網路中,滿足網路隔離與合規需求。

Build Approvals

對於敏感環境的建置,可啟用手動核准(Manual Approval)。建置觸發後會暫停等待指定的審核者批准,確保關鍵變更經過人為確認。

Artifact Registry

Artifact Registry 是 GCP 的全代管產物管理服務,取代了舊版 Container Registry。它不僅支援 Docker 容器映像,還涵蓋多種語言套件:

  • 容器映像 — Docker、OCI 格式
  • 語言套件 — npm、Maven、Python(PyPI)、Go、Apt、Yum
  • 遠端倉庫(Remote Repositories) — 作為公共 registry(如 Docker Hub、npmjs.com)的代理快取,降低對外依賴並提升建置速度

漏洞掃描

Artifact Registry 與 Container Analysis 整合,自動掃描推送的映像中已知的 CVE 漏洞。掃描結果可作為部署閘門的輸入——只有通過安全檢查的映像才能進入下一階段。

💡 考試小提示:題目提到「集中管理多種格式的軟體產物」或「需要代理公共 registry」時,答案是 Artifact Registry,而非已棄用的 Container Registry。

Cloud Deploy

Cloud Deploy 是 GCP 的持續交付服務,專注於跨環境的漸進式部署。它與 Cloud Build 形成明確分工:Cloud Build 負責 CI(建置與測試),Cloud Deploy 負責 CD(環境推進與發佈管理)。

交付流水線

Cloud Deploy 的核心概念是 Delivery Pipeline,定義產物從開發到生產的推進路徑:

  1. dev — 自動部署,快速驗證
  2. staging — 整合測試,模擬生產環境
  3. prod — 需要手動核准(Approval Gates),搭配漸進式發佈策略

部署目標

Cloud Deploy 原生支援部署至 GKECloud RunGKE Enterprise,每個目標環境可設定獨立的部署策略和核准流程。

Canary 部署與回滾

Cloud Deploy 支援 Canary 部署——先將新版本導入一小部分流量(如 10%),驗證穩定後再逐步擴大。若偵測到問題,可一鍵回滾至上一個已知良好的版本,MTTR 大幅縮短。

安全軟體供應鏈

軟體供應鏈安全是近年來最受重視的架構主題之一。GCP 提供完整的工具鏈來保護從原始碼到部署的每一個環節。

SLSA 框架

SLSA(Supply-chain Levels for Software Artifacts) 是 Google 主導的開源框架,定義了多個安全等級(SLSA v1.0 為 Build L1–L3),從基本的建置記錄到完全可驗證的來源證明(Provenance)。Cloud Build 在符合條件的受管理建置環境下可產出符合 SLSA Level 3 的來源證明(build provenance)。

Binary Authorization

Binary Authorization 是部署前的最後一道防線。它要求容器映像必須通過指定的認證(Attestation) 才能部署到 GKE 或 Cloud Run:

  • 認證者(Attestor) — 定義誰有權簽署映像(如安全團隊、QA 團隊)
  • 簽章映像(Signed Images) — 使用非對稱金鑰簽署,確保映像未被篡改
  • 部署策略 — 只有攜帶所有必要認證的映像才能部署至生產環境

💡 考試小提示:當題目描述「確保只有經過安全審核的容器映像才能部署到生產環境」,答案是 Binary Authorization + Attestation。

部署策略比較

不同的部署策略適用於不同的風險承受度和業務需求。以下是 PCA 必考的四種策略:

策略原理停機時間回滾速度GCP 實作方式
滾動更新逐批替換舊版本實例零停機中等(需重新部署)GKE Rolling Update(預設策略)
藍綠部署維護兩套完整環境,切換流量零停機極快(切回舊環境)Cloud Run Revisions、GKE 雙 Deployment
Canary 部署小比例流量導向新版本,逐步擴大零停機快(縮減 Canary 比例)Cloud Deploy Canary、Cloud Service Mesh Traffic Splitting
流量分割按百分比分配流量至不同版本零停機快(調整百分比)Cloud Run Traffic Splitting(原生支援)

選擇原則:滾動更新適合常規發佈;藍綠部署適合需要即時回滾的關鍵服務;Canary 適合高風險變更的漸進驗證;流量分割適合 A/B 測試和灰度發佈。

SDLC 最佳實踐

Trunk-Based Development

Google 內部和業界精英團隊普遍採用 Trunk-Based Development——所有開發者向主幹分支(main/trunk)頻繁提交小型變更,搭配 Feature Flags 控制功能的啟用時機。這種模式避免了長壽命分支帶來的合併衝突,也讓 CI 流水線始終反映最新狀態。

環境推進策略

  • 不可變產物(Immutable Artifacts) — 同一個映像從 dev 推進到 prod,而非每個環境重新建置
  • 環境差異透過設定管理 — 使用環境變數、ConfigMap 或 Secret Manager 區分環境,而非修改程式碼
  • Secret Manager 整合 — CI/CD 流水線中的機敏資訊(API 金鑰、資料庫密碼)統一透過 Secret Manager 注入,避免硬編碼在原始碼或建置設定中

Feature Flags

Feature Flags 讓部署(Deployment)和發佈(Release)解耦——程式碼可以先部署到生產環境但功能尚未對用戶開放,待驗證完成後再透過 flag 啟用。這大幅降低了發佈風險。

實戰情境

情境一:受監管產業的安全 CI/CD

背景:一家金融科技公司需要建立符合 PCI-DSS 合規要求的 CI/CD 流水線,確保每一次部署都可追蹤、可稽核。

架構決策

  • 原始碼託管於 Cloud Source Repositories,啟用 IAM 細粒度存取控制
  • Cloud Build Private Pools 在專屬 VPC 內執行建置,網路與其他工作負載隔離
  • 每次建置自動產出 SLSA Level 3 來源證明,記錄建置環境和輸入來源
  • 映像推送至 Artifact Registry 後自動執行漏洞掃描,高危 CVE 自動阻擋
  • Binary Authorization 要求安全團隊和 QA 團隊雙重簽章認證,未認證映像無法部署至 GKE
  • 所有建置與部署日誌匯出至 Cloud Logging,搭配 BigQuery 實現長期稽核分析

情境二:多區域漸進式部署

背景:一個全球化 SaaS 產品需要將新版本安全地推送至三個區域(asia-east1、us-central1、europe-west1),任何區域出現問題都能快速回滾。

架構決策

  • Cloud Deploy 定義多階段交付流水線:dev → staging → prod-asia → prod-us → prod-europe
  • 每個生產區域採用 Canary 部署策略(10% → 50% → 100%),搭配 Cloud Monitoring 的自訂指標監控錯誤率
  • 區域間部署設定 Approval Gates,亞洲區驗證通過後才能推進至美國區
  • Cloud Run 的流量分割功能實現精確的 Canary 流量控制
  • 回滾策略:偵測到錯誤率上升時,Cloud Deploy 一鍵回滾至上一個穩定版本,影響範圍僅限單一區域

重點整理

  • DORA 四大指標是衡量 CI/CD 成效的黃金標準——部署頻率、變更前置時間、MTTR、變更失敗率
  • Cloud Build 負責 CI:建置觸發、cloudbuild.yaml 定義流程、Private Pools 滿足安全需求
  • Artifact Registry 統一管理容器映像和語言套件,支援漏洞掃描和遠端倉庫代理
  • Cloud Deploy 負責 CD:交付流水線定義環境推進路徑,支援 Canary 部署和核准閘門
  • Binary Authorization + SLSA 構建安全軟體供應鏈,確保只有經過驗證的映像才能部署
  • 部署策略各有適用場景——滾動更新、藍綠、Canary、流量分割需根據風險和業務需求選擇
  • Trunk-Based Development + Feature Flags + 不可變產物是 SDLC 最佳實踐的三大支柱

下一步

在下一課中,我們將探討業務流程分析與成本優化,掌握 FinOps 實踐、GCP 計費模型與成本管理工具鏈,學習從業務角度進行架構成本優化。

徽章解鎖!