지난 글에 이어, github actions의 workflow 파일 작성법에 대해 알아보려고 한다.
우선 기본적인 구조는 다음과 같다.
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: make
name: 작업을 구분할 이름, 공백이 있어도 된다.
on: 작업을 진행하는 트리거.push
,pull-request
등을 쓸 수 있다.
jobs: 할 작업들의 나열.
작업을 구분할 수 있는 이름이다. 공백을 포함해도 된다.
등록하고 나면 actions 탭에 name으로 표기된다.
해당 workflow의 트리거이다. push
, pull-request
등을 쓸 수 있으며 특정 브랜치나 파일에 대해 커스텀도 가능하다.
on:
push:
branches:
- branch-name-1
path:
- dir1/*
이제 이 workflow는 branch-name-1
, branch-name-2
브랜치에서 dir1
에 관한 push 할 때 실행된다.
jobs에는 실행할 구체적인 actions를 쓰면 되는데, 대략적인 구조는 다음과 같다.
jobs:
job1:
runs-on: ubuntu-latest
steps:
...
job2:
runs-on: winodws-latest
steps:
...
작성된 각 job에는 runner가 배정된다. runs-on
로 그 runner의 OS를 지정할 수 있다. 각각의 job을 보면 다음과 같다.
jobs:
job1:
runs-on: ubuntu-latest
steps:
- name: job1-step1
- uses: pre-defined-actions
env:
ENV_VAR_1: var1
run: command line
with:
var1: value1
...
job을 이루는 작은 task로 생각하면 된다. 순차적으로 이루어져야 하는 일은 하나의 job에서 task로 구성해야 한다.
우선 name
은 각 step을 구분하는 기준이 된다. name
으로 구분된 단위로 actions의 로그가 찍히니까 적절한 이름으로 세팅을 하면 모니터링을 하는데 도움이 될 것이다.
uses
는 이미 정의된 action을 참조하고 싶을 때 사용한다.
예를 들어, 대부분 workflow는 uses: actions/checkout@v2
를 초반에 배치해서 runner에서 코드를 받아서 실행할 수 있도록 한다.
직접 정의한 action의 경로를 적어줄 수도 있다.
- uses: ./.github/actions/my-action
환경 변수를 넣어줄 수 있다. 이 파일에 직접 적어도 되지만, 보통 환경변수는 노출하지 않는 것이 좋기 때문에 비밀 키로 등록해주는게 좋다.
[레포지토리] > [setting] > [Secrets] > [Actions] > [New repository secret]에서 변수를 입력해주면 workflow 파일에서 참조할 수 있다.
env:
ENV_VAR_1: ${{ secrets.ENV_VAR_1 }}