單元 7 · GitHub Actions

CI/CD 自動化 — GitHub Actions

GitHub Actions 讓你在「特定事件發生時」自動跑工作流程—— 最常見的就是 CI/CD:程式碼 push 後自動測試、建置、部署。

核心概念 · Core Concepts

名詞意義
Workflow一個自動化流程,寫在 .github/workflows/*.yml
Event觸發條件(push、pull_request、schedule…)
Job一個工作單位(在一台 runner 上跑)
StepJob 裡的一步(跑指令或呼叫 action)
Action可重用的步驟套件(GitHub Marketplace 下載)
Runner執行環境(ubuntu-latest 等虛擬機)

第一個 Workflow · Hello CI

放在 .github/workflows/ci.yml

.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
解讀:push 到 main 或有人開 PR 時 → 開一台 ubuntu 虛擬機 → 依序執行 checkout(抓程式碼)、裝 Node、裝相依、跑測試。任何一步失敗,workflow 就顯示紅色。

把 CI 當檢查閘門 · Status Checks

把 workflow 接上「保護分支」(單元 4),PR 的 CI 沒通過就不能合併—— 這是團隊品質的第一道防線。

保護分支設定 · SETTINGS
Settings → Branches → Branch protection
├── Require status checks to pass
└── 勾選你的 workflow 名稱(如「test」)

Secrets · 機密變數

workflow 需要 API key、Token 時,不要寫死在 YAML,用 Secrets 加密存放。

設定與使用 · SETUP & USE
# 設定:Settings → Secrets and variables → Actions
# 名稱如:MY_API_KEY

# 使用:在 workflow 中以 ${{ secrets.MY_API_KEY }} 引用
env:
  API_KEY: ${{ secrets.MY_API_KEY }}
安全:Secrets 不會顯示在 log 中,但不要自己 echo 它—— 「echo $API_KEY」這種 debug 動作會把機密印出來。

常用 Action · Popular Actions

Action用途
actions/checkout把 repo 程式碼抓到 runner
actions/setup-node / setup-python安裝指定語言環境
actions/cache快取相依套件,加速 CI
actions/upload-artifact上傳建置產物
actions/deploy-pages部署到 GitHub Pages(單元 6)
dependabot(內建)自動更新相依套件並開 PR

排程與手動觸發 · Schedule & Manual

觸發方式 · EVENTS
on:
  push:                  # push 時
  schedule:              # 定時(cron)
    - cron: "0 3 * * *"
  workflow_dispatch:     # 手動按鈕

cron 語法為「分 時 日 月 週」五段。0 3 * * * = 每天凌晨 3 點。

看完這頁你應該能說出:
  • Workflow / Job / Step / Action 的關係。
  • 寫一份最小的 CI workflow。
  • 如何用「status checks」擋住壞 PR。
  • Secrets 的正確用法與安全。
  • 五種常用 action 的用途。

延伸閱讀