GitHub Actions로 Build 실패 시 Merge 차단하기

이영민·2025년 3월 4일
post-thumbnail

1. 빌드 자동화가 필요한 이유

소프트웨어 개발에서 코드 변경 사항을 지속적으로 통합하고 배포하는 것은 매우 중요하다. 특히, CI/CD(Continuous Integration & Continuous Deployment)를 활용하면 개발자가 코드를 변경할 때마다 자동으로 테스트와 빌드가 실행되므로, 문제가 있는 코드가 메인 브랜치에 반영되는 것을 방지할 수 있다.

GitHub Actions를 사용하면 pull request(Pull Request, PR) 단계에서 자동으로 빌드를 수행하고, 실패할 경우 merge를 차단할 수 있다. 이를 통해 코드의 안정성을 보장하고, 배포 프로세스를 더욱 원활하게 만들 수 있다.

2. GitHub Actions 소개

GitHub Actions는 GitHub에서 제공하는 자동화 도구로, 코드 변경 사항이 발생했을 때 특정 작업을 실행할 수 있도록 해준다. 워크플로우(Workflow)는 YAML 형식의 설정 파일로 정의되며, 원하는 이벤트가 발생하면 자동으로 실행된다.

주요 개념

  • Workflow: 자동화 프로세스를 정의하는 YAML 파일
  • Job: Workflow 내에서 실행되는 개별적인 작업 단위
  • Step: Job 내에서 실행되는 각 명령어
  • Runner: Job을 실행하는 환경(예: ubuntu-latest)

GitHub Actions를 활용하면 PR을 생성할 때 빌드 프로세스를 실행하고, 실패한 경우 PR을 머지할 수 없도록 설정할 수 있다.

3. YAML 코드 작성

아래는 frontend/ 폴더의 빌드 체크를 수행하는 GitHub Actions 설정 파일이다. PR을 생성하면 npm installnpm run build가 실행되며, 실패하면 merge를 차단하도록 할 수 있다.

.github/workflows/build.yml

name: build check

on:
  pull_request:
    branches:
      - main
      - develop
    paths:
      - frontend/**

jobs:
  build:
    runs-on: ubuntu-latest

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

      - name: Install Dependencies
        run: npm install
        working-directory: frontend  # <--- 나같은 경우에는 

      - name: Build
        run: npm run build
        working-directory: frontend

코드 설명

  1. on: pull_request: PR이 생성될 때 실행
  2. branches: main, develop 브랜치 대상
  3. paths: frontend/ 경로 내 변경이 있을 때만 실행
  4. jobs.build:
    • runs-on: ubuntu-latest: 실행 환경 지정
    • steps: 실행할 작업 목록
      • actions/checkout@v4: 저장소 코드 체크아웃
      • npm install: 종속성 설치 (frontend/ 폴더 내 실행)
      • npm run build: 빌드 실행

4. Settings에서 Branch Ruleset에 적용

YAML 파일을 추가한 후, 빌드 결과에 따라 PR을 제한하려면 Branch Protection Rule을 설정해야 한다.

1) PR에서 GitHub Actions 실행하기

GitHub은 한 번도 실행되지 않은 GitHub Actions의 경우, Required status checks에 추가할 수 없다. 따라서, .github/workflows/build.yml을 추가한 후, PR을 생성하여 최소 한 번은 실행해야 한다.

2) GitHub에서 Branch Ruleset 설정하기

  1. GitHub 저장소 → Settings → Branches 이동
  2. "Add branch rule" 클릭
  3. Protected Branch 설정:
    • Branch name pattern: main 또는 develop 입력
    • Require status checks to pass 활성화
    • Add checks를 누르고 생성한 action파일 추가(검색 창에서 'build' 선택)
  4. 저장 후 PR 테스트

3) PR 테스트 및 Merge 차단 확인

  • 정상적으로 빌드되면 ✅ PR Merge 가능
  • 빌드가 실패하면 ❌ PR Merge 차단

이제 GitHub Actions를 활용하여 PR 시 자동으로 빌드를 수행하고, 빌드 실패 시 Merge를 차단할 수 있다. 이를 통해 코드의 품질을 유지하고, 배포 전 오류를 사전에 방지할 수 있다. 이 설정을 확장하면 테스트 자동화, 코드 린팅 등 다양한 CI/CD 기능을 추가할 수도 있다.

0개의 댓글