Github Actions란?
GitHub에서 제공하는 자동화 도구로, 코드를 빌드하거나 테스트하고, 배포 또는 다양한 작업을 자동으로 수행할 수 있도록 합니다.
Actions는 조직 및 개인별로 매달 레파지토리 통합 실행 시간 2000분을 무료로 제공합니다.
스토리지는 500MB를 제공한다고 하는데, 오늘은 크론잡만 돌릴거라 신경쓰지 않겠습니다.
금액적인 부분은 아래 공식 페이지에서 확인해주세요.
1. 프로젝트에 폴더 및 파일 생성
.github/workflows까지 폴더를 만들고 .yml 파일을 생성합니다.
GitHub Actions는 .github/workflows 폴더 아래에 있는 .yml, .yaml 파일을 읽고 조건에 따라 실행합니다.
그러니 폴더 위치와 이름은 정확하게 입력해주시고 파일명은 원하시는대로 작성하셔도 무방합니다.
2. 크론잡 실행 코드 작성
# Actions workflows에 표시될 이름
name: Scheduled Job
on:
schedule:
# 매일 자정(밤 12시)마다 프로그램 실행
- cron: "0 15 * * *"
jobs:
run-scheduled-task:
runs-on: ubuntu-latest
steps:
# Repository 코드 체크아웃
- name: Checkout code
uses: actions/checkout@v3
# Node.js 프로젝트 설정
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "20.11.1"
# 의존성 모듈 설치 명령어 (npm install 써도 무방)
- name: Install dependencies
run: npm ci
# 프로그램 실행 명령어
- name: Run scheduled script
run: npm run start
작성한 코드를 깃에 올려주면 GitHub Actions가 자동으로 파일을 읽고 조건에 맞게 실행됩니다.
3. Actions 실행 결과 확인
Actions 탭으로 이동하면 실행된 결과를 확인할 수 있습니다.
schedule.yml 파일에서 Actions workflows에 표시될 이름을 설정했었죠.
저는 간단하게 Scheduled Job이라는 이름으로 작성했는데, 다른 액션과 구분이 쉽고 이해하기 편한 이름으로 설정해주세요.
실행 결과를 보니 실행 시간이 30초 정도 걸렸다고 나옵니다.
실제 로컬에서 돌릴때는 10초 이내로 끝났던 작업인데 시간이 더 걸렸습니다.
그래서 실행 결과를 상세 결과를 확인하기 위해 눌러서 들어가봤습니다.
프로그램 실행 이전에 의존성 모듈 설치부터 작업하는 부분이 많았나봅니다.
Run scheduled script가 로컬에서 npm run start로 프로그램을 실행하는 부분입니다.
8초정도 걸린걸 보니 로컬에서 돌릴때의 시간이랑 비슷했습니다.
그래도 실행 결과 요약에 표시된 시간은 총 19초인데 27초로 계산되어있네요.
보여주지 않는 부분에서 시간을 더욱 측정하는건지 오차는 조금 있어보입니다.
실행시간은 금액적인 부분과도 직결되어있기 때문에 꾸준한 모니터링을 해주는것이 좋겠습니다.