カバレッジの変化をプルリクエストに通知する GitHub Actions を作った

動機

ある日ふとこんなことを思いつきました。

テストのカバレッジを集計する SaaS として CoverallsCodecov があります。これらの SaaS は詳しいカバレッジの変化や、GitHub Status としてカバレッジ閾値を設定できたり様々機能があります。しかし、GitHub Actions がある今なら一分機能を外部に依存することなく実現できるのではと考えました。

先人が似たものを開発していないか、GitHub Marketplace で 「coverage 」をキーワードに検索してみましたが見つかりませんでした。 https://github.com/marketplace?query=coverage

そこで今回自作したのが「Coverage History Action」という GitHub Actions です。

github.com

使い方

以下のような workflow を用意します。

name: CI


on:
  push:
    branches:
      - "master"
  pull_request:
    types: [opened, synchronize]


jobs:
  report:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js 12.x
      uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - name: yarn install
      run: |
        yarn install --frozen-lockfile
      env:
        CI: true
    - name: Run test
      run: |
        yarn test
      env:
        CI: true
    - name: Coverage History Action
      uses: odanado/coverage-history-action@v0
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}

この workflow が発火するタイミングは 「master ブランチへの push したとき」と「プルリクエストの登録と更新したとき」です。
前者のタイミングで、master ブランチのカバレッジGitHub Actions の cache に保存されます。後者のタイミングで、プルリクエストのコメントに2つのブランチでのカバレッジの様子が通知されます。

通知の様子

f:id:odan3240:20200531001148p:plain