Github Action 사용해보기 1편

Sorbet·2021년 9월 30일
0

Github Action 사용해보기

윈본 강의

인트로

  • 개발을 하면 결국은 어떤 형태로든 산출물과 결과가 나오기 마련이고, 개발자이고 코딩을 했다면 그 결과물은 프로그램일수도 웹페이지일수도 있고 어떤 형태로든 누군가는 사용을 하게 됩니다.
  • 특히 웹개발자라면 프론트와 백엔드를 가리지 않고 어딘가에는 배포해서 누군가는 사용할수 있게 만들텐데요, 마치 한글을 창제하신 세종대왕님께서 한글을 '반포' 하셨던것처럼요
  • 배포하는 단계에에서 사용할 툴이 오늘의 주인공 Github Action입니다. 깃허브가 개발자들을 어여삐 여겨사 소스코드를 쉽게 자동화 할 수 있도록 만들어놓은 자동화 툴인데요
  • 이론이나 정확한 요약보다는 how-to 중심으로 적어보겠습니다

실습1 - 베스트 IT 책 목록 크롤링

  • 깃헙에서 리포 만들고

    • Action - workflow 를 클릭해 생성
  • test.py 코드

import requests ## 요청 라이브러리
from bs4 import BeautifulSoup #파싱 라이브러리

url = 'https://ridibooks.com/category/new-releases/2200'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text

soup = BeautifulSoup(html, 'html.parser') # html 파서 씀

bookservices = soup.select('.title_text') # 클래스 짚어내기
for no, book in enumerate(bookservices, 1):
    print(no, book.text.strip())
  • yml 파일

name: helloGithubAction
 
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: 1) 파일 목록 출력
      run: ls -al
    - name: 2) 파이썬 패키지 확인
      run: pip list
    - name: 3) pip 업그레이드
      run: python -m pip install --upgrade pip
    - name: 4) 런타임에 필요한 모듈 설치
      run: pip install -r requirements.txt
    - name: 4) 파이썬 코드 실행
      run: python test.py

실습2 - 작업 스케쥴링 추가

  • 리눅스의 작업 스케쥴러 크론탭 기능을 이용합니다

  • 리눅스 작업 스케줄러 cron

    • cron은 주기적으로 반복되는 일을 자동으로 실행할 수 있도록 도와주는 유틸리티 인데요, crontab파일 등으로 검색하면 많은 정보가 나오니 여기서는 짧게 언급만 하고 넘어가겠습니다.
    • github에서는 crontab에 양식에 따라 반복적인 작업을 할 수 있는 기능을 제공하는데, 깃헙 액션은 아무리 빨라도 5분마다 한번의 크론탭의 스케쥴링을 허용해줍니다
    • 크론탭에 대한 자세한 정보 : https://crontab.guru/
      • 위 페이지에서 크론탭을 생성해서 사용하면 되고, 모든 문법을 이해할 필요는 없습니다
  • 5분마다 실행하는 크론탭 명령어

    //5분마다 해당하는 명령어를 실행합니다.
    */5 * * * * /test/crawling.py
  • 여러시간을 정하고 실행

    //매일 오전 930분, 오후 930분에 해당하는 명령어를 실행합니다.
    30 9,21 * * * /test/crawling.py
    
    //매일 매시간 10분, 20분 마다 해당하는 명렁어를 실행합니다.
    10,20 * * * * /test/crawling.py
  • 범위 실행

    //매일 오전 9시에 해당하는 명령어를 실행합니다. (0 - 일요일, 6 - 토요일)
    0 9 * * 0-6 /test/crawling.py
    //월~금 오전 9시에 해당하는 명령어를 실행합니다. (1 - 월요일, 5 - 금요일)
    0 9 * * 1-5 /test/crawling.py
    //매일 100분부터 30분까지 해당하는 명령어를 실행합니다.
    0-30 10 * * * /test/crawling.py
  • main.yml 파일은 아래와 같이 수정하면, 매 10분마다 정해진 동작(크롤링)을 합니다
name: helloGithubAction

on:
	schedule:
    - cron: '*/10 * * * *'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      <동일하게 유지, 생략함>

주의사항

  • Workflow 갯수제한 : repo마다 20개까지 workflow를 등록할 수 있습니다.
  • 시간제한 : job에 단계마다 최대 6시간 사용이 가능합니다.
  • 횟수제한 : 전체 repo를 통틀어 1시간 최대 1,000번(job)까지만 실행가능합니다.
  • 과금정책 : 공개 저장소는 무료이고, 비공개 저장소는 500MB, 2,000분이 넘으면 과금됩니다.
  • 이외
    • UTC 타임존을 사용합니다.
    • 스케줄러의 지연시간이 상당합니다 google에 github actions cron delay로 검색해보시면 다른 repo도 동일하므로, 맛만보는 용도로 사용하시는걸 추천드립니다

이 글은 제주코딩베이스캠프의 후원을 받아 작성되었습니다!

profile
Sorbet is good...!

0개의 댓글