티스토리 뷰

GitHub Actions?

  • 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI / CD 플랫폼
  • Workflow, Event, Job, Action, Runner

 

GitHub Actions 구성요소

  • GitHub Actions Workflow를 구성하여 Repository에서 Event가 발생할 때 트리거되도록 할 수 있다.
    • ex. Repository에 push할 경우(Event), Workflow가 실행된다.
  • Workflow는 순차적으로 또는 병렬로 실행할 수 있는 하나 이상의 Job을 포함한다.
  • 각각의 Job은 자체 Runner(또는 Container 내부)에서 실행된다.
  • Job은 하나 이상의 Step으로 이루어져 있고, Step은 정의한 script를 실행하거나 action을 실행한다.

출처 : (https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions#the-components-of-github-actions)

 

Workflow

  • Repository에 추가할 수 있는 일련의 자동화된 명령 집합
  • 하나 이상의 Job으로 구성된다.
  • GitHub Repository에 Event가 발생했을 때 Runner가 Workflow를 자동으로 실행한다.
    • 특정 시간대(Schedule), 또는 REST API로 실행할 수도 있다
  • Workflow는 Repository의 .github/workflows 내부의 YAML 파일로 워크플로우를 정의한다. buiild, test, deployment 등 역할에 맞는 Workflow를 추가할 수 있다.
    • ex. ci.yaml → CI 와 관련된 Workflow
    • ex. cd.yaml → CD와 관련된 Workflow

 

Event

  • Push, Pull Request, Commit 등 GitHub에서 일어날 수 있는 특정 행동을 Event라고 한다.
  • 이벤트가 아닌 웹훅을 사용하면 GitHub 외부에 발생한 이벤트에 의해서도 Workflow를 실행시킬 수 있다.
on: push
  • push 되었을 때 Workflow 실행
on:
  push:
    branches:
      - main
      - 'releases/**'
  • main 브랜치에 push되었을 때 Workflow 실행
  • release/** 브랜치에 push되었을 때 Workflow 실행
on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '30 5,17 * * *'
  • 매일 오전 5시 30분 및 오후 5시 30분(UTC)에 Workflow 실행

 

Job

  • Runner에서 실행되는 여러 Step의 집합
    • 각 Job은 지정한 Runner 환경에서 실행된다.
  • 하나의 Workflow 내의 여러 Job은 독립적으로 실행되지만 필요에 따라 의존 관계를 설정하여 순서를 지정해줄 수 있다.
    • ex. 테스트 수행 Job은 반드시 빌드 Job 이후에 수행되어야 하는데 여기서 의존 관계를 설정해 빌드 Job이 성공적으로 끝나야 테스트 Job을 수행하도록 만들 수 있다.
  • 의존 관계를 설정하지 않으면 각각의 Job은 병렬로 동작한다.
  • Step
    • 명령을 실행할 수 있는 각각의 Task
    • 각각의 Step은 하나의 Action일 수도 있고, Shell script가 될 수도 있다.
      • use → Action 실행
      • run → Shell script 실행
jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]
  • 실행 순서 : job1 → job2 → job3 순차적으로 동작
    • job2가 실행되려면 job1이 끝나야 한다.
    • job3가 실행되려면 job1, job2가 모두 끝나야 한다.

 

Action

  • GitHub Actions 플랫폼을 위한 Custom Application
  • 자주 반복되는 Job을 수행한다.
  • Custom Action을 작성하여 사용하거나, GitHub Marketplace에서 Workflow에 사용할 Action을 찾을 수 있다.
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
  • setup-node@v4 Action을 사용해여 node 20버전을 설치한다.

 

Runner

  • Workflow가 트리거될 때 Workflow를 실행하는 서버
  • Runner는 한 번에 하나의 Job을 실행할 수 있다.
  • Workflow 실행은 새로 프로비저닝된 새로운 가상 머신에서 실행된다.
  • GiHub은 Workflow를 실행하기 위한 Ubuntu Linux, Microsoft Windows, Mac OS Runner를 제공한다. (GitHub에서 호스팅하는 가상 환경)
    • Github에서 호스팅하는 무료 가상 머신은 메모리 및 용량 제한이 존재한다.(참고 - github-hosted-runners)
    • Larger Runner는 GitHub Team 또는 GitHub Enterprise Plan(유료)인 경우 사용할 수 있다.

 

 

참고자료

'Infra' 카테고리의 다른 글

[AWS] CloudFront?  (0) 2022.06.21
[Network] 로드밸런서를 쓰는 이유, 기능 정리  (0) 2021.05.24
댓글