GithubアクションとCoDecovでコードカバレッジレポートを取得する


TLDRShow me the money
それで、あなたはプロジェクトにセットアップされたテストを得る若干の時間を費やしました.どうやって世界を見るの?
人気サービスはCodecov , そして、おそらくGATHUBリポジトリからバッジを認識するでしょう.

しかし


CoDecovは、すでにテストされているレポートをアップロードする必要があることを意味静的解析ツールです.つのオプションをコミットすることですcoverage しかし、これは悪い考えです:
  • すべてのコミットの前にテストを実行しなければなりません.チャンスは、あなたが忘れてしまうでしょうし、あなたのカバレッジは日付のうちになります.
  • あなたは離れてメインコンピュータから(すなわち、あなたの携帯電話からテストを更新することはできません)編集することはできません.
  • それは十分に自動化されません、そして、誰でもより多くのオートメーションがよりよいということを知っています.
  • おそらく悪いことの負荷.
  • Githubアクションを救出する!


    Github Actions かなり新しいと思いますか機能を追加することができますCI プロジェクトに.
    いくつかあるdefault templates , しかし、残念ながら私はテストを実行し、CoDecovにレポートを送信するために見つけることができなかった.

    アクションを設定する


    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
    
    エディット<project name> あなたの倉庫名にgithubからこれをコミットしてください.
    ハグ!Githubアクションは自動的にあなたがプッシュし、CoDecovに送信するたびにテストを実行する必要があります!
    CodeDevVのバッジの設定に頭を入れて、その甘い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