Computer Engineering/Tool

Github action 개요 및 주요 개념

jordan.bae 2023. 4. 16. 11:25

개요

github logo

Github Action은 Github 저장소를 기반으로 소프트웨어 개발 Workflow를 자동화 할 수 있는 도구이다. 간단하게 말하자면 Github에서 직접 제공하는 CI/CD 도구.

Workflow는 Github 저장소에서 발생하는 build, test, package, release, deploy 등 다양한 이벤트를 기반으로 직접 원하는 Workflow를 만들 수 있다.

Workflow는 Runners라고 불리는 Github에서 호스팅 하는 Linux, macOS, Windows 환경에서 실행된다. 그리고 이 Runners를 사용자가 직접 호스팅하는 환경에서 직접 구동시킬 수도 있다.(self-hosted runner)

Github 마켓 플레이스에는 여러 사람이 공유한 Workflow는 찾을 수 있으며, 자신이 직접 만들어서 공유할 수도 있다.

 

주요 Components

Example)

name: Linters

on:
  pull_request:
  push:
    branches:
      - master

jobs:
  flake8_py3:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: 3.8.6
      - run: python -m pip install flake8
      - name: flake8
        uses: liskin/gh-problem-matcher-wrap@v1
        with:
          linters: flake8
          run: flake8

 

1) Workflow

  • 어떤 자동화된 동작의 최상위 개념
  • 여러 job으로 구성되고, Event에 의해 트리거될 수 있음.
  • workflow 파일은 yaml 파일로 작성되고, project 최상단에 .github/workflows 디렉토리 아래에 위치함.

2) Event

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

3) Job

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

4) Step

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

5) Action

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

6) Runner

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

 

Reference

https://jonnung.dev/devops/2020/01/31/github_action_getting_started/

https://zzsza.github.io/development/2020/06/06/github-action/

반응형

'Computer Engineering > Tool' 카테고리의 다른 글

iTerm2설치 및 설정 그리고 주요 단축키  (0) 2024.04.06