본문 바로가기
Github

[Github] Action 사용해서 주기적으로 python 실행하기

by bryan.oh 2022. 12. 1.
반응형

Github Action

매일 몇시, 몇시간 마다, 또는 매주, 특정요일

이렇게 주기적으로 실행해야 하는 파이썬 코드가 있다면, 

실행할 수 있는 서버가 필요하겠죠.

집에 놀고있는 데스크탑이나 노트북, 클라우드 서버등등.. 항상 켜둬야죠.

 

 

이럴 때, (일반적인 리소스만 사용한다면) Github Action 을 사용하면 됩니다.

 

매일 실행되는 파이썬 코드를 Github Action 을 사용해서 돌려보도록 하겠습니다.

 

1. Github Repository 생성.

  이건 설명 없음

2. Action 에서 Python package 선택

상단 메뉴에 Action -> 검색창에 "python" Enter -> Python package 의 Configure 클릭

3. Config 설정

name : 이 job 의 이름을 설정합니다.

on > schedule 은 cron 으로 언제 실행할 지 설정합니다.

아래 설정은 매일 8시 0분에 실행하는것 입니다. cron 스케줄 설정은 여기를 참고하세요.

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Api call Python application

on:
  schedule:
    - cron: '0 8 * * *'
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning' 
        type: choice
        options:
        - info
        - warning
        - debug

job 에 대해서 설정 합니다.

ubuntu 의 latest 버전을 사용하고,

steps 의 배열값을 실행 합니다.

action version2 를 checkout 하고, python 은 3.7 을 쓰고, 

pip install 및 python 실행을 run 키워드를 사용해서 실행합니다.

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.7
      uses: actions/setup-python@v2
      with:
        python-version: "3.7"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    - name: Run main.py
      run: |
        python venv/main.py

Install dependencies

위에서 생성한 Repository 에 python 을 실행하기 위한 dependencies 를 명시한 requirements.txt 를 root 경로에 둔 것입니다.

그리고 실행 시킬 python 파일을 repository 의 특정 경로에 push해 두고, Run main.py 에서 명령어에 경로를 지정하면 됩니다.

 전체 설정 파일

더보기
name: Python application

on:
  schedule:
    - cron: '0 8 * * *'
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning' 
        type: choice
        options:
        - info
        - warning
        - debug 
        
jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.7
      uses: actions/setup-python@v2
      with:
        python-version: "3.7"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    - name: Run main.py
      run: |
        python venv/main.py

복잡하시다면, 여기에서 수정 해야할 것이.

  1. on > schedule > cron 에서 언제 실행될지 수정
  2. requirements.txt 파일을 root 경로에 두거나, 다른 경로에 두었다면 - name: Install dependencies 에서 경로를 수정
  3. 실행할 python 의 경로와 이름을 마지막 줄에 수정

설정을 다 입력했으면 우측 상단에 Start commit 을 클릭하고 Commit new file 을 클릭합니다.

작업이 바로 시작 되지 않습니다.

 

4. Coding

로컬에서 python 스크립트를 작성하려면, repository 를 clone 해서 

python script 를 작성하고, 필요한 dependencies 를 requirements.txt 에 작성합니다.

그리고 commit, push 합니다.

 

5. Run

 

728x90
반응형

댓글