golang在Pull Request中跟踪代码覆盖率并生成精美HTML报告的插件go-beautiful-html-coverage的使用
go-beautiful-html-coverage
一个GitHub Action,用于在Pull Request中跟踪代码覆盖率,并生成精美的HTML报告。
使用方式
要使用这个Action,只需将它添加到现有的CI工作流中。一个最基本的示例如下:
name: Go
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
test:
name: Build and Test
runs-on: ubuntu-latest
permissions:
pull-requests: write # 需要写权限来发布评论
contents: write # 需要写权限来推送git
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
- name: Test # 这一步应该生成cover.out
run: make test
- name: Go Beautiful HTML Coverage
uses: 'gha-common/go-beautiful-html-coverage@v1'
工作原理
这个GitHub Action期望在运行时你的代码库根目录下存在cover.out
文件。cover.out
通常是通过go test
命令加上-coverprofile=cover.out
标志生成的:
go test -coverprofile=cover.out ./...
一旦测试运行完毕并生成了cover.out
文件,这个Action会执行以下操作:
- 如果不存在,创建并推送一个新的孤立分支
- 从
cover.out
生成cover.html
和cover.txt
- 自定义
cover.html
并将其重命名为<sha>.html
- 将
<sha>.html
文件推送到孤立分支,这会触发GitHub Pages部署 - 在你的PR中发布一条评论,包含代码覆盖率摘要(
cover.txt
)和<sha>.html
的链接
配置参考
- name: Go Beautiful HTML Coverage
uses: 'gha-common/go-beautiful-html-coverage@v1'
with:
# 仓库名称和所有者。例如:actions/checkout
# 默认: ${{ github.repository }}
repository: ''
# 检出或创建并推送覆盖率报告的分支
# 默认: 'cover'
branch: ''
# 用于推送到仓库的token
# 默认: ${{ github.token }}
token: ''
# go项目的相对路径。对monorepo和自定义文件夹结构很有用
# 默认: ./
path: ''
# 所需的最小覆盖率百分比
# 默认: 0
threshold: ''
示例
你可以自定义托管代码覆盖率文件的分支名称
- name: Go Beautiful HTML Coverage
uses: 'gha-common/go-beautiful-html-coverage@v1'
with:
branch: 'my-coverage'
你可以自定义托管代码覆盖率文件的仓库
这在你不想弄乱项目仓库,或者想跨多个仓库集中报告覆盖率,或者无法在项目仓库中启用GitHub Pages时很有帮助。
- name: Go Beautiful HTML Coverage
uses: 'gha-common/go-beautiful-html-coverage@v1'
with:
repository: yourname/coverage
token: ${{ secrets.GHA_COVERAGE_TOKEN }}
其中GHA_COVERAGE_TOKEN
是一个仓库secret,包含一个有写权限的个人token。
你可以自定义项目中go代码的路径
这在你有包含多个应用的monorepo,或者简单地将go文件放在子文件夹中时很有帮助。只需确保在运行这个Action之前为所有应用生成cover.out
。
- name: Go Beautiful HTML Coverage
uses: 'gha-common/go-beautiful-html-coverage@v1'
with:
path: ./go-app-01
- name: Go Beautiful HTML Coverage
uses: 'gha-common/go-beautiful-html-coverage@v1'
with:
path: ./go-app-02
注意事项
为了使HTML预览链接正常工作,需要在目标仓库中配置GitHub Pages
(设置 > Pages
)为从分支部署
,并选择目标分支,默认是cover
。
更多关于golang在Pull Request中跟踪代码覆盖率并生成精美HTML报告的插件go-beautiful-html-coverage的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html