AWS CI/CD 從零開始 – 工具地圖與架構總覽

更新日期: 2025 年 6 月 9 日

在現代軟體開發流程中,CI/CD(持續整合 / 持續部署) 幾乎已經是標配。

它的目的是:

  • CI(Continuous Integration):讓團隊每天能安全整合程式碼、自動建置與測試,減少衝突
  • CD(Continuous Deployment):讓驗證過的程式碼能自動上線,提高部署效率與穩定性

過去需要手動建置與上線的流程,現在透過自動化工具能「少踩雷」、「減少人為疏失」、「大幅加快速度」。

AWS 提供了一套完整的 CI/CD 工具鏈,讓你從寫程式到自動部署一條龍搞定。

什麼是 AWS CI/CD 工具地圖?

想像你開了一間程式碼工廠,要把寫好的網站程式「打包、測試、運送」到伺服器上,這時 AWS 提供了一整套員工幫你分工合作,我們可以分成 5 種角色(工具):

工程角色負責的 AWS 工具白話職責說明
📁 原始資料夾CodeCommit放你寫好的程式碼(像 GitHub,但在 AWS 裡面)
🧠 流程總管CodePipeline每次有新程式碼,就下指令請大家開始動作(像工廠主管)
🔧 建築工人CodeBuild幫你裝套件、跑測試、打包成 Zip(像工人蓋房子)
🚚 配送人員CodeDeploy把打包好的程式送到 EC2 / Lambda(像黑貓宅急便)
📦 倉庫管理員CodeArtifact儲存打包後的東西,讓未來也能重複使用(像公司倉庫)

這五個角色彼此可以各做各的,但更強大的玩法是——把他們串成一條自動化產線,只要你 git push,他們就會自動幫你搞定所有流程!

工具怎麼串起來?

以下是一個典型的 AWS 自動部署流程圖,你什麼都不用手動做,只要負責寫程式、Push 上去就好:

flowchart TD
    A[📁 CodeCommit 原始碼] --> |你 Push 程式上來| B[⚙️ CodePipeline 流程總管]
    B --> |發號施令| C[🔧 CodeBuild 建置]
    C --> |安裝套件、跑測試、打包程式| D[🚀 CodeDeploy 部署]
    D --> |把程式送到 EC2/Lambda| E[🖥️ EC2 / ECS / Lambda<br/>你的網站就上線了]

更深入了解每個工具的角色

CodeCommit(Git 倉庫)

就像是 AWS 版的 GitHub,是你用來放程式碼的地方:

  • 支援所有 Git 操作(clone、push、分支管理)
  • 可以當作 CodePipeline 的觸發點
  • 跟 IAM 整合,控制誰可以存取哪個 repo

📁 適合內部專案、不想依賴外部平台(像 GitHub)

CodePipeline(流程總管)

像是 CI/CD 工廠的「主管」,負責排流程、監督整個自動化過程:

  • 一發現你 Push 了新程式碼,就立刻通知其他人開始動工。
  • 可分階段安排工作(先建置,建置成功後再部署)
  • 可以設「審核關卡」(像經理簽核才讓程式上線)

CodeBuild(建置工人)

負責把你寫的程式「蓋起來」的角色:

  • 幫你裝好套件(npm installpip install 等)
  • 執行測試確保沒 bug(跑 npm test
  • 打包成可部署的檔案(像 dist/ 資料夾或 app.zip

👷 你只要寫好 buildspec.yml,他就照著你的指令做事!

# 這是 CodeBuild 會看的腳本(像是工作說明書)
version: 0.2
phases:
  install:
    commands:
      - npm install
  build:
    commands:
      - npm run build
artifacts:
  files:
    - '**/*'
  base-directory: dist/

CodeDeploy(送貨員)

負責把 CodeBuild 打包好的程式送到你的 EC2 或 Lambda 上,讓網站可以運作:

  • 會幫你解壓縮檔案、安裝到指定位置
  • 可以幫你重啟伺服器或服務(像 pm2 restart
  • 支援「逐台更新」或「藍綠部署」(怕一次全上壞掉)

📦 你只要寫好 appspec.yml 指令,它就會幫你照順序執行。

# 這是部署流程的說明書
version: 0.0
files:
  - source: app.zip
    destination: /home/ec2-user/app
hooks:
  ApplicationStart:
    - location: restart.sh
      runas: ec2-user

CodeArtifact(套件倉庫)

如果你有開發內部套件,或想自己架一個 npm registry:

  • 可以上傳你自己的 NPM / Python / Java 套件
  • 或儲存建置產物(如打包好的 zip 檔)
  • 可與 CodeBuild 串接,讀取 / 上傳套件

你也可以設定讓它「代理外部 npm」,加速安裝又能集中管理。

# 將 npm 預設 registry 改成你自己架的 CodeArtifact 倉庫
npm config set registry https://your-domain.d.codeartifact.region.amazonaws.com/npm/your-repo/

舉例說明:一個完整的 AWS CI/CD 流程會長什麼樣子?

想像一下你有一個用 Node.js 寫的網站,放在 AWS EC2 主機上運行,現在你希望每次改完程式碼,只要一個 git push,整個「上線流程」就能全自動完成——這就是 CI/CD 在幫你做的事。

下面用最簡單的方式來說明整個流程會怎麼跑 👇

1️⃣ 程式碼放進 AWS 的 Git 倉庫(CodeCommit)

  • 你寫完程式碼後,像平常一樣下指令:
  git push origin main
  • AWS 上的 CodeCommit 就會收到這次更新。

2️⃣ CodePipeline 偵測到有更新,就會自動開始跑流程

  • 這就像一個工廠主管,它一看到你有新程式,就會幫你把工作交給下面幾位員工(工具)來處理。

3️⃣ CodeBuild 幫你蓋房子(也就是建置應用)

這一段會自動做以下事情:

  • 安裝 npm 套件(你平常要跑的 npm install
  • 執行測試(確保你程式沒壞)
  • 打包程式(例如前端的 build)
  • 把整個程式壓成一個 app.zip
  • 丟到 AWS S3 或 CodeArtifact(方便之後下載來部署)

✅ 這些步驟你平常手動要做,但現在全部自動搞定。

4️⃣ CodeDeploy 負責上線,把程式部署到 EC2

  • 它會自動下載剛剛的 app.zip
  • 解壓縮到你指定的資料夾(像 /home/ec2-user/app
  • 然後執行你寫好的指令(像 npm start 或重啟 PM2)

這過程中你還可以設定:

  • 部署前先停掉原本的程式
  • 部署後再啟動新版
  • 如果失敗就自動回滾到上一版

5️⃣ 完成!整個過程不需要你動手,網站就更新好了 🎉

這就像是:

你只負責把程式碼放上去,剩下的「打包 → 上傳 → 安裝 → 重啟」,全部交給 AWS 自動幫你做。

✨ 額外可以加上的強化工具(選用)

工具可以幫你做什麼
IAM控制誰能做什麼(例如誰能部署)
Secrets Manager安全地儲存密碼或 API 金鑰,不用硬寫在程式裡
CloudWatch看建置或部署過程的 Log,有錯誤可以馬上追蹤
SNS + 通知部署完可以自動傳訊息到 Email 或 Slack

總結一句話

這整套流程的目的就是:

「只要我 push 了程式碼,AWS 就會自動幫我建置、測試、打包、部署,一次搞定,完全不需要手動操作!」

這不只幫你省時間、降低出錯機率,也讓整個開發流程更穩定、更容易團隊協作。

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *