Backend/강의

[🐋 Docker + CI/CD] 2. Github actions를 활용한 CI/CD 파이프라인

가지코딩 2025. 7. 1. 23:16

🐋 목차

  1. Github Actions
  2. Github Actions CI
  3. Github Actions CD

🩵 학습 목표

  • Github Actions를 이해합니다.
  • 간단한 CI/CD 파이프라인을 구성합니다.

1. Github Actions

GitHub Actions

  • GitHub에서 제공하는 CI/CD 자동화 도구
  • 코드 변경(pull request, push 등)에 반응하여 자동으로 테스트, 빌드, 배포 등의 작업을 수행할 수 있다.
  • GitHub 저장소 내부에서 실행되며, 외부 서비스 연동 없이 GitHub 환경에서 직접 워크플로우를 구성할 수 있는 점이 특징이다.

 

주요 구성 요소

  • Workflow
    • 자동화하고 싶은 전체 작업 정의
    • .github/workflows/main.yml 등의 형식으로 저장
  • Job
    • 워크플로우 안에서 병렬 혹은 순차적으로 실행되는 작업 단위
    • 예: build, test, deploy
  • Step
    • 각 Job 안에서 순차적으로 실행되는 세부 작업
    • 예: 코드 체크아웃, 패키지 설치, 테스트 실행
  • Action
    • Step 안에서 재사용 가능한 명령 집합 (GitHub 커뮤니티나 직접 만든 것도 사용 가능)
    • 예: actions/checkout, actions/setup-java

 

트리거 종류

트리거 설명
push 특정 브랜치로 푸시될 때 실행
pull_request PR이 열리거나 업데이트될 때 실행
schedule 크론 표현식을 사용해 주기적으로 실행
workflow_dispatch 수동 실행 트리거 (버튼 클릭)

2. Github Actions CI

GitHub Actions에서 CI

  • test를 통과한 코드만 develop 브랜치와 main 브랜치에 merge되도록 하여 오류를 방지하고 안정적인 코드가 배포되고 버그를 빠르게 발견

 

Github Actions로 CI 구성하기

  • develop, feature/* 브랜치 푸시나 PR 발생 시 실행
  • Java 17 설치 후 ./gradlew test로 테스트 자동 수행
name: Run Test

on:
  push:
    branches: [ develop, feature/* ]
  pull_request:
    branches: [ develop ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: checkout
        uses: actions/checkout@v4

      - name: setup java
        uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '17'

      - name: run test
        run: |
          chmod +x ./gradlew
          ./gradlew clean test

 

 

실습

https://github.com/gajicoding/ci-sample

 

GitHub - gajicoding/ci-sample

Contribute to gajicoding/ci-sample development by creating an account on GitHub.

github.com


3. Github Actions CD

GitHub Actions에서 CD

  • 배포를 자동화하는 작업을 기술해서 빠르고 간편하게 배포

 

전체 흐름

  1. feature/* → PR 생성 → gradle test 수행
  2. test 성공 시 → 리뷰 → merge
  3. main 브랜치로 merge → 자동 배포

 

실습

https://github.com/gajicoding/cicd-sample

 

GitHub - gajicoding/cicd-sample

Contribute to gajicoding/cicd-sample development by creating an account on GitHub.

github.com