본문 바로가기
개발/Git, GitHub

깃허브 액션 - Schedule로 반복 작업하기

by 피로물든딸기 2024. 1. 7.
반응형

Git / GitHub 전체 링크

 

참고

- https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule

 

아래의 yml을 repo의 .github/workflow에 추가해 보자. (just-10-minutes.yml)

name: Every 10 Minutes schedule

on:
  schedule:
    - cron: '*/10 * * * *' 

jobs:
  ten_minutes_schedule_job:
    runs-on: ubuntu-latest

    steps:
      - name: Display current time
        run: |
          echo "Current Time"
          echo "UTC   : $(date +"%Y-%m-%dT%H:%M:%SZ")"
          echo "SEOUL : $(TZ=Asia/Seoul date +"%Y-%m-%dT%H:%M:%SZ")"

 

설정되는 시간은 UTC 기준으로 실행되며, 위 코드는 10분마다 실행된다.

Actions 탭을 클릭하면 아래와 같이 workflows에 액션이 실행된 것을 알 수 있다.

 

해당 액션을 클릭하면 로그도 확인할 수 있다.


cron

 

cron에서 설정하는 5가지 옵션은 다음과 같다.

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *

 

아래와 같이 설정하면 10분마다 액션이 실행된다. 

*/10 * * * *

 

깃허브 액션의 최소 시간 5분이기 때문에 이 보다 작은 값으로 설정해도 실행되지 않는다.

 

UTC 기준으로 아래와 같이 여러 방법으로 cron을 설정할 수 있다.

- cron: '*/10 * * * *'  # 매 10분마다 실행
- cron: '0 * * * *'     # 정각마다 실행
- cron: '0 0 * * *'     # 매일 자정에 실행
- cron: '30 5,17 * * *' # 매일 5시와 17시 30분마다 실행
- cron: '0 1-10 * * *'  # 1시부터 10시까지 매 시간마다 실행 
- cron: '0 0 1 * *'     # 매월 1일 자정에 실행 
- cron: '0 9 * * 1-5'   # 월요일부터 금요일까지 매일 오전 9시에 실행 
- cron: '0 0 * 5 1-3'   # 5월에 월요일부터 수요일까지 매일 자정에 실행

 

한국 시간 기준으로 실행하고 싶다면 UTC 시간 + 9시간을 설정해야 한다.

반응형

댓글