GitHub Actions μ™„μ „ 정볡πŸ”₯

개발 ν”„λ‘œμ„ΈμŠ€μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ ν‚€μ›Œλ“œλŠ” μžλ™ν™”μž…λ‹ˆλ‹€.
CI/CD(지속적 톡합 / 지속적 배포)λŠ” 이제 λͺ¨λ“  κ°œλ°œμžμ—κ²Œ ν•„μˆ˜ κ°œλ…μ΄ λ˜μ—ˆκ³ , 이λ₯Ό κ°€μž₯ μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλŠ” 도ꡬ 쀑 ν•˜λ‚˜κ°€ λ°”λ‘œ GitHub Actionsμž…λ‹ˆλ‹€.

이번 κΈ€μ—μ„œλŠ” GitHub Actions의 핡심 κ°œλ…κ³Ό μ‹€μ œ μ‚¬μš© μ˜ˆμ‹œλ₯Ό λΉ λ₯΄κ²Œ 정리해 λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

GitHub Actions 핡심 κ°œλ… 5κ°€μ§€

GitHub ActionsλŠ” 이벀트 기반으둜 μžλ™ν™” μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. λ”± 5κ°€μ§€ 핡심 κ°œλ…λ§Œ μ΄ν•΄ν•˜λ©΄ μΆ©λΆ„ν•©λ‹ˆλ‹€.

1. Event (이벀트)
– μ–΄λ–€ μƒν™©μ—μ„œ μ›Œν¬ν”Œλ‘œμš°κ°€ 싀행될지 μ§€μ •
– 예: push, pull_request, issue 생성 λ“±

2. Workflow (μ›Œν¬ν”Œλ‘œμš°)
– 이벀트 λ°œμƒ μ‹œ μ‹€ν–‰λ˜λŠ” μžλ™ν™” μ‹œλ‚˜λ¦¬μ˜€(λ ˆμ‹œν”Ό)
.github/workflows/*.yml νŒŒμΌμ— μ •μ˜

3. Job (작)
– ν•˜λ‚˜μ˜ 독립적인 μ‹€ν–‰ λ‹¨μœ„
– μ—¬λŸ¬ μž‘μ„ 병렬 λ˜λŠ” 순차적으둜 μ‹€ν–‰ κ°€λŠ₯

4. Step (μŠ€ν…)
– 작 μ•ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” μž‘μ€ μž‘μ—… λ‹¨μœ„
– μ‰˜ λͺ…λ Ήμ–΄ μ‹€ν–‰ λ˜λŠ” μ•‘μ…˜(Action) 호좜

5. Runner (λŸ¬λ„ˆ)
– 작이 μ‹€ν–‰λ˜λŠ” ν™˜κ²½ (VM λ˜λŠ” μ»¨ν…Œμ΄λ„ˆ)
– 예: ubuntu-latest, windows-latest, macos-latest

GitHub Actions κΈ°λ³Έ λ™μž‘ 방식

GitHub Actions μ™„μ „ 정볡

1. νŠΉμ • 이벀트(예: push)κ°€ λ°œμƒ
2. μ •μ˜λœ Workflow 파일 μ‹€ν–‰
3. Job λ‹¨μœ„λ‘œ λŸ¬λ„ˆμ—μ„œ μ‹€ν–‰
4. Step λ‹¨μœ„λ‘œ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰
5. κ²°κ³Όλ₯Ό GitHubμ—μ„œ 확인 κ°€λŠ₯

ν…ŒμŠ€νŠΈ μ‹€νŒ¨ μ‹œ μ›Œν¬ν”Œλ‘œμš°κ°€ μ€‘λ‹¨λ˜κ³ , Pull Request에 λ°”λ‘œ ν‘œμ‹œλ˜λ―€λ‘œ μ½”λ“œ ν’ˆμ§ˆμ„ 보μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œ μ˜ˆμ‹œ (Node.js ν”„λ‘œμ νŠΈ ν…ŒμŠ€νŠΈ μžλ™ν™”)

.github/workflows/ci.yml νŒŒμΌμ„ μƒμ„±ν•˜κ³  λ‹€μŒκ³Ό 같이 μž‘μ„±ν•©λ‹ˆλ‹€.

name: Sample CI

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 14
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test

push, pull_request 이벀트 λ°œμƒ μ‹œ μ‹€ν–‰
– Node.js ν™˜κ²½ μ„ΈνŒ… ν›„ μžλ™μœΌλ‘œ npm install, npm test μˆ˜ν–‰
– ν…ŒμŠ€νŠΈ μ‹€νŒ¨ μ‹œ λ°”λ‘œ PRμ—μ„œ 확인 κ°€λŠ₯

GitHub Actions μž₯점

– GitHub에 λ‚΄μž₯λ˜μ–΄ μžˆμ–΄ μΆ”κ°€ 인프라 λΆˆν•„μš”
– 수천 개의 μ˜€ν”ˆμ†ŒμŠ€ μ•‘μ…˜μ„ λ°”λ‘œ ν™œμš© κ°€λŠ₯
– ν”„λ‘œμ νŠΈμ— λ§žλŠ” CI/CD νŒŒμ΄ν”„λΌμΈμ„ μ‰½κ²Œ ꡬ좕 κ°€λŠ₯
– μ½”λ“œ ν’ˆμ§ˆκ³Ό 배포 μžλ™ν™”λ‘œ 개발 생산성 κ·ΉλŒ€ν™”

정리

GitHub ActionsλŠ” 이제 선택이 μ•„λ‹Œ ν•„μˆ˜ λ„κ΅¬μž…λ‹ˆλ‹€.
CI/CD μžλ™ν™”λ₯Ό 톡해 개발 νš¨μœ¨μ„±κ³Ό μ½”λ“œ ν’ˆμ§ˆμ„ λ™μ‹œμ— 확보할 수 μžˆμŠ΅λ‹ˆλ‹€.

1. Event
2. Workflow
3. Job
4. Step
5. Runner

이 5κ°€μ§€ κ°œλ…λ§Œ μ΄ν•΄ν•˜λ©΄ λˆ„κ΅¬λ‚˜ GitHub Actionsλ₯Ό λ°”λ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.