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 install
、pip 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 就會自動幫我建置、測試、打包、部署,一次搞定,完全不需要手動操作!」
這不只幫你省時間、降低出錯機率,也讓整個開發流程更穩定、更容易團隊協作。