CI 파이프라인 구축 - KimGyuBek/Threadly GitHub Wiki

CI(Continuous Integration) 파이프라인


개요

자동화된 CI 파이프라인을 구축하여 PR 생성 시 자동으로 빌드 및 테스트를 실행한다.


동작 프로세스

CI/CD 동작 프로세스


CI 파이프라인 상세

1. 트리거 조건

on:
  pull_request:
    types: [ opened, synchronize, reopened ]
    branches: [ develop, master ]
    paths-ignore:
    # 제외 항목 설정
  workflow_dispatch:
  • pull_request
    • opened: PR 생성 시
    • synchronize: 커밋 추가/변경 시
    • reopened: 닫힌 PR 재오픈 시
  • branches: develop, master에 대한 PR일때만 실행
  • paths-ignore: 문서나 설정 파일만 변경된 경우 생략
  • workflow_dispatch: 필요 시 수동 실행 지원

2. 동시 실행 제어

concurrency:
  group: ci-pr-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
  • PR 번호 또는 브랜치 단위 그룹핑
  • 새로운 실행이 시작되면 이전 실행은 자동으로 취소
  • 최신 커밋만 기준으로 테스트 실행

3. Job 구성

jobs:
  test:
    runs-on: ubuntu-latest
  • job name: test
  • 실행 환경: ubuntu-latest

4. 단계별 실행

1). 체크아웃

uses: actions/checkout@v4
  • 최신 커밋으로 체크아웃

2). JDK 설치

uses: actions/setup-java@v4
with:
  distribution: temurin
  java-version: '21'
  • java 환경 세팅

3). Gradle 환경 세팅 및 캐싱

uses: gradle/actions/setup-gradle@v4
  • 빌드 최적화를 위해 Gradle 캐시 적용

4). 테스트용 인프라 실행

run: docker compose -f ./infra/compose/test/docker-compose.yml up -d
  • Docker compose로 테스트에 필요한 인프라(Redis, DB 등) 실행

5). 테스트 실행

run: ./gradlew test --no-daemon
  • 테스트 실행

6). 모듈별 커버리지 Summary 생성

run: |
  ./gradlew printCoverageSummaryMarkdown --no-daemon
  cat build/reports/coverage-summary.md >> $GITHUB_STEP_SUMMARY
  • 각 모듈별 Jacoco를 통해 측정된 테스트 커버리지를 측정 후 결과를 취합해 Github Actions의 Job Summary에 출력한다.
  • 이를 통해 Workflow 실행 후 각 모듈이 테스트 커버리지를 확인 가능

7). 테스트 레포트 업로드

uses: actions/upload-artifact@v4
with:
  name: test-report
  path: ./threadly-apps/app-api/build/reports/tests/test
  • 테스트 결과를 Artifact로 저장해 이후 workflow 종료 후에도 확인 가능

8)테스트 인프라 종료

run: docker compose -f ./infra/compose/test/docker-compose.yml down
  • 실행했던 Docker Compose 리소스 정리

관련 문서

⚠️ **GitHub.com Fallback** ⚠️