YAML의 cron
on: schedule에 cron 표현식을 붙이면 반복 일정으로 워크플로를 실행할 수 있어. 시간은 UTC 기준이고 5-필드 cron을 써. 그리고 저장소에 활동이 있어야 해. 60일 동안 커밋이 없으면 예약된 워크플로는 일시정지돼.
흔한 패턴
- 매일 밤 전체 테스트 실행 — 오래 걸리고 비용이 큰 매트릭스를 매일 밤 돌려. PR에서는 스모크 서브셋만 검사해.
- 의존성 업데이트 — Dependabot이 알아서 해주지만, 일정에 따라
npm outdated나pip-audit같은 명령도 돌릴 수 있어. - 보안 스캔 — CodeQL은 주간으로, trivy는 월간으로 돌려.
- 오래된 이슈와 PR 정리 —
actions/stale을 사용해. - 상태 확인 — 프로덕션 URL에 주기적으로 curl을 날리고 실패하면 Slack으로 알림을 받아.
주의
- 시간은 항상 UTC 기준이야.
- 피크 시간대에는 GitHub가 예약된 실행을 지연시킬 수 있으니 밀리초 단위의 정확도는 기대하지 마.
- 같은 워크플로에
workflow_dispatch를 짝지어 놓으면 디버깅할 때 수동으로 실행할 수 있어.