GitHub Actions는 YAML로 events, jobs, 그리고 steps를 정의한다. 그리고 YAML 파일은 레포지토리의 .github/workflows에 저장된다. 이 YAML을 직접 작성하고 Actions를 실행 시켜보자.

만들 예제는 npm으로 bats를 설치하고 bats -v를 실행하는 간단한 액션이다.


예제 만들기

1. 레포지토리 생성 및 YAML 파일 작성

GitHub에서 레포지토리를 새로 만들고 .github/workflows에 YAML 파일을 작성한다.

# https://docs.github.com/en/actions/learn-github-actions/introduction-to-github-actions#create-an-example-workflow
name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
      - run: npm install -g bats
      - run: bats -v

편의상 GitHub에서 바로 작성 했다.


2. commit 후 push

작성한 YAML 파일을 push하자.

on: [push] 구문(아래에서 자세히 알아보겠다)에 의해서 push를 하게 되면 actions이 실행 된다.


3. Actions 확인

GitHub에서 actions이 실행 되는 과정과 steps 별로 활동을 깔끔한 ui로 볼 수 있다.

사이드 바에서 jobs 별로 확인 할 수 있다.


간단하게 GitHub Actions를 만들어 보았다. 이제 YAML 파일에 작성한 코드들을 하나 씩 뜯어보자.

YAML 파일(workflow 파일) 분석

name: => workflow의 이름. GitHub Actions 탭의 사이드바에서 확인 할 수 있다.

on: => workflow 파일은 자동으로 실행시키는 이벤트를 정하는 코드다. push 말고도 다양한 이벤트를 세팅 할 수 있다. 더 나아가 branch, tags, path에 대해서 특정 할 수도 있다.

jobs: => 모든 job들을 이 밑에 선언한다.

check-bats-version: => job의 이름을 정의한다.

runs-on: ubuntu-latest => job들이 Ubuntu linux runner(서버)에서 실행되게 명시 해줌을 의미한다. GitHub에서는 또 다른 운영체제도 지원해주고 심지어 자기가 만든 runner도 명시 할 수 있다.

steps => check-bats-version job이 실행할 step들을 이 밑에 선언한다.

- uses: actions/checkout@v2 => uses 키워드는 actions/checkout라는 이름을 가진 액션에서 v2 버전을 community action에서 가지고 오라고 job에게 요청하는 역할을 한다. actions/checkout@v2은 레포지토리를 checkout하고 runner에 다운로드하여 코드를 실행하게 해주는 action이다. 그렇기 때문에 나의 레포지토리의 코드를 다루는 모든 workflow에서는 이 action을 사용해야 한다.

- uses: actions/setup-node@v1 => node 패키지를 runner에 설치해주는 action이다.

- run: npm install -g bats => run 키워드는 runner에게 작성한 코드를 명령어로 실행하게 해준다.

- run: bats -v => 명령어를 실행한다.

정리하는 느낌으로 전체 과정을 이미지로 보고 넘어가자



다음 글에서는 workflow 파일에서 변수를 사용하는 방법에 대해 알아보겠다.


Reference