動機
ある日ふとこんなことを思いつきました。
codecov とか使わなくても actions/cache の要領でやれば、github actions だけでカバレッジの推移を観測できる気がするんだけど、誰か作ってないかな
— odan (@odan3240) May 22, 2020
テストのカバレッジを集計する SaaS として Coveralls や Codecov があります。これらの SaaS は詳しいカバレッジの変化や、GitHub Status としてカバレッジの閾値を設定できたり様々機能があります。しかし、GitHub Actions がある今なら一分機能を外部に依存することなく実現できるのではと考えました。
先人が似たものを開発していないか、GitHub Marketplace で 「coverage 」をキーワードに検索してみましたが見つかりませんでした。 https://github.com/marketplace?query=coverage
そこで今回自作したのが「Coverage History Action」という GitHub Actions です。
使い方
以下のような 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つのブランチでのカバレッジの様子が通知されます。
通知の様子