κ°λ° νλ‘μΈμ€μμ κ°μ₯ μ€μν ν€μλλ μλνμ
λλ€.
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 κΈ°λ³Έ λμ λ°©μ

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λ₯Ό λ°λ‘ νμ©ν μ μμ΅λλ€.