使用 CodePipeline 建立管線

在 AWS 上自動化部署

Dunieski Otano

Amazon Web Services Solutions Architect

多階段管線

多階段管線:成品、審核、EventBridge 預覽

在 AWS 上自動化部署

CodePipeline 管線結構

  • 管線是由多個階段(stage)組成的序列
  • 每個階段包含動作群組動作
  • 動作會產生與消耗成品(artifact)(儲存在 S3)
  • 下一個階段會將成品作為輸入

codepipeline-anatomy-stages-actions-artifacts.png

在 AWS 上自動化部署

串接來源、建置與部署

  • 來源階段:CodeCommit 偵測 push,輸出來源成品
  • 建置階段:CodeBuild 接收來源,輸出建置成品
  • 部署階段:CodeDeploy 接收建置成品,部署到目標
  • 每次推送程式碼時,管線會端到端執行

3-stage-pipeline

在 AWS 上自動化部署

人工審核動作

  • 人工審核:在階段之間加入人工關卡
  • 管線會暫停,直到有人核准或拒絕
  • 常見用法:作為 Staging 與 Production 間的關卡
  • 狀態顯示「Waiting for approval」,支援 SNS 通知

人工審核關卡:團隊主管檢視管線

在 AWS 上自動化部署

階段轉換與管線控制

  • 啟用/停用階段轉換
    • 停用可在特定點暫停管線
  • 重試失敗動作,不需重啟整條管線
  • 手動釋出變更,推送指定修訂版

 

codepipeline-stage-transition-controls-retry-release.png

在 AWS 上自動化部署

管線事件通知

codepipeline-anatomy-stages-actions-artifacts.png

  • CodePipeline 會將事件送至Amazon EventBridge
  • 事件包含:管線開始、階段成功、階段失敗
  • 建立EventBridge 規則將事件路由到目標
    • SNS 主題用於電子郵件/SMS 警示
    • Lambda 函式用於自訂自動化
  • 事件詳細資訊包含管線名稱、階段名稱與失敗原因
在 AWS 上自動化部署

多環境管線設計

  • 使用單一管線部署到多個環境
  • 建置一次再推進:Dev -> Staging -> Approval -> Prod
  • 同一個成品貫穿所有環境
  • 測過的就是實際部署的內容

multi-environment-pipeline-dev-staging-approval-prod.png

在 AWS 上自動化部署

一起來練習吧!

在 AWS 上自動化部署

Preparing Video For Download...