使用 Github Action 为 Golang 项目添加 Coveralls 徽标


在 Github 浏览开源项目时,有时会看到徽标显示项目的测试用例覆盖率,本文记录为 Golang 项目添加徽标的步骤。

最终效果如图,Coverage 徽标 Coverage Status 即是通过 Github Actions 在 Coveralls 自动生成的。

配置 Coveralls

访问 https://coveralls.io/,通过 Github 登陆。

点击左侧边栏的 “Add Repos”,找到并打开需要提交报告的项目按钮

点击 Details 会看到项目测试覆盖率的详情,当前还未提交任何测试覆盖率报告,所以内容是空的。

配置 Github Actions

网上教程多是基于 Travis CI,最近注册发现已经不免费了。所以换用 Github Actions 作为 CI 工具,生成测试用例覆盖率。

Github Actions 教程初步了解可以参考:阮一峰《GitHub Actions 入门教程》

添加 Action 配置

在 Github Golang 项目下新建 .github/workflows 文件夹。

添加文件 ci-coveralls.yml 内容入下,借助 Marketplace / actions-goveralls 脚本来将测试报告提交到 Coveralls

name: Test and Push Coveralls
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        go:
          - '1.19'
          - '1.18'
    steps:
      - uses: actions/setup-go@v3
        with:
          go-version: ${{ matrix.go }}
      - uses: actions/checkout@v3
      - run: go test -v -coverprofile=profile.cov ./...

      - name: Send coverage
        uses: shogo82148/actions-goveralls@v1
        with:
          path-to-profile: profile.cov
          flag-name: Go-${{ matrix.go }}
          parallel: true

  # notifies that all test jobs are finished.
  finish:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: shogo82148/actions-goveralls@v1
        with:
          parallel-finished: true

这段配置描述的 Action 是在提交代码和 Pull Request 时会被触发,使用 Go 1.18 和 1.19 跑测试覆盖率,而后将生成的 “profile.cov” 文件提交到 Coveralls,最后再通知到 Coveralls 所有任务都已结束。

提交到 Github 后,再次修改代码提交,Github Actions 会触发运行。

运行结束后,到 Coveralls 网站刷新,可以看到详细的覆盖率报告。

图中粉色区域是一个统计图,最开始的时候覆盖率 100% 是绿色的,而后在不同模块添加测试用例,覆盖率在不断变化。

BADGE 区域点击 EMBED 弹出的页面可以复制 Markdown 或者 HTML 格式的徽标。

最后,将徽标补充道 README.md 文档中,提交到 Github 即可。

参考