You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中如何将coverage报告写入日志或汇总页面?

解决GitHub Actions中远程覆盖率报告的日志/汇总展示问题

核心问题分析

你当前的写法存在两个关键问题:

  1. 在ssh-action的远程脚本中使用>> $GITHUB_OUTPUT无效,因为$GITHUB_OUTPUT是GitHub Actions Runner的环境变量,远程服务器无法访问这个变量。
  2. pmeier/pytest-results-action的path指向远程服务器路径,若self-hosted Runner不是目标服务器,Runner无法读取该文件。

方案1:直接在日志中显示覆盖率报告

这是最简单的方式,ssh-action会将远程命令的输出同步到GitHub Actions日志中,只需确保远程的cat coverage-report.txt能正常执行:

修改第一个ssh-action的脚本部分:

script: |
  cd /my-api
  rm -f /my-api/test-results.xml
  ssh-agent bash -c 'ssh-add /root/.ssh/pubkey; git pull origin master'
  sudo mkdir -p /my-api
  sudo chown -R $USER:$USER /my-api
  systemctl stop my-api
  pytest --junit-xml=test-results.xml generated_tests.py
  coverage run -m pytest generated_tests.py
  coverage report > coverage-report.txt
  # 验证文件存在并强制输出
  ls -l /my-api/coverage-report.txt
  cat /my-api/coverage-report.txt
  systemctl start my-api

执行后,覆盖率内容会直接出现在该步骤的GitHub Actions日志里。


方案2:在Job Summary页面展示覆盖率报告

如果想在Actions的Summary标签页(顶部汇总区)展示格式化的覆盖率报告,需要先把远程文件下载到Runner,再写入Job Summary:

  1. 添加下载远程覆盖率文件的步骤:
- name: Download coverage report to Runner
  uses: appleboy/scp-action@v0.1.7
  with:
    host: <IP addr>
    username: ${{ secrets.USERNAME }}
    key: ${{ secrets.SSH_KEY }}
    port: 22
    source: "/my-api/coverage-report.txt"
    target: "./"
  1. 将覆盖率内容写入Job Summary:
- name: Add coverage to Job Summary
  run: |
    echo "## 项目覆盖率报告" >> $GITHUB_STEP_SUMMARY
    echo "\`\`\`text" >> $GITHUB_STEP_SUMMARY
    cat coverage-report.txt >> $GITHUB_STEP_SUMMARY
    echo "\`\`\`" >> $GITHUB_STEP_SUMMARY

执行完成后,打开Actions的Summary页面就能看到格式化的覆盖率文本块。


附带:修复测试结果展示问题

同样需要先下载远程的测试结果文件到Runner,再使用测试结果插件:

- name: Download test results to Runner
  uses: appleboy/scp-action@v0.1.7
  with:
    host: <IP addr>
    username: ${{ secrets.USERNAME }}
    key: ${{ secrets.SSH_KEY }}
    port: 22
    source: "/my-api/test-results.xml"
    target: "./"

- name: Surface failing tests
  if: always()
  uses: pmeier/pytest-results-action@main
  with:
    path: ./test-results.xml
    summary: true
    fail-on-empty: true
    title: Test results

内容的提问来源于stack exchange,提问作者Yee Bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:34:51