Github 작업 - Maven + Jacoco를 사용하여 코드 커버리지로 PR 병합 제어
다음은 .github/workflows/.yml입니다.
name: Code Coverage
on:
pull_request:
branches: [ "master" ]
push:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: 'temurin'
cache: maven
- name: Generate Coverage Report
run: |
mvn -B package --file pom.xml
- name: Upload Report
uses: 'actions/upload-artifact@v2'
with:
name: jacoco-report
path: ${{ github.workspace }}/target/site/jacoco/jacoco.xml
- name: Add coverage to PR
id: jacoco
uses: madrapps/[email protected]
with:
paths: ${{ github.workspace }}/target/site/jacoco/jacoco.xml
token: ${{ secrets.GITHUB_TOKEN }}
min-coverage-overall: 80
min-coverage-changed-files: 80
title: Code Coverage
- name: Save Coverage To Environment Variable
run: |
echo "TOTAL_COVERAGE=${{ steps.jacoco.outputs.coverage-overall }}" >> $GITHUB_ENV
echo "CHANGED_FILES_COVERAGE=${{ steps.jacoco.outputs.coverage-changed-files }}" >> $GITHUB_ENV
- name: Print & Check Coverage Info
run: |
import os
import sys
print("Total Coverage: " + str(os.environ["TOTAL_COVERAGE"]))
print("Changed Files Coverage: " + str(os.environ["CHANGED_FILES_COVERAGE"]))
if float(os.environ["TOTAL_COVERAGE"]) < 80 or float(os.environ["CHANGED_FILES_COVERAGE"]) < 80:
print("Insufficient Coverage!")
sys.exit(-1) # Cause Status Check Failure due to noncompliant coverage
sys.exit(0)
shell: python
끝 부분의 Python 스크립트는 적용 범위가 충분하지 않은 경우 어떤 이유로 기술적으로 255를 반환하지만 여전히 0이 아닌 종료 코드를 반환합니다. 이것이 우리에게 필요한 것입니다.
참고 사항:
steps.jacoco.outputs.coverage-overall
및 steps.jacoco.outputs.coverage-changed-files
변수를 출력하기 때문에 필요합니다. Reference
이 문제에 관하여(Github 작업 - Maven + Jacoco를 사용하여 코드 커버리지로 PR 병합 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aacitelli/github-actions-use-maven-jacoco-to-gate-pr-merging-by-code-coverage-4e5e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)