Github Action

김성혁·2023년 1월 10일
0
post-thumbnail

Workflow

  • 자동화된 전체 프로세스. 하나 이상의 Job으로 구성되고, Event에 의해 예약되거나 트리거될 수 있는 자동화된 절차
  • Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장. Github에게 YAML 파일로 정의한 자동화 동작을 전달하면, Github Actions는 해당 파일을 기반으로 그대로 실행시킨다.

Event

  • Workflow를 트리거(실행)하는 특정 활동이나 규칙. 예를 들어, 누군가가 커밋을 레포지토리에 푸시하거나 풀 요청이 생성될 때 Github에서 활동이 시작될 수 있다.

Job

  • Job은 여러 Step으로 구성되고, 단일 가상 환경에서 실행된다. 다른 Job에 의존 관계를 가질 수도 있고, 독립적으로 병렬로 실행될 수도 있다.

Step

  • Job 안에서 순차적으로 실행되는 프로세스 단위. step에서 명령을 내리거나, action을 실행할 수 있다.

Action

  • job을 구성하기 위한 step들의 조합으로 구성된 독립적인 명령
  • workflow의 가장 작은 빌드 단위
  • workflow에서 action을 사용하기 위해서는 action이 step을 포함해야 한다.
  • action을 구성하기 위해서 레포지토리와 상호작용하는 커스텀 코드를 만들 수도 있다.
  • 사용자가 직접 커스터마이징하거나, 마켓플레이스에 있는 action을 가져다 사용할 수도 있다.

Runner

  • Github Action Runner 애플리케이션이 설치된 머신으로, Workflow가 실행될 인스턴스

👨🏻‍💻 Overview


Github Actions는 소프트웨어 개발 생명 주기 내에 자동화된 테스크를 수행할 수 있도록 도와줍니다. Github Action은 특정한 이벤트가 발생한 이후에 일련의 명령어들을 실행할 수 있는 Event-Driven 입니다.

그림에서 보여지는 것과 같이, Event가 job을 포함하는 workflow를 자동으로 트리거합니다. 그런 다음 job은 step을 사용하여 action을 실행하는 순서를 제어합니다.

👨🏻‍💻 Github Actions의 컴포넌트


다음은 job을 실행하기 위해 함께 동작하는 여러 Github Actions 컴포넌트의 목록입니다.

Workflows

  • 레포지토리에 추가하는 자동화된 절차
  • workflow는 하나 이상의 job으로 구성되며 이벤트에 의해 스케줄되거나 트리거될 수 있습니다.
  • workflow는 깃헙에서 프로젝트를 빌드, 테스트, 패키지, 릴리즈, 배포하는데 사용되어질 수 있습니다.

Events

  • workflow를 유발하는 특정한 활동

Jobs

  • 동일한 runner를 실행하는 일련의 step
  • 기본적으로, 여러 job이 있는 workflow는 해당 job들을 병렬적으로 실행합니다. 작업을 순차적으로 실행하도록 workflow를 구성할 수도 있습니다.

Steps

  • job에서 명령을 실행할 수 있는 개별 작업
  • step은 action 또는 쉘 명령어일 수도 있습니다.
  • 작업의 각 단계는 동일한 실행기에서 실행되므로 해당 job에서 action은 서로 데이터를 공유하는 것을 허용합니다.

Actions

  • Action은 작업을 만들기 위해 step과 결합되는 standalone 명령어
  • Action은 워크플로우의 가장 작은 이식 가능한 구성 요소입니다.

Runners

  • Github Action runner Application이 설치된 서버
  • 깃헙에 의해 호스팅된 러너를 사용하거나 직접 호스팅할 수 있습니다.
  • 러너는 사용 가능한 작업을 수신 대기하고 한 번에 하나의 작업을 실행하고 진행 상황, 로그 및 결과를 다시 Github에 보고합니다.
  • Github 호스팅 러너는 Ubuntu Linux, Microsoft Windows 및 macOS를 기반으로 하며 워크플로의 각 작업은 새로운 가상 환경에서 실행됩니다.

Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장. Github에게 YAML 파일로 정의한 자동화 동작을 전달하면, Github Actions는 해당 파일을 기반으로 그대로 실행시킨다.

example

name: learn-github-actions : (선택) workflow의 이름으로 깃헙 레포지토리의 Action 탭에 나타남.

on: [push] : workflow 파일을 자동으로 트리거하는 이벤트를 지정

jobs :  'learn-github-actions' workflow 파일에서 동작하는 모든 작업을 함께 그룹화

check-bats-version : 작업 섹션에 저장된 'check-bats-version' 작업을 정의

runs-on: ubuntu-latest : Ubuntu Linux 실행기에서 실행되도록 작업을 구성합니다. 이는 작업이 GitHub에서 호스팅하는 새로운 가상 머신에서 실행됨을 의미합니다. 다른 러너를 사용하는 구문 예제는 "GitHub 작업에 대한 워크플로 구문"을 참조하십시오.

steps : check-bats-version 작업에서 실행되는 모든 단계를 함께 그룹화. 이 섹션 아래에 중첩된 각 항목은 별도의 작업 또는 셸 명령입니다.

- uses: actions/checkout@v2 : uses 키워드는 actions/checkout@v2라는 커뮤니티 작업의 v2를 검색하도록 작업에 지시합니다. 이것은 리포지토리를 체크아웃하고 러너에 다운로드하여 코드에 대해 작업(예: 테스트 도구)을 실행할 수 있도록 하는 작업입니다.

    - uses: actions/setup-node@v2
      with:
        node-version: '14'

이 단계에서는 actions/setup-node@v2 작업을 사용하여 러너에 지정된 버전의 노드 소프트웨어 패키지를 설치합니다. 그러면 npm 명령에 액세스할 수 있습니다.

- run: npm install -g bats : run 키워드는 러너에서 명령을 실행하도록 작업에 지시합니다. 이 경우 npm을 사용하여 bats 소프트웨어 테스트 패키지를 설치합니다.

run: bats -v : 마지막으로 소프트웨어 버전을 출력하는 매개변수를 사용하여 bat 명령을 실행합니다.

0개의 댓글