如何通过GitHub发布CI流程生成的HTML测试覆盖率报告
GitHub Actions生成HTML覆盖率报告多分支发布方案
核心思路:利用GitHub Pages单分支发布的规则,将不同分支生成的报告按分支名归类存储到独立的gh-pages分支的对应目录下,既不需要将报告提交到业务代码分支,也能实现所有分支报告的在线访问。
前置准备
- 你的仓库先创建一个空的
gh-pages分支,初始化后不需要额外提交内容。
完整Workflow配置调整步骤
你现有工作流已经完成了docker启动、环境配置、测试执行生成报告的步骤,仅需要在测试步骤后新增以下配置:
- 从docker容器中拷贝报告到工作目录(如果测试是在容器内执行的)
执行命令将容器内生成的htmlcov报告目录拷贝到Actions的当前工作目录,示例命令:docker cp 容器名:/app/htmlcov ./htmlcov - 按分支名归类报告目录
避免不同分支的报告互相覆盖,将当前分支的报告放到对应分支名的目录下:mkdir -p report/${{ github.ref_name }} mv ./htmlcov/* report/${{ github.ref_name }}/ - 推送报告到gh-pages分支
新增部署步骤,将归类好的报告推送到gh-pages分支,配置示例:- name: 部署覆盖率报告到GitHub Pages uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./report keep_files: true配置项
keep_files: true为必填,确保每次推送仅更新当前分支的报告目录,不会删除其他分支的历史报告。 - 配置GitHub Pages发布源
进入仓库设置的Pages页面,将发布源设置为gh-pages分支的根目录,保存后等待几分钟部署生效。
报告访问方式
假设你的GitHub Pages访问地址为https://你的用户名.github.io/你的仓库名,不同分支的报告访问地址对应为:
- main分支:
https://你的用户名.github.io/你的仓库名/main/ - 其他功能分支:
https://你的用户名.github.io/你的仓库名/分支名/
备选临时方案(适合短期查看)
如果不需要长期保留报告,也可以直接将生成的HTML报告作为Actions产物上传,配置示例:
- name: 上传覆盖率报告为Actions产物 uses: actions/upload-artifact@v4 with: name: coverage-report-${{ github.ref_name }} path: ./htmlcov retention-days: 30 # 自定义保留天数,最多90天
上传后可以在对应工作流的运行详情页直接查看报告,不需要下载。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

