본문 바로가기
관리자

Programming-[Base]/git

[TIL] Jacoco report 결과를 github PR에 남기기

728x90
반응형

 

이전 글에서 Jacoco Test Report를 통해 Test를 실행하고 프로젝트의 전체 테스트 커버리지를 확인할 수 있는 방법에 대해 기록했었다.

 

https://whitepro.tistory.com/968

 

[TIL] Test Coverage Report - Jacoco, Codecov, Test Reporter

1.  JacocoJacoco를 사용하면 build시 Test Coverage Report를 생성해준다. 코드 라인별로 테스트 코드에서 참조되어 사용되었는지 점검하고, if 분기문 등 모든 케이스에 대해 점검하기 때문에 혹시 빠뜨린

whitepro.tistory.com

 

 

이번에는 이렇게 로컬에서 생성한 리포트 외에, github action의 agent에서 report를 생성하고 그에 따라 github PR에 댓글로 coverage 결과를 남길 수 있는 방법에 대해서 알아본다. 이전 글에서는 codecov를 다뤘었는데, 해당 툴은 유료라서 무료로 제공되는 action tool을 사용해본다.

 

 

코드

아래처럼 작성하면 된다. report 파일을 따로 업로드하는 부분은 생략하였다.

 

유의할점은 다음과 같다.

 

  • on.pull_request 방식으로 해야한다. 해당 액션 참조가 잘못되면 PR의 댓글에 coverage 결과가 남지 않을 수 있다.
  • permissions.contents, pull-requests를 지정해주어야한다.
  • secrets.GITHUB_TOKEN은 따로 설정이 필요할 수 있다.
  • paths 값은 jacoco에서 지원하는 기본 경로로 지정해주었다.

 

name: Build & Test
on:
  pull_request:
    branches:
      - '**'

permissions:
  contents: read
  pull-requests: write

jobs:
  build-and-test:
    name: Build
    runs-on: ubuntu-latest

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

      - name: Set up JDK 21
        uses: actions/setup-java@v4
        with:
          distribution: 'corretto'
          java-version: '21'

      - name: Grant execute permission for gradlew
        run: chmod +x ./gradlew

      - name: Build
        run: ./gradlew build

      - name: Jacoco Report to PR
        id: jacoco
        uses: madrapps/jacoco-report@v1.6.1
        with:
          paths: ${{ github.workspace }}/build/reports/jacoco/test/jacocoTestReport.xml
          token: ${{ secrets.GITHUB_TOKEN }}
          min-coverage-overall: 80
          min-coverage-changed-files: 80
          debug-mode: false
          title: Code Coverage
          update-comment: true

      - name: Get the Coverage info
        run: |
          echo "Total coverage ${{ steps.jacoco.outputs.coverage-overall }}"
          echo "Changed Files coverage ${{ steps.jacoco.outputs.coverage-changed-files }}"

 

728x90
반응형