Post

GitHub Actions의 Workflow 및 YAML 문법

GitHub Actions의 Workflow 개념과 YAML 문법을 학습하고, 기본적인 Workflow를 작성하는 방법

GitHub Actions의 Workflow 및 YAML 문법

GitHub Actions에서 자동화 작업을 설정하려면 Workflow를 작성해야 합니다. Workflow는 GitHub 저장소의 .github/workflows/ 디렉터리에 YAML 파일 형태로 저장되며, 특정 이벤트가 발생할 때 실행됩니다.

1. GitHub Actions의 Workflow 개념

Workflow란?

Workflow는 GitHub Actions에서 자동화 프로세스를 정의하는 파일입니다. 특정 이벤트가 발생할 때 실행되며, 여러 개의 Jobs(작업)로 구성됩니다.

Workflow의 주요 특징

  • GitHub 저장소의 .github/workflows/ 디렉터리에 위치
  • .yml 또는 .yaml 형식으로 작성됨
  • 특정 이벤트(push, pull_request, schedule 등) 발생 시 실행 가능
  • 여러 개의 Jobs를 포함할 수 있음
  • 병렬 실행 또는 순차 실행 가능

Workflow의 기본 구조

아래는 GitHub Actions의 Workflow 기본 구조입니다.

1
2
3
4
5
6
7
8
9
10
11
name: Workflow 이름  # (선택 사항)

on: 이벤트  # 트리거 지정 (예: push, pull_request, schedule 등)

jobs:
  job_name:
    runs-on: 실행 환경  # (예: ubuntu-latest, windows-latest 등)

    steps:
      - name: Step 설명
        run: 명령어 실행 또는 action 사용

2. YAML 문법 개요

GitHub Actions의 Workflow는 YAML(YAML Ain’t Markup Language) 형식으로 작성됩니다. 주요 YAML 문법을 이해하면 Workflow를 쉽게 구성할 수 있습니다.

YAML 기본 문법

요소설명
key: value키-값 쌍 (예: name: CI Workflow)
-리스트 항목 (예: steps: 아래 - name:)
:계층 구조 구분 (예: jobs: 아래 build:)
#주석 (예: # 이 부분은 주석입니다.)

예제: YAML 기본 구조

1
2
3
4
5
6
7
8
9
10
11
12
13
name: Example Workflow  # Workflow의 이름 (선택 사항)

on: push  # push 이벤트 발생 시 실행

jobs:
  build:
    runs-on: ubuntu-latest  # 실행 환경 지정
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Run a simple command
        run: echo "Hello, GitHub Actions!"

3. Workflow 트리거 (on 속성)

Workflow를 실행하는 이벤트를 지정할 수 있습니다.

주요 트리거 이벤트

이벤트설명
push특정 브랜치에 코드가 푸시될 때 실행
pull_requestPR이 생성되거나 변경될 때 실행
schedule일정 시간마다 실행 (cron 형식)
workflow_dispatch수동 실행 (사용자가 직접 실행)

예제: 여러 트리거 지정

1
2
3
4
5
6
7
8
9
on:
  push:
    branches:
      - main  # main 브랜치에 푸시될 때 실행
  pull_request:
    branches:
      - main  # main 브랜치에 대한 PR 생성 시 실행
  schedule:
    - cron: '0 12 * * 1'  # 매주 월요일 12:00 UTC에 실행

4. Jobs 및 Steps (jobs 속성)

Jobs란?

  • Workflow에서 실행할 작업 단위입니다.
  • 여러 개의 Jobs를 정의할 수 있으며, 병렬 실행 또는 순차 실행이 가능합니다.

Steps란?

  • Job 내부에서 실행되는 개별 단계입니다.
  • 각 Step은 run을 사용해 명령어를 실행하거나, uses를 사용해 Actions를 실행할 수 있습니다.

예제: 두 개의 Job을 병렬 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      - name: Run Tests
        run: echo "Running tests..."

  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      - name: Build Project
        run: echo "Building project..."

위 코드가 하는 일

  • testbuild 두 개의 Job을 정의
  • 두 Job은 서로 독립적으로 실행됨 (병렬 실행)

5. 실행 환경 (runs-on 속성)

GitHub Actions는 다양한 실행 환경을 지원합니다.

지원되는 실행 환경

환경설명
ubuntu-latest최신 Ubuntu 버전
windows-latest최신 Windows 버전
macos-latest최신 macOS 버전
self-hosted사용자가 직접 설정한 서버

예제: 여러 환경에서 테스트 실행

1
2
3
4
5
6
7
8
9
jobs:
  test:
    runs-on: $
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    steps:
      - name: Run tests
        run: echo "Testing on $"

이 코드는?

  • Ubuntu, Windows, macOS에서 동일한 테스트 실행
  • matrix 전략을 사용하여 여러 환경에서 병렬 실행

6. 정리

GitHub Actions Workflow의 핵심 정리

  1. Workflow는 .github/workflows/ 디렉터리에 YAML 파일로 저장됨
  2. on 속성으로 실행 트리거를 정의함
  3. jobs 속성에서 여러 개의 Job을 설정 가능
  4. 각 Job은 steps 속성으로 여러 Step을 실행함
  5. 다양한 실행 환경(runs-on)을 지원함
This post is licensed under CC BY 4.0 by the author.