GitHub Actions에서 cron 설정은 일정한 시간 간격으로 워크플로우를 실행할 수 있도록 해주는 옵션입니다.

이를 사용하여 주기적으로 작업을 실행하거나 스케줄에 맞게 작업을 수행할 수 있습니다.

 

Linux 의 crontab 에서 가져온 것으로 보이는데, 이미 crontab 을 사용해보신 분이라면 설정 방법이 같기 때문에 어렵지 않을 것입니다.

cron 설정은 on 항목 아래에 추가됩니다. 아래는 cron 설정의 예제입니다:

 

on:
  schedule:
    - cron: '0 0 * * *' # 매일 00:00에 실행


위의 예제에서 cron 설정은 매일 00:00(자정)에 워크플로우를 실행하도록 합니다.

cron 표현식은 다음과 같은 형식을 따릅니다:

 

* * * * *


각 ' * ' 는 다음과 같은 시간 단위를 나타냅니다:

1. 분 (0-59)
2. 시 (0-23)
3. 일 (1-31)
4. 월 (1-12)
5. 요일 (0-6, 일요일부터 토요일까지)

 

' * ' 은 보통 모든 경우를 의미하지요. 

자주 사용되는 일반적인 cron 설정 예시는 다음과 같습니다:

1. 0 * * * *  # 매 시 정각마다 실행, 0분 매시간 매일 매월 모든요일

2. 0 0 * * *  # 매일 자정에 실행, 0분 0시 매일 매월 모든요일
3. 0 0 * * 1 # 매주 월요일에 실행, 0분 0시 매일 매월 월요일

 

 

UTC 기준

GitHub Actions에서 cron 설정은 UTC 기준으로 작동합니다. 따라서 지역 시간대를 고려하여 설정해야 할 경우 해당 시간대의 UTC 시간을 계산하여 설정해야 합니다.

 

예를 들어, 한국 시간 기준으로 월요일 오전 3시에 실행되도록 cron 설정을 작성하려면 UTC 시간을 기준으로 설정해야 합니다. 한국 시간은 UTC+9 시간대이므로 UTC 시간에서 9시간을 더한 값을 사용해야 합니다.

월요일 오전 3시는 UTC 시간 기준으로는 일요일 오후 6시에 해당합니다. 따라서 아래와 같이 cron 설정을 작성할 수 있습니다:

 

on:
  schedule:
    - cron: '0 18 * * 0' # 매주 일요일 18:00 (UTC)에 실행

 

위의 설정은 한국 시간으로 월요일 오전 3시에 해당하는 시간에 워크플로우를 실행하게 됩니다.

 

 

 

참고

'workflow_dispatch' 를 설정해두면, 수동으로 실행할 수 있으며, 'push' 설정을 해두면, 어떤 브랜치나 혹은 특정파일이 push 될 경우에 실행하게 할 수도 있습니다.

 

 

on:
  workflow_dispatch:  
  schedule:
    - cron: '0 0 * * 0' # 매주 일요일 00:00 (UTC)에 실행  
  push:
    branches:
      - master # 특정 branch
    paths:
      - 'src/main/kotlin/Main.kt' # 특정 파일