GitHub Actions 이란?

: 빌드, 테스트, 배포 파이프라인을 자동화할 수 있게 해주는 GithubCI/CD 플랫폼

  • Github Repository로의 모든 Pull Request를 빌드하고 테스트하는 워크플로우를 생성하거나, Merge된 Pull Request를 프로덕션(서버)에 배포하는 등의 작업을 수행할 수 있게 함
  • 단순히 DevOps를 넘어서, Github Repository에서 여러 이벤트가 발생할 때 워크플로우를 실행하게 한다. 예를 들어, 새로운 Issue를 만든 사람에게 자동으로 적절한 Label을 추가하는 워크플로우를 실행할 수도 있음
  • GitHub은 워크플로우를 실행할 Linux, Windows, macOS 기반의 VM을 제공하거나, 유저가 관리하는 데이터 센터 또는 클라우드 인프라에서 Self-Hosted Runner를 호스팅 할 수 있음

Github Actions의 Component

Github Actions의 Component인 'Event', 'Runner', 'Job', 'Step' 의 구조

 

Workflow (워크플로)

: Github의 Repository 안에서 하나 이상의 Job(작업)을 가지는 YAML 단위의 자동화 프로세스.

  • Repo 기준 최상단에서 .github/workflows 디렉토리 하위에 위치하며, .yml 파일로 존재
  • 한 Repo 안여러 개의 워크플로(.yml 파일)를 가질 수 있고, 각각 다른 일련의 작업 수행 가능
  • Github의 Repository의 특정한 Event(Push, PR, Issue 등)에 의해 트리거됨
  • 수동으로 트리거 또는 정의된 일정에 따라 진행 가능
  • 한 워크플로 내에서 다른 워크플로 참조도 가능 (Reusing Workflow)
    https://docs.github.com/en/actions/sharing-automations/reusing-workflows
  • 워크플로에 대한 더 자세한 정보
    https://docs.github.com/en/actions/writing-workflows

Events (이벤트)

: Workflow 실행을 트리거하는 Repository의 특정 활동

이 ‘활동’은 예를 들면, Github 상에서 누군가가 PR(Pull Request) 또는 Issue를 생성하거나, 커밋을 Repo에 Push 하는 등의 행위를 수행하는 것으로부터 기원한다.


Jobs (작업)

: 한 runner 안에서 실행되는 하나의 워크플로 안의 step’들의 집합

  • default로 job은 서로 간의 종속성이 없어 병렬로 실행되나, 서로 간의 종속성을 만들어 직렬로 수행도 가능
  • step실행될 쉘 스크립트 또는 실행될 하나의 action 단위를 의미
  • step은 순차적으로 실행되며, 이에 따라 이전 step에 의존하게 됨
  • step은 하나의 runner 안에서 실행되므로, 서로 데이터를 공유할 수 있음.
    예를 들면, 애플리케이션을 빌드하는 step 다음에 빌드된 애플리케이션을 테스트하는 step을 가질 수 있음
  • 작업에 대한 더 자세한 정보
    https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does

Actions (액션)

: 복잡하지만 자주 반복되는 task를 수행하는 Github Actions 에서만 사용 가능한 커스텀 애플리케이션

  • 워크플로 파일 안에서 반복되는 코드의 양을 획기적으로 줄여줌
  • 워크플로가 실행되는 Github Repo와 연동되는 Git Repo 를 가져오거나, 빌드 환경에 맞는 올바른 Tool-Chain을 설정하거나, 클라우드 제공업체에 대한 authentication 을 설정 가능
  • Github 마켓플레이스에서 워크플로에 사용할 액션을 찾을 수 있고, 직접 작성도 가능
  • action 생성에 대한 더 자세한 정보
    https://docs.github.com/en/actions/sharing-automations

Runners (러너)

: 워크플로가 트리거될 때, 해당 워크플로를 실행하는 주체가 되는 서버


참고

https://docs.github.com/en/actions/about-github-actions/understanding-github-actions

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기