← 모든 기록
GitHub Actions Schedule로 정기 작업 실행하는 방법 대표 이미지
자동화

GitHub Actions Schedule로 정기 작업 실행하는 방법

GitHub Actions의 schedule 트리거로 cron 표현식을 활용해 정기 작업을 자동화하는 방법을 단계별로 알아봅니다.

GitHub Actions는 저장소의 이벤트를 기반으로 자동 작업을 실행합니다. schedule 트리거를 사용하면 cron 표현식으로 정기 작업을 설정할 수 있습니다. 워크플로우 파일에 on: schedule 항목을 추가하고 저장소에 푸시하기만 하면 됩니다.

워크플로우 파일 생성 및 트리거 설정

YAML 파일 위치와 기본 구조

워크플로우는 .github/workflows/ 디렉터리 안에 YAML 파일로 만듭니다. 파일 이름은 자유롭게 정할 수 있으며, 예를 들어 daily-task.yml로 저장합니다. 기본 골격은 name, on, jobs 세 부분으로 구성됩니다. name은 생략 가능하고, on에 실행 조건을 적습니다. jobs에는 실제로 처리할 작업들을 정의합니다.

GitHub Actions 개념 정리에서 일반적인 워크플로우 예시를 볼 수 있습니다.

워크플로우를 만드는 기본 절차는 다음과 같습니다.

  1. 저장소의 .github/workflows/ 디렉터리로 이동합니다.
  2. 새 YAML 파일을 생성하고 name, on, jobs 필드를 작성합니다.
  3. onschedulecron 표현식을 추가합니다.
  4. 파일을 저장하고 커밋·푸시합니다.

cron 표현식으로 정기 실행 트리거 설정

정기 실행을 위해서는 onschedule 키를 추가하고, 그 아래 cron 속성에 실행 시각을 입력합니다. cron 표현식은 분(0–59), 시(0–23), 일(1–31), 월(1–12), 요일(0–6) 순서로 다섯 개의 필드로 구성되며, 공백으로 구분합니다. GitHub Actions의 cron은 UTC 기준으로 동작합니다. 예를 들어, 매일 오전 9시(UTC)에 작업을 실행하려면 cron: '0 9 * * *'와 같이 작성합니다. 더 복잡한 주기 설정은 GitHub Actions on 이벤트 종류 문서를 참고하세요.

실행할 작업(Job)과 단계(Step) 작성

jobs 섹션에는 하나 이상의 작업을 정의합니다. 각 작업은 고유한 ID를 가지며, runs-on으로 실행 환경(예: ubuntu-latest)을 지정하고, steps에 순차적으로 실행할 명령을 나열합니다. 간단한 확인용으로는 run: echo "작업 실행됨" 정도만 추가해도 됩니다. 실무에서는 actions/checkout으로 코드를 가져온 뒤 스크립트를 실행하거나, Secrets에 저장한 API 키를 활용하는 패턴이 일반적입니다.

예를 들어, 웹사이트 자동 백업하기처럼 스케줄을 이용해 정기 백업을 구성할 수 있습니다.

저장소에 Push하여 워크플로우 등록

YAML 파일을 작성한 후 커밋하고 원격 저장소에 푸시하면 GitHub가 자동으로 워크플로우를 감지합니다. schedule 트리거는 파일이 저장소의 기본 브랜치(보통 main 또는 master)에 있을 때만 유효합니다. 푸시 후에는 다음 예정된 cron 시각에 바로 첫 실행이 이루어집니다.

Actions 탭에서 실행 확인 및 모니터링

실행 결과는 저장소의 Actions 탭에서 로그와 함께 확인할 수 있습니다. 워크플로우가 실패하면 이메일로 알림을 받을 수 있으며, 필요 시 수동으로 다시 실행할 수도 있습니다. 정기 작업이 안정적으로 돌아가는지 Actions 로그를 주기적으로 살펴보는 것이 좋습니다.

공개 저장소는 GitHub Actions를 무료로 무제한 사용할 수 있습니다. 비공개 저장소는 요금제에 따라 월 사용량이 제한됩니다. 그러므로 스케줄 설정 전에 확인이 필요합니다.

참고 자료