본문 바로가기

PYTHON-BACK

#파이썬 22일차_GitHub Action

728x90

Github Action Core

  • Github Action을 이해하기 위해서 알아야 하는 핵심 개념
  • Workflow, Event, Job, Step, Action, Runner 등이 있음

Workflow

  • 여러 Job으로 구성되고, Event에 의해 트리거될 수 있는 자동화된 프로세스의 최상위 개념
  • Workflow 파일은 YAML으로 작성됨
  • Github Repository의 .github/workflows 폴더 아래에 저장됨

Event

  • Workflow를 Trigger(실행)하는 특정 활동이나 규칙
  • 예를 들어 다음과 같은 상황에서 사용할 수 있음
    • 특정  브랜치로  Push하거나
    • 특정  브랜치로  Pull Request하거나
    • 특정  시간대에  반복(Cron)
    • Webhook을  사용해  외부  이벤트를  통해  실행

Job

  • Job은 여러 Step으로 구성되고, 가상 환경의 인스턴스에서 실행됨
  • 다른 Job에 의존 관계를 가질 수 있고, 독립적으로 병렬 실행도 가능함

Step

  • Task들의 집합으로
  • 커맨드를 날리거나 action을 실행할 수 있음

Action

  • Workflow의 가장 작은 블럭(smallest portable building block)
  • Job을 만들기 위해 Step들을 연결할 수 있음
  •  재사용이 가능한 컴포넌트
  • 개인적으로 만든 Action을 사용할 수도 있고, Marketplace에 있는 공용 Action을 사용할 수도 있음
  • Github Marketplace와 Github Actions Repository에서 확인 가능

Runner

  • Gitbub Action Runner 어플리케이션이 설치된 머신
  • Workflow가 실행될 인스턴스
  • 구분
  • Github에서  호스팅해주는  Github-hosted runner
    •  Azure의  Standard_DS2_v2를  이용
      • vCPU 2, 메모리  7GB, 임시  스토리지  14GB
  • 직접  호스팅하는  Self-hosted runner

 

Github Action 을 생성하는 일반적인 흐름

1. 코드 작성

2. 코드 작성 후 Workflow 정의

3. 정상적으로 작동하는지 Test

 

 

Workflow 정의

  • 기본적인 방법 : .github/worfklows 폴더 안에 .yml 파일을 생성 →  템플릿 활용 가능
  • yml 파일 예시
    • Master 브랜치에  Push 또는  Pull Request가 올  경우  실행되는 
      CI란  이름을  가지는  Workflow

 

 

 

 

Github Repo 에서  Actions 클릭

 

언어 등 개발환경 선ㅌ택 후 Configure 클릭하면 간단한 workflow를 생성할 수 있음

 

 

 

  • Workflow 예시 중 Python으로 작성된 것은 Python Package using Anaconda, 
    Publish Python Package, Python application, Python package, Django, 
    Pylint 등이 있음

 

Python package를 예시로 사용, Github Repository 생성 후, hello.py 생성 후 Push

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90