GitHub Actions 의 cron 표현식 알아보기
cron 표현식을 활용하면 GitHub Actions에서 워크플로우를 원하는 시간에 자동으로 실행할 수 있습니다. 이 기능은 특히 주기적인 작업을 자동화하는 데 매우 유용합니다.
GitHub Actions는 프로젝트의 자동화를 도와주는 강력한 도구입니다. 특히 cron 표현식을 사용하면 정해진 시간이나 일정에 따라 작업을 자동으로 실행할 수 있습니다. 쥬니어 개발자들에게 cron 표현식을 쉽게 이해할 수 있도록 몇 가지 기본적인 예시와 설명을 제공하겠습니다. 이를 통해 자동화 작업을 어떻게 설정할 수 있는지 배울 수 있습니다.
cron
표현식은 다음과 같은 다섯 가지 필드로 구성됩니다:
- 분 (Minute): 0에서 59까지
- 시간 (Hour): 0에서 23까지
- 일 (Day of the Month): 1에서 31까지
- 월 (Month): 1에서 12까지
- 요일 (Day of the Week): 0에서 7까지 (0과 7은 일요일을 의미)
각 필드에 대한 값은 특정 시간이나 범위를 지정하며, *
는 "모든 값"을 의미합니다. 예를 들어 *
는 모든 분, 모든 시간, 모든 일 등을 나타냅니다.
예시 1: 매일 자정에 실행
schedule:
- cron: "0 0 * * *"
이 표현식은 매일 자정에 워크플로우가 실행되도록 설정합니다.
- 분: 0 (정각)
- 시간: 0 (자정)
- 일: 매일
- 월: 매월
- 요일: 모든 요일
예시 2: 매주 월요일 아침 9시에 실행
schedule:
- cron: "0 9 * * 1"
이 표현식은 매주 월요일 오전 9시에 실행되도록 설정합니다.
- 분: 0
- 시간: 9 (오전 9시)
- 일: 매일
- 월: 매월
- 요일: 1 (월요일)
예시 3: 매달 1일 오전 6시에 실행
schedule:
- cron: "0 6 1 * *"
이 표현식은 매달 1일 오전 6시에 실행됩니다.
- 분: 0
- 시간: 6 (오전 6시)
- 일: 1일
- 월: 매월
- 요일: 모든 요일
예시 4: 평일(월요일~금요일) 오후 2시에 실행
schedule:
- cron: "0 14 * * 1-5"
이 표현식은 매주 월요일부터 금요일까지 오후 2시에 실행됩니다.
- 분: 0
- 시간: 14 (오후 2시)
- 일: 매일
- 월: 매월
- 요일: 1-5 (월요일~금요일)
예시 5: 매시간 30분마다 실행
schedule:
- cron: "30 * * * *"
이 표현식은 매시간 30분에 실행됩니다.
- 분: 30
- 시간: 매시간
- 일: 매일
- 월: 매월
- 요일: 모든 요일
예시 6: 매년 12월 25일 자정에 실행 (크리스마스)
schedule:
- cron: "0 0 25 12 *"
이 표현식은 매년 12월 25일 자정에 실행됩니다.
- 분: 0
- 시간: 0 (자정)
- 일: 25일
- 월: 12월
- 요일: 모든 요일
예시 7: 매주 일요일 밤 11시에 실행
schedule:
- cron: "0 23 * * 0"
이 표현식은 매주 일요일 밤 11시에 실행됩니다.
- 분: 0
- 시간: 23 (밤 11시)
- 일: 매일
- 월: 매월
- 요일: 0 (일요일)
예시 8: 매분마다 실행
schedule:
- cron: "* * * * *"
이 표현식은 매분마다 실행됩니다. 주의해서 사용해야 합니다. 워크플로우를 너무 자주 실행하면 시스템에 부담이 될 수 있습니다.
추가 설명
cron
표현식에서 사용하는 문법은 다음과 같습니다:
*
: 모든 값을 의미,
: 여러 값을 구분 (예:0,15,30,45
는 매 15분마다)-
: 범위를 지정 (예:1-5
는 월요일부터 금요일까지)/
: 특정 간격을 지정 (예:*/5
는 5분마다)
GitHub Actions 사용 요약
1. 기본 구성
GitHub Actions는 workflow
파일을 통해 자동화 작업을 설정합니다. 이 파일은 .github/workflows/
폴더 안에 yaml
형식으로 작성됩니다. 예를 들어, 다음은 기본 구조입니다:
name: My Scheduled Workflow
on:
schedule:
- cron: "<cron 표현식>"
jobs:
my_job:
runs-on: ubuntu-latest
steps:
- name: Run my script
run: echo "Hello World!"
여기에서 cron
표현식을 통해 스케줄을 설정하고, jobs
안에 원하는 작업을 정의합니다. 이제 다양한 cron
표현식을 예시로 들어볼게요.
2. 다양한 cron
표현식 예시
1) 매일 자정에 실행
매일 자정에 스케줄러가 작동하게 하려면:
schedule:
- cron: "0 0 * * *"
이 표현식은:
- 매일 00:00에 작업이 실행됩니다.
2) 매주 월요일 아침 9시에 실행
매주 월요일 오전 9시에 작업을 실행하려면:
schedule:
- cron: "0 9 * * 1"
이 표현식은:
- 매주 월요일 09:00에 실행됩니다.
1
은 요일을 나타내며, 월요일을 의미합니다.
3) 매달 1일 자정에 실행
매달 첫날 자정(00:00)에 작업을 실행하려면:
schedule:
- cron: "0 0 1 * *"
이 표현식은:
- 매월 1일 00:00에 실행됩니다.
4) 매달 마지막 날 자정에 실행
매달 마지막 날 작업을 실행하려면, cron
은 지원하지 않지만 GitHub Actions에서 이를 우회할 수 있습니다. 예를 들어, 매달 28일에서 31일 사이에 자정에 실행되도록 설정한 후 스크립트에서 실제로 마지막 날인지 확인할 수 있습니다.
schedule:
- cron: "0 0 28-31 * *"
5) 매 시간 30분마다 실행
매시간 30분마다 작업을 실행하려면:
schedule:
- cron: "30 * * * *"
이 표현식은:
- 매시간 30분에 작업이 실행됩니다. 예를 들어, 00:30, 01:30, 02:30, ...
6) 매주 금요일 오후 6시에 실행
매주 금요일 오후 6시에 작업을 실행하려면:
schedule:
- cron: "0 18 * * 5"
이 표현식은:
- 매주 금요일 18:00에 작업이 실행됩니다.
5
는 금요일을 나타냅니다.
7) 매 분마다 실행
매 분마다 작업을 실행하고 싶다면:
schedule:
- cron: "* * * * *"
이 표현식은:
- 매 분마다 작업이 실행됩니다. (주의: 너무 자주 실행되면 작업의 부담이 커질 수 있습니다.)
8) 매 15분마다 실행
작업을 매 15분마다 실행하려면:
schedule:
- cron: "*/15 * * * *"
이 표현식은:
- 매 15분 간격으로 작업이 실행됩니다. 예를 들어, 00:00, 00:15, 00:30, 00:45, ...
9) 평일 오전 9시마다 실행
평일(월요일부터 금요일) 오전 9시에 작업을 실행하려면:
schedule:
- cron: "0 9 * * 1-5"
이 표현식은:
- 매주 월요일부터 금요일까지 09:00에 작업이 실행됩니다.
1-5
는 월요일에서 금요일까지를 의미합니다.
3. 참고: 요일 숫자 표기
cron
표현식에서 요일은 숫자로 표현됩니다:
0
또는7
: 일요일1
: 월요일2
: 화요일3
: 수요일4
: 목요일5
: 금요일6
: 토요일
crontab guru
이는 cron 스케줄 표현식을 위한 빠르고 간단한 편집기 입니다. cron 자체로는 작업이 실패하거나 시작되지 않는 경우 알림을 받을 수 없기 때문에 Cronitor를 만들었다고 하네요. Cronitor는 통합이 쉽고 문제가 발생했을 때 즉각적인 알림을 제공한답니다.