-
Spring boot: Github Action CI에 JaCoCo + CodeCov컴퓨터/JAVA 2023. 12. 3. 18:32728x90반응형
할 것: Github Action을 이용하여 JaCoCo 테스트 커버리지 결과를 CodeCov 하는 과정 CI를 만들 것이다.
필요:
위 사이트에 로그인해서 레포지토리를 선택한다.
그리고 CODECOV 토큰을 받아서 Github 설정 secret에 넣어준다.
Github Action CI
최상위 폴더에서 java라는 폴더에 스프링 부트 프로젝트가 있다.
거기서 test 파일들만 변할 때 트리거 + 수동 트리거를 설정했다.
secret 파일은 base64로 인코딩 해서 깃헙 secret에 넣어놨다. (https://www.convertstring.com/ko/EncodeDecode/Base64Encode)
name: Verify Test Cases with Codecov on: push: branches: [main] paths: - "java/src/test/**/*" # - "java/**/build.gradle*" # - "java/**/settings.gradle*" workflow_dispatch: permissions: contents: read jobs: jacoco_codecov: runs-on: ubuntu-latest defaults: run: working-directory: java timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: "17" distribution: "corretto" - name: Setup secrets run: | echo "${{ secrets.APPLICATION_YML }}" | base64 --decode > src/main/resources/application-secret.yml echo "${{ secrets.APPLICATION_TEST_YML }}" | base64 --decode > src/main/resources/application-secret-github.yml - name: Correct permission run: chmod +x gradlew - name: Build with Gradle run: ./gradlew build -x test - name: Run JacocoTest run: ./gradlew clean test jacocoTestReport - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} files: build/reports/jacoco/test/jacocoTestReport.xml fail_ci_if_error: true
build.gradle
아래와 같이 테스트가 필요 없는 것들은 빼주고 codecov에 업로드하기 위해 xml을 활성화해준다.
plugins { id 'java' ... id 'jacoco' } jacoco { toolVersion = "0.8.11" } jacocoTestReport { reports { xml.required = true csv.required = false html.outputLocation = layout.buildDirectory.dir('jacocoHtml') } afterEvaluate { classDirectories.setFrom(files(classDirectories.files.collect { fileTree(dir: it, exclude: [ // List of patterns to exclude 'app/package/aop/**', 'app/package/config/**', 'app/package/error/**', 'app/package/domain/**', 'app/package/dto/**', 'app/package/repository/**' ]) })) } }
테스트를 만들고 업로드하면 CI가 돌아가고 codecov 사이트에서 확인 가능하다.
코드 커버리지에 첫 업로드 후 Settings - Badges에 들어가면 마크다운에 넣을 수 있는 배지도 준다.
%는 알아서 업데이트된다.
728x90'컴퓨터 > JAVA' 카테고리의 다른 글
멀티스레드 Phaser - flexible 동기화 장벽 (0) 2024.06.12 Spring boot: 실시간 로그 수집하기 (Logstash, ELK) (1) 2023.10.31 Java: spring boot AWS opensearch 연동하기 (2) 2023.10.09