Github Actions를 이용하여 프로그램 주기적으로 실행하기

김효민·2021년 2월 3일
0

구현한 코드 전체는 여기에서 볼 수 있습니다.

저번 글에서 모든 코드의 작성은 끝났습니다. 이제는 작성한 java코드를 uber-jar로 만들기 위해 pom.xml을 작성하고 Github Actions를 활용해서 프로그램을 주기적으로 실행시키는 일만 남았습니다.

Uber-jar 만들기

이번 프로젝트에서 저는 spring-boot를 쓰지않고 프로그램을 작성했습니다. 따라서 mvn package 커맨드를 써서 jar 파일을 만들 때 따로 uber-jar을 설정 하지 않으면 의존성들이 포함되지 않아서 실행시킬 수 없습니다.
maven-shade-plugin을 사용해서 uber-jar로 패키징을 하였습니다. 자세한 내용은 이 글을 참조해주세요

Github Actions 사용하기

Github Actions를 사용하려면 기본 브랜치에(이 경우에는 master 브랜치) .github/workflows 폴더안에 yaml파일을 작성해주어야 합니다. 저는 아래와 같이 작성했습니다.

#https://github.com/hyoputer/steam-follow-game-newsletter/blob/master/.github/workflows/mail.yml
name: mail newsletter

on:
  schedule:
  - cron: "0 4 * * *"

jobs:
  run:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-java@v1
      with:
        java-version: '11.0.9'

    - name: Build with Maven
      run: mvn -B package --file pom.xml

    - name: mail
      env:
        EMAIL_ID: ${{ secrets.EMAIL_ID }}
        EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
        GIST_ACCESS_KEY: ${{ secrets.GIST_ACCESS_KEY }}
        GIST_DESCRIPTION: ${{ secrets.GIST_DESCRIPTION }}
        GIST_FILE_NAME: ${{ secrets.GIST_FILE_NAME }}
        STEAM_USER_ID: ${{ secrets.STEAM_USER_ID }}
      run: |
        java -jar target/steamfollowmail-1.0-SNAPSHOT.jar
  • Cron 주기는 '분 시간 일 월 요일'로 구성되있고 저는 UTC기준 매일 4시에 이 프로그램을 실행시킵니다.
  • checkout과 setup-java를 이용해서 자바 환경 세팅을 합니다.
  • secrets 환경변수 기능을 이용해서 개인정보들을 환경변수로 넘깁니다.
  • 공식 reference를 참조하시면 좋습니다.

Settings -> secrets 탭에 들어가면 아래와 같이 환경변수를 등록 가능합니다.

이렇게 작성하고 커밋을 올리면 아래와 같이 매일 진행되는 모습을 확인하실 수 있습니다.

참고로 커밋하자마자 바로 workflow에 등록되지는 않는 것 같으니 저처럼 cron-job으로 설정하실 분은 작동시간에 바로 작동되지 않더라도 인내심을 갖고 기다려주시면 작동하는 걸 보실 수 있을 것입니다.

Reference

Github Actions 공식 Reference

profile
귀찮음에 민감한 개발자

0개의 댓글