MoeMail
블로그로 돌아가기

CI/CD에서 이메일 테스트하기(GitHub Actions)

로컬에서는 통과하던 이메일 테스트가 CI에서는 불안정해지기 일쑤입니다 — 느린 전달, 공유된 메일박스, 유출된 자격 증명 탓이죠. GitHub Actions에서 이를 깔끔하게 돌리는 일은 결국 세 가지로 귀결됩니다. API 키를 위한 시크릿, 실행마다 하나씩 주는 임시 받은편지함, 그리고 빠듯한 타임아웃입니다. 개발자를 위한 이메일 테스트의 일부입니다.

1. API 키를 시크릿으로 저장하기

받은편지함 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. 타임아웃을 빠듯하게 유지하기

테스트 환경의 트랜잭션 메일은 5초 안에 도착해야 합니다. 폴링 상한을 20~30초로 두면 작업을 멈춰 세우지 않고 실제 실패를 빠르게 잡아냅니다. 더 나은 방법은 webhook을 써서 메일이 도착하는 순간 테스트가 해소되게 하는 것입니다.

시작하기

시크릿을 추가하고, 워크플로를 넣고, Playwright·Node·Python 스위트에서 받은편지함 호출을 연결하세요. OpenAPI 문서를 읽으며 시작하면 됩니다.