RedMeta

Python 코드 자동 실행하는 방법 소개 - Github Action

GitHub Actions는 GitHub에서 제공하는 워크플로우(Workflow) 자동화 도구입니다.
워크플로우라는 단어가 의미하듯 작업의 순서대로 테스트, 빌드, 배포 뿐 아니라 다양한 작업을 만들어서 자동으로 실행하게 할 수 있습니다.

GitHub Actions는 Runner 위에서 실행이 되고, Runner는 가상 머신 위에서 실행이 됩니다.
가상머신의 사양은 크게 좋지는 않지만 상당히 좋습니다.
2-core CPU
7 GB of RAM memory
14 GB of SSD disk space

https://github.com/

github actions

만드신 레포지토리로 들어가셔서 메뉴를 보시면 다른 메뉴들은 잘 안써보셨을 것 같은데 Actions라는게 있습니다.

여기서 여러 작업들을 할 수 있습니다. 위쪽에는 자동으로 권장하는 작업들이 배열됩니다.

 

주기적으로 코드 실행

그 중 python을 검색해서 Python application 을 찾아서 set up 해줍니다.

워크플로우
저장소에 추가하는 자동화 프로세스입니다.
여러 job으로 이루어져 있어 이벤트에 의해 실행됩니다.
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: Python application

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

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

 

 

 

1분마다 실행 시키는 워크 플로우를 만들어 보겠습니다.

on, schedule, 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: Python application

on:
  schedule:
    - cron: '*/1 * * * 1,2,3,4,5'
    
jobs:
  build:

    runs-on: ubuntu-latest

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

저 부분을 수정해서 간편하게 리눅스 같은 서버 없이 cron으로 코드를 실행할 수 있습니다.

GitHub 작업 예약 ​​된 작업의 최대 빈도가 변경됐습니다.
보다 안정적인 경험을 제공하기 위해 예약 된 실행의 최소 시간을 5 분으로 설정했습니다. cron * * * * * 이전에 1 분마다 실행되었던 일정 이 이제 5 분마다 실행됩니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band