Github Action:

Aiden Hong

2021.09.02

@blod9

Introdution

Introduction

Github action은 일련된 작업들을 자동화하는데 도움을 주는 하나의 툴

Github action은 이벤트 주도적(event-driven)이다.

예를 들어, 개발자가 Pull request를 날리면 테스트를 자동으로 수행한다.

Pull request

Run test

Introduction - Component

Github action은 하나의 event가 일어나면 자동으로 트리거 하여 실행됩니다.

Introduction - Component

- Workflow

action의 루트, 레포지토리에 추가 되어서 event가 발생하면 자동으로 트리거 되어 실행되고 하나 또는 여러개의 Job을 구성할 수 있다.

- Event

event는 workflow가 트리거 되는 액션을 말한다.

ex. pull request, push, cron, manually

Introduction - Component

- Job

Job은 하나의 Runner(가상 인스턴스)에서 실행되는 단위로 여러 개의  Step으로 구성 된다. 여러 개의 job은 병령적으로 실행 될 수도 있고 순차적으로 실행 될 수도 있다.

- Step

하나의 job을 구성하는 각각의 작은 작업을 말한다. step은 action이나 shell command를 실행할 수 있으며, 각 step들은 하나의 job안에 있기때문에 데이터 공유가 가능하다.

Introduction - Component

- action

action은 workflow를 구성하는 가장 작은 단위이다. action은 재사용하기위해 step들은 연결 놓은 컴포넌트이다.  action은 개발자가 만들 수 있으며 커뮤니티에서 만들어 놓은 action을 쓸 수도 있다.

- runner

하나의 job이 실행되는 가상 인스턴스이다. github에서 제공하는 runner를 사용할 수도 있고 직접 호스팅하는 runner를 사용할 수도 있다. github에서 제공하는 runner는 Ubuntu Linux, Microsoft Windows, macOS 3가지 이다.

자세한 사양은 링크 참고

Introduction - example

Github action은 YAML 파일로 작성한다. 코드베이스로 버전관리가 가능하다.

각 레포지토리 루트에 .github/workflows 디렉토리 안에 YAML파일을 작성한다. 이건 필수적인 규칙이다. workflow.yml 파일명은 자유롭게 작명하면 된다.

ex. .github/workflow/example.yml

Introduction - example

1. 우선 레포지토리를 하나 생성한다.

2. 레포지토리 루트에 .github/workflows/ 디렉토리를 만든다.

3. .github/workflows/ 안에 example.yml 파일 생성

4. 아래 코드 작성하고 커밋 후 푸시

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

Github action: introdution

By Seungwoo Hong

Github action: introdution

  • 291