Home

Awesome

Codecov GitHub Action

GitHub Marketplace FOSSA Status Workflow for Codecov Action

Easily upload coverage reports to Codecov from GitHub Actions

v5 Release

v5 of the Codecov GitHub Action will use the Codecov Wrapper to encapsulate the CLI. This will help ensure that the Action gets updates quicker.

Migration Guide

The v5 release also coincides with the opt-out feature for tokens for public repositories. In the Global Upload Token section of the settings page of an organization in codecov.io, you can set the ability for Codecov to receive a coverage reports from any source. This will allow contributors or other members of a repository to upload without needing access to the Codecov token. For more details see how to upload without a token.

[!WARNING] The following arguments have been changed

The following arguments have been added:

You can see their usage in the action.yml file.

v4 Release

v4 of the Codecov GitHub Action will use the Codecov CLI to upload coverage reports to Codecov.

Breaking Changes

Dependabot

v3 versions and below will not have access to CLI features (e.g. global upload token, ATS).

Usage

To integrate Codecov with your Actions pipeline, specify the name of this repository with a tag number (@v4 is recommended) as a step within your workflow.yml file.

This Action also requires you to provide an upload token from codecov.io (tip: in order to avoid exposing your token, store it as a secret).

Currently, the Action will identify linux, macos, and windows runners. However, the Action may misidentify other architectures. The OS can be specified as

Inside your .github/workflows/workflow.yml file:

steps:
- uses: actions/checkout@main
- uses: codecov/codecov-action@v4
  with:
    fail_ci_if_error: true # optional (default = false)
    files: ./coverage1.xml,./coverage2.xml # optional
    flags: unittests # optional
    name: codecov-umbrella # optional
    token: ${{ secrets.CODECOV_TOKEN }} # required
    verbose: true # optional (default = false)

The Codecov token can also be passed in via environment variables:

steps:
- uses: actions/checkout@main
- uses: codecov/codecov-action@v4
  with:
    fail_ci_if_error: true # optional (default = false)
    files: ./coverage1.xml,./coverage2.xml # optional
    flags: unittests # optional
    name: codecov-umbrella # optional
    verbose: true # optional (default = false)
  env:
    CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

[!NOTE] This assumes that you've set your Codecov token inside Settings > Secrets as CODECOV_TOKEN. If not, you can get an upload token for your specific repo on codecov.io. Keep in mind that secrets are not available to forks of repositories.

Using OIDC

For users with OpenID Connect(OIDC) enabled, the Codecov token is not necessary. You can use OIDC with the use_oidc argument as following.

- uses: codecov/codecov-action@v4
  with:
    use_oidc: true

Any token supplied will be ignored, as Codecov will default to the OIDC token for verification.

Arguments

Codecov's Action supports inputs from the user. These inputs, along with their descriptions and usage contexts, are listed in the table below:

InputDescriptionRequired
tokenRepository Codecov token. Used to authorize report uploads*Required
codecov_yml_pathSpecify the path to the Codecov YMLOptional
commit_parentOverride to specify the parent commit SHAOptional
directoryDirectory to search for coverage reports.Optional
disable_searchDisable search for coverage files. This is helpful when specifying what files you want to upload with the --file option.Optional
disable_file_fixesDisable file fixes to ignore common lines from coverage (e.g. blank lines or empty brackets)Optional
dry_runDon't upload files to CodecovOptional
env_varsEnvironment variables to tag the upload with (e.g. PYTHON | OS,PYTHON)Optional
excludeFolders to exclude from searchOptional
fail_ci_if_errorSpecify whether or not CI build should fail if Codecov runs into an error during uploadOptional
filePath to coverage file to uploadOptional
filesComma-separated list of files to uploadOptional
flagsFlag upload to group coverage metrics (e.g. unittests | integration | ui,chrome)Optional
handle_no_reports_foundRaise no exceptions when no coverage reports foundOptional
job_codeThe job codeOptional
nameUser defined upload name. Visible in Codecov UIOptional
osOverride the assumed OS. Options are linux | macos | windows | .Optional
override_branchSpecify the branch nameOptional
override_buildSpecify the build numberOptional
override_build_urlThe URL of the build where this is runningOptional
override_commitSpecify the commit SHAOptional
override_prSpecify the pull request numberOptional
pluginplugins to run. Options: xcode, gcov, pycoverage. The default behavior runs them all.Optional
pluginsComma-separated list of plugins for use during upload.Optional
report_codeThe code of the report. If unsure, do not includeOptional
root_dirUsed to specify the location of your .git root to identify project root directoryOptional
slugSpecify the slug manually (Enterprise use)Optional
urlSpecify the base url to upload (Enterprise use)Optional
use_legacy_upload_endpointUse the legacy upload endpointOptional
use_oidcUse OpenID Connect for verification instead of token. This will ignore any token supplied. Please see GitHub documentation for details.
verboseSpecify whether the Codecov output should be verboseOptional
versionSpecify which version of the Codecov CLI should be used. Defaults to latestOptional
working-directoryDirectory in which to execute codecov.shOptional

Example workflow.yml with Codecov Action

name: Example workflow for Codecov
on: [push]
jobs:
  run:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    env:
      OS: ${{ matrix.os }}
      PYTHON: '3.10'
    steps:
    - uses: actions/checkout@main
    - name: Setup Python
      uses: actions/setup-python@main
      with:
        python-version: 3.10
    - name: Generate coverage report
      run: |
        pip install pytest
        pip install pytest-cov
        pytest --cov=./ --cov-report=xml
    - name: Upload coverage to Codecov
      uses: codecov/codecov-action@v4
      with:
        directory: ./coverage/reports/
        env_vars: OS,PYTHON
        fail_ci_if_error: true
        files: ./coverage1.xml,./coverage2.xml,!./cache
        flags: unittests
        name: codecov-umbrella
        token: ${{ secrets.CODECOV_TOKEN }}
        verbose: true

Contributing

Contributions are welcome! Check out the Contribution Guide.

License

The code in this project is released under the MIT License.

FOSSA Status