Codecov GitHub Action
轻松从GitHub Actions上传覆盖率报告到Codecov
v4 版本发布
Codecov GitHub Action的v4
版本将使用Codecov CLI来上传覆盖率报告到Codecov。
重大变更
- 不支持无token上传。但是,从分支向上游公共仓库提交的PR将支持无token上传(例如,开源项目的贡献者不需要上游仓库的Codecov token)。详情请参阅我们的文档
- 移除了Action的多个参数
Dependabot
- 对于使用
Dependabot
的仓库,用户需要确保它能访问Codecov token,以便Dependabot的PR能上传覆盖率。为此,请将您的CODECOV_TOKEN
添加为Dependabot Secret。更多信息,请参见"为Dependabot配置私有注册表访问权限"
v3
及以下版本将无法使用CLI功能(如全局上传token、ATS)。
使用方法
要将Codecov集成到您的Actions流程中,请在workflow.yml
文件中将此仓库的名称和标签号(推荐使用@v4
)指定为一个step
。
此Action还需要您提供来自codecov.io的上传token(提示:为避免暴露您的token,请将其存储为secret
)。
目前,此Action可以识别linux、macos和windows运行器。但对于其他架构,Action可能会识别错误。可以指定的操作系统有:
- alpine
- alpine-arm64
- linux
- linux-arm64
- macos
- windows
在您的.github/workflows/workflow.yml
文件中:
steps:
- uses: actions/checkout@main
- uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true # 可选(默认为false)
files: ./coverage1.xml,./coverage2.xml # 可选
flags: unittests # 可选
name: codecov-umbrella # 可选
token: ${{ secrets.CODECOV_TOKEN }} # 必需
verbose: true # 可选(默认为false)
Codecov token也可以通过环境变量传递:
steps:
- uses: actions/checkout@main
- uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true # 可选(默认为false)
files: ./coverage1.xml,./coverage2.xml # 可选
flags: unittests # 可选
name: codecov-umbrella # 可选
verbose: true # 可选(默认为false)
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
[!注意] 这假设您已经在Settings > Secrets中将Codecov token设置为
CODECOV_TOKEN
。如果没有,您可以在codecov.io上为特定仓库获取上传token。请记住,secrets对仓库的分支是不可用的。
使用OIDC
对于启用了OpenID Connect(OIDC)的用户,不需要Codecov token。您可以使用use_oidc
参数来使用OIDC,如下所示:
- uses: codecov/codecov-action@v4
with:
use_oidc: true
任何提供的token都将被忽略,因为Codecov将默认使用OIDC token进行验证。
参数
Codecov的Action支持用户输入。这些输入及其描述和使用场景列在下表中:
输入 | 描述 | 是否必需 |
---|---|---|
token | 仓库 Codecov 令牌。用于授权报告上传 | *必需 |
codecov_yml_path | 指定 Codecov YML 的路径 | 可选 |
commit_parent | 覆盖以指定父提交 SHA | 可选 |
directory | 搜索覆盖率报告的目录 | 可选 |
disable_search | 禁用覆盖率文件搜索。当使用 --file 选项指定要上传的文件时,这很有用 | 可选 |
disable_file_fixes | 禁用文件修复,以忽略覆盖率中的常见行(如空行或空括号) | 可选 |
dry_run | 不向 Codecov 上传文件 | 可选 |
env_vars | 用于标记上传的环境变量(例如 PYTHON | OS,PYTHON) | 可选 |
exclude | 从搜索中排除的文件夹 | 可选 |
fail_ci_if_error | 指定如果 Codecov 在上传过程中遇到错误,CI 构建是否应失败 | 可选 |
file | 要上传的覆盖率文件路径 | 可选 |
files | 要上传的文件的逗号分隔列表 | 可选 |
flags | 标记上传以分组覆盖率指标(例如 unittests | integration | ui,chrome) | 可选 |
handle_no_reports_found | 当未找到覆盖率报告时不抛出异常 | 可选 |
job_code | 作业代码 | 可选 |
name | 用户定义的上传名称。在 Codecov UI 中可见 | 可选 |
os | 覆盖假定的操作系统。选项有 linux | macos | windows | . | 可选 |
override_branch | 指定分支名称 | 可选 |
override_build | 指定构建号 | 可选 |
override_build_url | 正在运行的构建的 URL | 可选 |
override_commit | 指定提交 SHA | 可选 |
override_pr | 指定拉取请求号 | 可选 |
plugin | 要运行的插件。选项:xcode, gcov, pycoverage。默认行为是全部运行 | 可选 |
plugins | 上传期间使用的插件的逗号分隔列表 | 可选 |
report_code | 报告的代码。如不确定,请勿包含 | 可选 |
root_dir | 用于指定 .git 根目录的位置以识别项目根目录 | 可选 |
slug | 手动指定 slug(企业用途) | 可选 |
url | 指定上传的基本 url(企业用途) | 可选 |
use_legacy_upload_endpoint | 使用旧的上传端点 | 可选 |
use_oidc | 使用 OpenID Connect 进行验证而不是令牌。这将忽略任何提供的令牌。详情请参阅 GitHub 文档 | 可选 |
verbose | 指定 Codecov 输出是否应该详细 | 可选 |
version | 指定应使用的 Codecov CLI 版本。默认为 latest | 可选 |
working-directory | 执行 codecov.sh 的目录 | 可选 |
使用 Codecov Action 的 workflow.yml
示例
name: 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: 设置 Python
uses: actions/setup-python@main
with:
python-version: 3.10
- name: 生成覆盖率报告
run: |
pip install pytest
pip install pytest-cov
pytest --cov=./ --cov-report=xml
- name: 上传覆盖率到 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
贡献
欢迎贡献!请查看贡献指南。
许可证
本项目中的代码根据 MIT 许可证 发布。