깃(Git)
Photo of author

GitHub Action 스케쥴링, Secrets and Variables 활용하기

GitHub Action, Secrets and Variables 활용하는 방법에 대해 설명하겠습니다. Git 설치나 GitHub 가입이 안되어 있으신 분들은 Git 설치, GitHub 가입 방법에서 확인 가능합니다.

 

GitHub Action 스케쥴링, Secrets and Variables 활용하기

 

GitHub Action과 Secrets and Variables

 

GitHub는 소스관리나 협업을 위한 도구로 소스들이 공유 되기도 합니다. 혼자만 사용하는 private의 경우는 그래도 안전한 편이지만 public이나 협업 프로젝트의 경우 보안이 취약할 수 있습니다. 그래서 API KEY 등 보안적인 측면에서 취약한 정보들은 그대로 올리는 것이 아니라 환경변수에 담아서 사용하는 것입니다.

 

GitHub Action이란?

 

GitHub Actions는 빌드와 테스트 파이프라인을 자동화 할 수 있는 CI/CD 플랫폼입니다. Repository에 대한 모든 pull request를 빌드 및 병합, 배포를 할 수 있습니다. 또한 Repository에 이벤트가 발생할 때 workflow를 통해 실행할 수 있어서 스케줄에 의해 자동화도 구현할 수 있습니다.

 

GitHub Action 스케쥴링

 

GitHub Action을 스케쥴링에 등록하여 workflow를 실행 할 수 있습니다. workflow를 자동으로 실행 할 수 있으면 크롤링이나 알림 등 다양하게 활용 할 수 있습니다. 이제 GitHub Action 스케쥴링하는 방법에 대해 설명하겠습니다. github에 접속하여 로그인을 진행합니다. 로그인 후 Actions로 들어가서 New workflow 버튼을 클릭합니다.

아래 화면에 여러가지 repository를 제안하는데 저는 Python(파이썬)으로 진행할 예정으로 Python(파이썬)을 선택해 보겠습니다. Configure 버튼을 클릭합니다.

파이썬 패키지를 선택하면 아래 화면이 나옵니다. 여러가지 설정 방법에 대한 코드들을 볼 수 있습니다. on 부분이 workflow를 언제 실행시킬 것인에 대한 부분으로 여기를 스케쥴링으로 변경할 것입니다. push는 repository가 push될 때마다 실행하겠다는 것이고 pull_request는 pr이 있을 때마다 실행하겠다는 것인데 저는 스케쥴링만 추가해서 스케쥴 시간에만 실행 되도록 사용할 예정입니다.

실제 수정한 내용입니다. 파일명을 지정하고 실행할 workflow 이름을 정한 후 schedule을 cron으로 등록합니다. jobs는 실제 실행되는 부분인데 버전을 파이썬 버전을 지정하고 실제 run은 어떤 것들을 진행할 것인지 설정을 합니다. Install dependancy에는 파이썬 업그레이드와 관련 패키지 설치를 진행하고 Run Pythom Script에서는 실제 실행할 파일을 지정합니다. 그리고 Commit changes 버튼을 클릭합니다.

cron에 대한 설정을 추가 설명 진행합니다.

cron 시간 설정하는 방법

cron : “* * * * *”

[1번째 위치]
분(minute)을 의미하며 몇 분에 실행 할 것인지 설정하는 곳입니다.
ex) cron : “0 11 * * *”
매일 11시 0분에 실행하라는 뜻입니다.
*을 설정할 경우 매분 마다 실행합니다.

[2번째 위치]
시간(hour)을 의미하며 몇 시에 실행 할 것인지 설정하는 곳입니다.
ex) cron : “0 15 * * *”
매일 15시 0분에 실행하라는 뜻입니다.
*을 설정할 경우 매시간 실행합니다.

[3번째 위치]
일(day of month)을 의미하며 몇 일에 실행 할 것인지 설정하는 곳입니다.
ex) cron : “1 10 5 * *”
5일 10시 1분에 실행하라는 뜻입니다.
*을 설정할 경우 매일 실행합니다.

[4번째 위치]
월(month)을 의미하며 몇 월에 실행 할 것인지 설정하는 곳입니다.
ex) cron : “1 10 5 7 *”
7월 5일 10시 1분에 실행하라는 뜻입니다.
*을 설정할 경우 매월 실행합니다.

[5번째 위치]
요일(day of week)을 의미하며 무슨 요일에 실행 할 것인지 설정하는 곳입니다.
0 ~ 6 사이의 값을 설정할 수 있습니다. 0이 일요일이며 6이 토요일 입니다.
ex) 30 10 * * 1 <SHELL_PATH>
매주 월요일 10시 30분에 실행하라는 뜻입니다.
*을 설정할 경우 매일 실행합니다.

아래는 실제 소스코드 파일입니다. 필요하시면 복사해서 사용하시면 됩니다.

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Run post stock subscription

on:
  schedule:
    - cron: "10 0 * * *"
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.x
        uses: actions/setup-python@v1
        with:
          python-version: "3.9"
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Run Python Script
        run: |
          python "post_stock_subscription.py"
        env: # Or as an environment variable
          TISTORY_ACCESS_TOKEN: ${{ secrets.TISTORY_ACCESS_TOKEN }}

workflow 등록이 완료되면 아래와 같이 설정한 이름으로 등록이 되고 설정한 시간에 Run을 진행합니다.

 

GitHub의 Secrets and Variables란?

 

어플리케이션의 외부에 노출이 되면 민감한 정보들을 GitHub의 secrets에 저장해 workflows에서 환경변수로 사용할 수 있게 해주는 기능입니다.

 

Secrets and Variables 활용하기

 

Secrets를 변수를 활용하기 위해 일단 환경변수에 세팅이 필요합니다. 아래 화면을 보시면 env(환경변수) 세팅하는 부분이 있고 TISTORY_ACCESS_TOKEN: ${{ secrets.TISTORY_ACCESS_TOKEN }}이라고 설정하였습니다. 티스토리 ACCESS TOKEN 정보는 개인이 발급한 값이기 때문에 외부에 노출되지 않아야 하므로 GitHub secrets에 저장해 놓고 쓰려고 설정한 것입니다.

설정이 완료 되었다면 GitHub 자신의 Repository로 이동하여 Settings를 클릭합니다. 옆에 사이드바 메뉴에 Secrets and variables 메뉴의 Actions로 들어가서 New repository secret 버튼을 클릭합니다.

env에 설정한 키값을  Name에 입력하고 실제 ACCESS TOKEN 값을 입력해 주고 Add secret 버튼을 클릭합니다.

완료되면 아래와 같이 등록된 것을 확인 할 수 있습니다.

지금까지 GitHub Action 스케쥴링 방법과 Secrets and Variables 사용 방법에 대해 설명하였습니다. 두가지를 활용하여 자동화 프로젝트를 구성해 보시길 바랍니다. 감사합니다.

Leave a Comment