在 CI/CD 裡做 Email 測試(GitHub Actions)
在本機會過的 email 測試,到了 CI 常常閃爍——送達較慢、共用郵箱、外洩憑證。要在 GitHub Actions 裡乾淨地跑它們,歸結起來就三件事:給 API 金鑰一個 secret、每次執行一個臨時收件匣,以及把逾時設緊。本文是開發者 email 測試的一部分。
1. 把 API 金鑰存成 secret
千萬別把收件匣 API 金鑰寫死在程式裡。把它加在 repo 的 Settings → Secrets and variables → Actions,再把它當成環境變數曝露給測試步驟。拋棄式 email API 就是用那把金鑰認證的。
2. 一份最小可行的 workflow
# .github/workflows/e2e.yml
name: e2e
on: [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: npx playwright test
env:
MAIL_KEY: ${{ secrets.MAIL_KEY }}
3. 每次 PR 執行一個收件匣
在測試裡開一個全新收件匣(最好是每個測試一個),讓平行的 job 與重跑永遠不會撞在一起,並讓它自己過期——不需要任何清理步驟。這套「每次執行一個臨時收件匣」的模式,就是讓 CI email 檢查維持確定性的關鍵。
4. 把逾時設緊
測試環境的交易型郵件通常五秒內就會到;輪詢上限抓 20~30 秒,能快速抓到真正的失敗,而不是讓 job 一直掛著。更好的做法,是用 webhook,讓測試在信件一落地就立刻有結果。
開始動手
加上 secret、把 workflow 丟進去,再從你的 Playwright、Node 或 Python 測試套件接好收件匣相關呼叫。讀讀 OpenAPI 文件就能開始。