Github Actions 및 Codecov로 코드 커버리지 보고서 받기

TLDR: Show me the money


따라서 프로젝트에 테스트를 설정하는 데 시간을 들였습니다. 어떻게 세상을 보여주나요?

인기 있는 서비스는 Codecov 이며 Github 리포지토리에서 해당 배지를 알아볼 수 있습니다.



하지만



Codecov는 정적 분석 도구이므로 이미 테스트된 보고서를 업로드해야 합니다. 한 가지 옵션은 coverage 폴더를 커밋하는 것이지만 이는 좋지 않은 생각입니다.
  • 모든 커밋 전에 테스트를 실행해야 합니다. 잊어버릴 가능성이 있으며 보장 기간이 만료될 수 있습니다.
  • 메인 컴퓨터 외부에서 편집할 수 없습니다(즉, 휴대폰에서 테스트를 업데이트할 수 없음).
  • 충분히 자동화되지 않았으며 자동화가 많을수록 더 좋다는 것은 누구나 알고 있습니다.
  • 나쁜 일이 많을 것입니다.

  • 구조에 대한 Github 작업!



    Github Actions은 프로젝트에 CI을 추가할 수 있는 상당히 새로운 기능입니다.

    몇 가지default templates가 있지만 불행히도 테스트를 실행하고 보고서를 Codecov로 보내는 데 사용할 수 있는 것은 없습니다.

    Github 작업 설정



    Github 작업은 .github/workflows 에 저장되며 작업 실행 방법을 지정하는 YAML 파일입니다. Check out the docs to find out more .
    codecov-test-suites.yml라는 파일을 추가하고 다음을 추가하여 간단한 작업을 설정합니다.

    # .github/workflows/codecov-test-suites.yml
    
    name: Run Test Suites
    
    on: [push]
    


    이렇게 하면 모든 푸시에 대해 트리거되는 새로운 워크플로우가 설정됩니다.

    이제 우리는 그것이 일을 하도록 만들어야 합니다! 다음을 수행하는 작업을 이 파일에 추가해야 합니다.
  • 파일을 가져옵니다
  • .
  • 종속성을 설치합니다
  • .
  • 테스트 실행
  • Codecov에 테스트 업로드

  • 이것은 쉬워요. codecov-test-suites.yml 파일에 다음을 추가합니다.

    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2 # Check out your repository
        - run: yarn # Install dependencies
        - run: yarn test --coverage # Run test
        - run: bash <(curl -s https://codecov.io/bash) # Upload to Codecov
    


    테스트가 실행되어야 하지만 커버리지가 0%인 것 같습니다. 뭐?



    테스트가 이상한 폴더에서 실행되고 이것이 저장소 구조와 연결되지 않아 Codecov가 혼란스러워집니다.

    이 문제를 해결하려면 프로젝트 루트에 codecov.yml 파일을 추가해야 합니다. 여기에서 파일 경로를 수정하는 방법을 지정합니다.

    # codecov.yml
    
    fixes:
      - "/home/runner/work/<project name>/<project name>/::" # Correct paths
    


    Github에서 리포지토리 이름을 편집<project name>하고 커밋합니다.

    후자! Github Actions는 이제 푸시하고 Codecov로 보낼 때마다 자동으로 테스트를 실행해야 합니다!

    Codecov의 배지 설정으로 이동하여 SVG의 장점을 얻으십시오.



    이전의 100% 배지를 기억하십니까?







    // package.json
    
    {
      // Make sure jest creates lcov reports
      "jest": {
        "collectCoverage": true,
        "coverageReporters": ["html", "lcov"]
      }
    }
    



    # .github/workflows/codecov-test-suites.yml
    
    name: Run Test Suites
    
    on: [push]
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2 # Check out your repository
        - run: yarn # Install dependencies
        - run: yarn test --coverage # Run test
        - run: bash <(curl -s https://codecov.io/bash) # Upload to Codecov
    



    # codecov.yml
    
    fixes:
      - "/home/runner/work/<project name>/<project name>/::" # Correct paths
    

    좋은 웹페이지 즐겨찾기