티스토리 뷰

Intro

깃허브 액션으로 특정 작업을 등록해두면, 원하는 순간에 작업을 실행하도록 할 수 있습니다.
보통은 push가 발생할때, pr이 등록될 때, tag가 올라올 때 등 이벤트를 기준으로 작업을 실행하는 것을 많이 활용하는데요.

이번 포스팅에서는 특별한 이벤트가 없어도 주기적으로 작업을 실행하는 방법을 소개해보려고 합니다.

이 방법으로 주기적으로 실행이 필요한 작업을 github actions를 활용해서 자동화하는데에 활용할 수 있습니다.
주기적으로 업데이트 확인하기, 크롤링이나 데이터 수집, 로그 정리 등에 활용할 수 있습니다.

crontab이란?

crontab은 특정 시간에 특정 명령어를 실행하는 규칙을 설정합니다. crontab 을 사용하면 원하는 시간에 작업을 실행하게 할 수 있습니다.
주로 시스템 관리나 백업, 로그 정리, 데이터 수집 등을 자동으로 처리하는 데 사용됩니다.
별도로 설치하거나 할 필요는 없고, 깃업 액션의 workflow 파일에 규칙에 맞게 써주면됩니다.

crontab의 구성

crontab은 특정 시간에 특정 명령어를 실행하는 규칙을 설정합니다.

일반적으로 crontab 설정 파일에는 다음과 같은 형식으로 규칙이 작성됩니다.

* * * * * 명령어

각 별표(*)는 시간과 관련된 요소를 나타내며, 순서대로 다음을 의미합니다.

  • 첫 번째 *: (0 - 59)
  • 두 번째 *: (0 - 23)
  • 세 번째 *: (1 - 31)
  • 네 번째 *: (1 - 12)
  • 다섯 번째 *: 요일 (0 - 6, 0 = 일요일)

예를 들어서, crontab 규칙을 0 * * * *로 설정하면 매시간 정각에 실행되도록 설정하는 것입니다.

예시

  1. 매일 자정에 실행하기: 0 0 * * * - 매일 00:00에 실행
  2. 매시간 실행하기: 0 * * * * - 매시 정각마다 실행
  3. 매 5분마다 실행하기: */5 * * * * - 5분 간격으로 실행

Github Actions에서의 crontab

Github Actions에서는 crontab 형식을 사용하여 주기적으로 실행하는 스케줄링 작업을 설정할 수 있다. 이를 위해 schedule 이벤트와 cron 속성을 사용하면 되죠! 간단하게 설정 방법을 보여드리겠습니다.

schedule 이벤트에서 cron 속성을 사용해 원하는 주기에 맞춰 워크플로우가 자동 실행되도록 만들 수 있습니다.

예를 들어 0 * * * *로 설정하면 1시간마다 워크플로우가 자동 실행됩니다.

주의할 점

cron 설정은 UTC 기준으로 작동하므로, 한국 시간으로 설정하고 싶다면 UTC 시간에 +9시간을 더해서 설정해야 합니다.
예를 들어, 0 0 * * * 으로 등록하면 한국시간 기준 9시가 됩니다.
한국시간 기준 0시는 UTC 기준 15시가 되므로 0 15 * * *으로 설정하면 됩니다.

Github Actions에서 crontab 형식 사용하기

  1. Github Action 워크플로우 파일 생성: .github/workflows 디렉토리에 YAML 파일을 생성해요. 예를 들어, schedule.yml 같은 파일을 만들면 됩니다.
  2. 스케줄 설정: 워크플로우 파일에서 schedule 이벤트와 cron을 설정합니다.
# .github/workflows/schedule.yml
name: Scheduled Job

on:
  schedule:
    - cron: "0 * * * *"  # 이 부분이 crontab 형식 (매시 정각마다 실행)

jobs:
  scheduled-task:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Run Script
        run: |
          echo "스케줄에 따라 작업을 실행합니다."
          # 원하는 명령어나 스크립트 실행

cron 구문 예시

  • 매시간 정각마다 실행: 0 * * * *
  • 매일 자정에 실행: 0 0 * * *
  • 매주 월요일 자정에 실행: 0 0 * * 1
  • 매 10분마다 실행: */10 * * * *

마무리

Github Actions에서 주기적으로 작업을 실행하는 방법을 소개해봤습니다. 워크플로우 파일에 규칙에 맞게 써주면 원하는 시간에 작업을 실행할 수 있습니다. 주로 시스템 관리나 백업, 로그 정리, 데이터 수집 등에 활용할 수 있을 것 같습니다. 도움이 되었길 바랍니다.

반응형
댓글