github-actions (2)

스윗포테이토·2022년 12월 29일
2

지난 글에 이어, 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: 할 작업들의 나열.

name

작업을 구분할 수 있는 이름이다. 공백을 포함해도 된다.
등록하고 나면 actions 탭에 name으로 표기된다.

on

해당 workflow의 트리거이다. push, pull-request 등을 쓸 수 있으며 특정 브랜치나 파일에 대해 커스텀도 가능하다.

on:
  push:
    branches:
      - branch-name-1
    path:
      - dir1/*

이제 이 workflow는 branch-name-1, branch-name-2 브랜치에서 dir1에 관한 push 할 때 실행된다.

jobs

jobs에는 실행할 구체적인 actions를 쓰면 되는데, 대략적인 구조는 다음과 같다.

jobs:
  job1:
  	runs-on: ubuntu-latest
    steps:
    	...
  job2:
    runs-on: winodws-latest
    steps:
    	...

job

작성된 각 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
        ...

steps

job을 이루는 작은 task로 생각하면 된다. 순차적으로 이루어져야 하는 일은 하나의 job에서 task로 구성해야 한다.

name

우선 name은 각 step을 구분하는 기준이 된다. name으로 구분된 단위로 actions의 로그가 찍히니까 적절한 이름으로 세팅을 하면 모니터링을 하는데 도움이 될 것이다.

uses

uses는 이미 정의된 action을 참조하고 싶을 때 사용한다.
예를 들어, 대부분 workflow는 uses: actions/checkout@v2를 초반에 배치해서 runner에서 코드를 받아서 실행할 수 있도록 한다.
직접 정의한 action의 경로를 적어줄 수도 있다.

- uses: ./.github/actions/my-action

env

환경 변수를 넣어줄 수 있다. 이 파일에 직접 적어도 되지만, 보통 환경변수는 노출하지 않는 것이 좋기 때문에 비밀 키로 등록해주는게 좋다.
[레포지토리] > [setting] > [Secrets] > [Actions] > [New repository secret]에서 변수를 입력해주면 workflow 파일에서 참조할 수 있다.

env:
  ENV_VAR_1: ${{ secrets.ENV_VAR_1 }}
profile
나의 삽질이 미래의 누군가를 구할 수 있다면...

0개의 댓글