본문 바로가기
C.W.K.
Stream
Lesson 13 of 14 · published

예약 워크플로

~9 min · schedule, cron, nightly

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

YAML의 cron

on: schedule에 cron 표현식을 붙이면 반복 일정으로 워크플로를 실행할 수 있어. 시간은 UTC 기준이고 5-필드 cron을 써. 그리고 저장소에 활동이 있어야 해. 60일 동안 커밋이 없으면 예약된 워크플로는 일시정지돼.

흔한 패턴

  • 매일 밤 전체 테스트 실행 — 오래 걸리고 비용이 큰 매트릭스를 매일 밤 돌려. PR에서는 스모크 서브셋만 검사해.
  • 의존성 업데이트 — Dependabot이 알아서 해주지만, 일정에 따라 npm outdatedpip-audit 같은 명령도 돌릴 수 있어.
  • 보안 스캔 — CodeQL은 주간으로, trivy는 월간으로 돌려.
  • 오래된 이슈와 PR 정리actions/stale을 사용해.
  • 상태 확인 — 프로덕션 URL에 주기적으로 curl을 날리고 실패하면 Slack으로 알림을 받아.

주의

  • 시간은 항상 UTC 기준이야.
  • 피크 시간대에는 GitHub가 예약된 실행을 지연시킬 수 있으니 밀리초 단위의 정확도는 기대하지 마.
  • 같은 워크플로에 workflow_dispatch를 짝지어 놓으면 디버깅할 때 수동으로 실행할 수 있어.

Code

Nightly + 수동·yaml
name: nightly
on:
  schedule:
    - cron: '0 6 * * *'    # daily at 06:00 UTC
  workflow_dispatch: {}

jobs:
  full-test:
    runs-on: ubuntu-latest
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v4
      - run: ./run-full-suite.sh

External links

Exercise

06:00 UTC에 느린 테스트 매트릭스를 도는 매일 밤 워크플로를 추가하고 workflow_dispatch와 짝지어 봐. 수동으로 실행해서 잘 도는지 확인하고, 하룻밤 기다려서 예약 실행 조건이 잘 발동하는지도 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.