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_request | PR이 생성되거나 변경될 때 실행 |
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..."
위 코드가 하는 일
test
와build
두 개의 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의 핵심 정리
- Workflow는
.github/workflows/
디렉터리에 YAML 파일로 저장됨 on
속성으로 실행 트리거를 정의함jobs
속성에서 여러 개의 Job을 설정 가능- 각 Job은
steps
속성으로 여러 Step을 실행함 - 다양한 실행 환경(
runs-on
)을 지원함
This post is licensed under CC BY 4.0 by the author.