Files
codecov-action/README.md
T

151 lines
7.3 KiB
Markdown
Raw Normal View History

2020-04-04 14:00:57 +01:00
# Codecov GitHub Action
2019-08-08 14:59:24 -07:00
2024-02-01 15:42:02 -08:00
[![GitHub Marketplace](https://img.shields.io/badge/Marketplace-v4-undefined.svg?logo=github&logoColor=white&style=flat)](https://github.com/marketplace/actions/codecov)
2020-08-25 13:19:19 -05:00
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fcodecov%2Fcodecov-action.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fcodecov%2Fcodecov-action?ref=badge_shield)
2021-03-15 01:20:30 +03:00
[![Workflow for Codecov Action](https://github.com/codecov/codecov-action/actions/workflows/main.yml/badge.svg)](https://github.com/codecov/codecov-action/actions/workflows/main.yml)
2020-04-04 14:00:57 +01:00
### Easily upload coverage reports to Codecov from GitHub Actions
2019-11-20 13:00:29 -08:00
2024-01-30 10:05:06 -08:00
## v4 Release
`v4` of the Codecov GitHub Action will use the [Codecov CLI](https://github.com/codecov/codecov-cli) to upload coverage reports to Codecov.
2023-09-13 08:58:26 -07:00
2024-02-01 15:42:02 -08:00
### Breaking Changes
2024-01-30 10:05:06 -08:00
- Tokenless uploading is unsupported. However, PRs made from forks to the upstream public repos will support tokenless (e.g. contributors to OS projects do not need the upstream repo's Codecov token)
2023-09-13 08:58:26 -07:00
- Various arguments to the Action have been removed
2024-02-01 15:42:02 -08:00
### Dependabot
2024-02-01 14:26:09 -08:00
- For repositories using `Dependabot`, users will need to ensure that it has access to the Codecov token for PRs from Dependabot to upload coverage.
2023-09-06 11:12:44 -07:00
2024-01-30 10:05:06 -08:00
`v3` versions and below will not have access to CLI features (e.g. global upload token, ATS).
2021-06-24 10:50:37 -04:00
2019-08-06 19:29:18 -07:00
## Usage
2024-01-30 10:05:06 -08:00
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.
2020-03-04 22:22:38 -08:00
2024-01-30 10:05:06 -08:00
This Action also requires you to [provide an upload token](https://docs.codecov.io/docs/frequently-asked-questions#section-where-is-the-repository-upload-token-found-) from [codecov.io](https://www.codecov.io) (tip: in order to avoid exposing your token, [store it](https://docs.codecov.com/docs/adding-the-codecov-token#github-actions) as a `secret`).
2019-08-07 19:17:51 -07:00
2024-01-31 09:18:52 -08:00
Currently, the Action will identify linux, macos, and windows runners. However, the Action may misidentify other architectures. The OS can be specified as
- alpine
- alpine-arm64
- linux
- linux-arm64
- macos
- windows
2019-08-06 19:29:18 -07:00
Inside your `.github/workflows/workflow.yml` file:
```yaml
steps:
- uses: actions/checkout@master
2024-01-30 10:05:06 -08:00
- uses: codecov/codecov-action@v4
2019-08-06 19:29:18 -07:00
with:
2024-02-01 14:13:53 -08:00
fail_ci_if_error: true # optional (default = false)
2020-07-10 15:32:51 -04:00
files: ./coverage1.xml,./coverage2.xml # optional
2020-03-04 22:22:38 -08:00
flags: unittests # optional
name: codecov-umbrella # optional
2024-02-01 14:13:53 -08:00
token: ${{ secrets.CODECOV_TOKEN }} # required
verbose: true # optional (default = false)
```
The Codecov token can also be passed in via environment variables:
```yaml
steps:
- uses: actions/checkout@master
- uses: codecov/codecov-action@v4
with:
2020-03-04 22:22:38 -08:00
fail_ci_if_error: true # optional (default = false)
2024-02-01 14:13:53 -08:00
files: ./coverage1.xml,./coverage2.xml # optional
flags: unittests # optional
name: codecov-umbrella # optional
2020-10-16 18:27:17 -04:00
verbose: true # optional (default = false)
2024-01-30 10:05:06 -08:00
env:
2024-01-31 12:44:28 -08:00
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
2019-08-06 19:29:18 -07:00
```
2020-04-04 14:00:57 +01:00
>**Note**: This assumes that you've set your Codecov token inside *Settings > Secrets* as `CODECOV_TOKEN`. If not, you can [get an upload token](https://docs.codecov.io/docs/frequently-asked-questions#section-where-is-the-repository-upload-token-found-) for your specific repo on [codecov.io](https://www.codecov.io). Keep in mind that secrets are *not* available to forks of repositories.
2019-08-06 19:29:18 -07:00
2019-08-07 18:44:06 -07:00
## Arguments
Codecov's Action supports inputs from the user. These inputs, along with their descriptions and usage contexts, are listed in the table below:
2019-08-07 19:17:51 -07:00
2024-02-01 15:42:02 -08:00
| Input | Description | Required |
2024-02-01 15:44:10 -08:00
| :--- | :--- | :---: |
| `token` | Repository Codecov token. Used to authorize report uploads | *Required
2024-02-01 15:42:02 -08:00
| `codecov_yml_path` | Specify the path to the Codecov YML | Optional
| `commit_parent` | Override to specify the parent commit SHA | Optional
| `directory` | Directory to search for coverage reports. | Optional
| `disable_search` | Disable search for coverage files. This is helpful when specifying what files you want to upload with the --file option. | Optional
| `disable_file_fixes` | Disable file fixes to ignore common lines from coverage (e.g. blank lines or empty brackets) | Optional
| `dry_run` | Don't upload files to Codecov | Optional
| `env_vars` | Environment variables to tag the upload with (e.g. PYTHON | OS,PYTHON) | Optional
| `exclude` | Folders to exclude from search | Optional
| `fail_ci_if_error` | Specify whether or not CI build should fail if Codecov runs into an error during upload | Optional
| `file` | Path to coverage file to upload | Optional
| `files` | Comma-separated list of files to upload | Optional
| `flags` | Flag upload to group coverage metrics (e.g. unittests | integration | ui,chrome) | Optional
| `handle_no_reports_found` | Raise no exceptions when no coverage reports found | Optional
| `job_code` | The job code | Optional
| `name` | User defined upload name. Visible in Codecov UI | Optional
| `os` | Override the assumed OS. Options are linux | macos | windows | . | Optional
| `override_branch` | Specify the branch name | Optional
| `override_build` | Specify the build number | Optional
| `override_build_url` | The URL of the build where this is running | Optional
| `override_commit` | Specify the commit SHA | Optional
| `override_pr` | Specify the pull request number | Optional
| `plugin` | plugins to run. Options: xcode, gcov, pycoverage. The default behavior runs them all. | Optional
| `plugins` | Comma-separated list of plugins for use during upload. | Optional
| `report_code` | The code of the report. If unsure, do not include | Optional
| `root_dir` | Used when not in git/hg project to identify project root directory | Optional
| `slug` | Specify the slug manually (Enterprise use) | Optional
| `url` | Specify the base url to upload (Enterprise use) | Optional
| `use_legacy_upload_endpoint` | Use the legacy upload endpoint | Optional
| `verbose` | Specify whether the Codecov output should be verbose | Optional
| `version` | Specify which version of the Codecov CLI should be used. Defaults to `latest` | Optional
| `working-directory` | Directory in which to execute codecov.sh | Optional
2019-08-07 18:44:06 -07:00
2019-08-07 07:59:10 -07:00
### Example `workflow.yml` with Codecov Action
```yaml
name: Example workflow for Codecov
on: [push]
jobs:
run:
runs-on: ${{ matrix.os }}
strategy:
2020-04-04 14:00:57 +01:00
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
2020-03-20 16:05:53 +00:00
env:
OS: ${{ matrix.os }}
PYTHON: '3.10'
2019-08-07 07:59:10 -07:00
steps:
- uses: actions/checkout@master
2020-04-04 14:00:57 +01:00
- name: Setup Python
2019-08-07 07:59:10 -07:00
uses: actions/setup-python@master
with:
python-version: 3.10
2019-08-07 07:59:10 -07:00
- name: Generate coverage report
run: |
pip install pytest
pip install pytest-cov
pytest --cov=./ --cov-report=xml
2020-04-04 14:00:57 +01:00
- name: Upload coverage to Codecov
2024-01-30 10:05:06 -08:00
uses: codecov/codecov-action@v4
2019-08-07 07:59:10 -07:00
with:
2020-07-07 22:29:12 -04:00
directory: ./coverage/reports/
2020-03-20 16:05:53 +00:00
env_vars: OS,PYTHON
2019-12-05 18:25:24 -08:00
fail_ci_if_error: true
files: ./coverage1.xml,./coverage2.xml,!./cache
2021-06-24 10:50:37 -04:00
flags: unittests
name: codecov-umbrella
2024-02-01 14:13:53 -08:00
token: ${{ secrets.CODECOV_TOKEN }}
2020-10-16 18:27:17 -04:00
verbose: true
2019-08-07 07:59:10 -07:00
```
2019-08-07 21:38:13 -07:00
## Contributing
2019-08-07 21:40:59 -07:00
Contributions are welcome! Check out the [Contribution Guide](CONTRIBUTING.md).
2019-08-07 07:59:10 -07:00
2020-04-04 14:00:57 +01:00
## License
2019-08-06 19:29:18 -07:00
2019-08-07 20:10:44 -07:00
The code in this project is released under the [MIT License](LICENSE).
2020-08-25 13:19:19 -05:00
2020-10-16 18:27:17 -04:00
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fcodecov%2Fcodecov-action.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fcodecov%2Fcodecov-action?ref=badge_large)