본문 바로가기
Spring

넌 못지나간다! Test가 실패했으면 배포도 되면 안되지!

by zkdlu 2021. 5. 6.

넌 모찌나간다

프로젝트를 진행하고 수많은 테스트 코드가 쌓여 프로덕션 코드가 완성되게 됩니다. 그러나 어디까지 테스트는 개발자가 직접 거쳐줘야 하는 단계이고 자동화 되지 않은 절차는 쉽게 잊혀질 수 있고, 여러 이유를 대며 건너 띌 수 도 있습니다. 

 

이를 방지하기 위해 여러가지 제약조건을 걸어두면 습관처럼 만들 수 있을 것입니다.

실패하는 테스트가 있다면, 배포 실패

Github에서 제공해주는 Github Action을 이용해 CI/CD를 구축할 수 있습니다. action에 대한 설정은 yml로 되어있고 아래 예시는 main 브랜치에 push가 일어났을 때, spring-tdd 디렉토리에서 gradlew build를 수행합니다. gradle build에는 test가 호출되기 때문에 실패하는 테스트 케이스가 있다면 Workflow는 실패하게 됩니다.

 

1. Github Actions탭에서 Java with Gradle를 추가합니다.

Set up this workflow를 클릭합니다.

2. 트리거 설정 및 디렉토리를 환경변수로 설정해줍니다.

추가된 yml파일을 프로젝트에 맞게 변경해줍니다.  github action은 다양한 종류의 트리거와 슬랙에 메시지를 보낼 수 있는 기능을 제공해줍니다.

# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle

name: Java CI with Gradle

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      working-directory: ./spring-tdd
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'adopt'
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
      working-directory: ${{ env.working-directory }}
    - name: Build with Gradle
      run: ./gradlew build
      working-directory: ${{ env.working-directory }}

3. 실패하는 테스트 케이스가 존재하면 아래와 같이 workflow가 실패 처리 됩니다.

 

코드 리뷰 받고 가!

Github는 PR시 정해진 카운트만큼 리뷰받고 승인을 받아야만 Merge 할 수 있는 기능을 제공해줍니다.

차례대로 Repository > Setting > Branches 탭을 들어가면 브랜치를 지정하고 브랜치 제약조건을 추가할 수 있습니다.

 

- Require pull request reviews before merging

지정한 카운트 만큼 리뷰 승인이 완료되어야 Merge가 가능하다.

- Dismiss stale pull request approvals when new commits are pushed

새로운 Pull Request를 요청하면 기존의 Pull Request를 삭제한다.

- Require review from Code Owners

Code Owner들의 승인을 받아야 Merge가 가능하다.