GitHub Action
Code Coverage Summary
A GitHub Action that reads Cobertura format code coverage files and outputs a text or markdown summary. Other Actions can then post the summary as a pull request comment, include it in release notes, etc.
Written for use with Coverlet and .Net but it should work with any tests that output coverage in Cobertura format.
Required
Code coverage file to analyse.
Note: Coverlet creates the coverage file in a random named directory (guid) so you need to copy it to a predictable path before running this Action, see the .Net 5 Workflow Example below.
Include a badge reporting the Line Rate coverage in the output using shields.io - true
or false
(default).
If the overall Line Rate is less than 50% the badge will be red, if it is 50% - 74% it will be yellow and if it is 75% or over it will be green.
Output Format - markdown
or text
(default).
Output Type - console
(default), file
or both
.
console
will output the coverage summary to the GitHub Action log.
file
will output the coverage summary to code-coverage-results.txt
for text or code-coverage-results.md
for markdown format in the workflow's working directory.
both
will output the coverage summary to the Action log and a file as above.
https://img.shields.io/badge/Code%20Coverage-77%25-success?style=flat
Line Rate = 77%, Lines Covered = 1107 / 1433
Branch Rate = 60%, Branches Covered = 321 / 532
Complexity = 917
Company.Example: Line Rate = 78%, Branch Rate = 60%, Complexity = 906
Company.Example.Library: Line Rate = 27%, Branch Rate = 100%, Complexity = 11
name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1
with:
filename: coverage/coverage.cobertura.xml
name: .Net 5 CI Build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
name: CI Build
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Restore Dependencies
run: dotnet restore src/Example.sln
- name: Build
run: dotnet build src/Example.sln --configuration Release --no-restore
- name: Test
run: dotnet test src/Example.sln --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./coverage
- name: Copy Coverage To Predictable Location
run: cp coverage/**/coverage.cobertura.xml coverage/coverage.cobertura.xml
- name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1
with:
filename: coverage/coverage.cobertura.xml
badge: true
format: 'markdown'
output: 'both'
- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: github.event_name == 'pull_request'
with:
recreate: true
path: code-coverage-results.md
Please make sure the bug is not already reported by searching existing issues.
If you're unable to find an existing issue addressing the problem open a new one. Be sure to include a title and clear description, as much relevant information as possible, a workflow sample and any logs demonstrating the problem.
Please open a new issue.
Discuss your idea first, so that your changes have a good chance of being merged in.
Submit your pull request against the master
branch.
Pull requests that include documentation and relevant updates to README.md are merged faster, because you won't have to wait for somebody else to complete your contribution.
Code Coverage Summary is available under the MIT license, see the LICENSE file for more info.