CI/CD 自動化 — GitHub Actions
GitHub Actions 讓你在「特定事件發生時」自動跑工作流程—— 最常見的就是 CI/CD:程式碼 push 後自動測試、建置、部署。
| 名詞 | 意義 |
|---|---|
| Workflow | 一個自動化流程,寫在 .github/workflows/*.yml |
| Event | 觸發條件(push、pull_request、schedule…) |
| Job | 一個工作單位(在一台 runner 上跑) |
| Step | Job 裡的一步(跑指令或呼叫 action) |
| Action | 可重用的步驟套件(GitHub Marketplace 下載) |
| Runner | 執行環境(ubuntu-latest 等虛擬機) |
放在 .github/workflows/ci.yml:
name: CI on: push: branches: [main] pull_request: jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - run: npm ci - run: npm test
把 workflow 接上「保護分支」(單元 4),PR 的 CI 沒通過就不能合併—— 這是團隊品質的第一道防線。
Settings → Branches → Branch protection ├── Require status checks to pass └── 勾選你的 workflow 名稱(如「test」)
workflow 需要 API key、Token 時,不要寫死在 YAML,用 Secrets 加密存放。
# 設定:Settings → Secrets and variables → Actions # 名稱如:MY_API_KEY # 使用:在 workflow 中以 ${{ secrets.MY_API_KEY }} 引用 env: API_KEY: ${{ secrets.MY_API_KEY }}
echo $API_KEY」這種 debug 動作會把機密印出來。
| Action | 用途 |
|---|---|
actions/checkout | 把 repo 程式碼抓到 runner |
actions/setup-node / setup-python | 安裝指定語言環境 |
actions/cache | 快取相依套件,加速 CI |
actions/upload-artifact | 上傳建置產物 |
actions/deploy-pages | 部署到 GitHub Pages(單元 6) |
dependabot(內建) | 自動更新相依套件並開 PR |
on: push: # push 時 schedule: # 定時(cron) - cron: "0 3 * * *" workflow_dispatch: # 手動按鈕
cron 語法為「分 時 日 月 週」五段。0 3 * * * = 每天凌晨 3 點。