在 CI/CD 里做邮件测试(GitHub Actions)
在本地能过的邮件测试,到了 CI 里常常抖——送达更慢、共用邮箱、凭据外泄。想在 GitHub Actions 里把它们跑干净,归根结底就三件事:把 API 密钥存为 secret、每次运行一个临时收件箱、把超时设紧。本文是开发者邮件测试的一部分。
1. 把 API 密钥存为 secret
千万别把收件箱 API 密钥硬编码进去。把它加到仓库的 Settings → Secrets and variables → Actions 下,再以环境变量的形式暴露给测试步骤。一次性邮箱 API 就是用这个密钥鉴权的。
2. 一份最小工作流
# .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 运行一个收件箱
在测试内部开一个全新收件箱(最好每个用例一个),这样并行任务和重跑就永不撞车,并让它自行到期——不需要清理步骤。这种「每次运行一个临时收件箱」的模式,正是让 CI 邮件检查保持确定性的关键。
4. 把超时设紧
测试环境里的事务性邮件应当在五秒内送达;把轮询上限设在 20–30 秒,就能快速逮住真正的失败,而不是把任务挂死。更好的做法是用一个 Webhook,让测试在邮件落地的一瞬间就解除等待。
动手开始
加上 secret,把工作流放进去,再从你的 Playwright、Node 或 Python 套件里接好收件箱调用。先读一读 OpenAPI 文档,就此开始。