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

无法下载Codacy覆盖率报告,求Workflow代码排查与解决方案

问题排查与解决方案

错误根源

你遇到的Unable to find any artifacts for the associated workflow错误,核心原因是上游的codacy-coverage-reporter Job没有上传名为public的工件(Artifact),而后续的download-reporter Job尝试下载一个不存在的工件,自然会失败。

codacy/codacy-coverage-reporter-action的作用只是将本地覆盖率数据上传到Codacy平台,不会自动生成并上传GitHub Actions工件。


解决方案

根据你的需求,分两种场景提供修正方案:

场景1:下载本地生成的覆盖率报告文件

如果你想获取自己项目生成的覆盖率文件(比如上传给Codacy的lcov.info或HTML报告),需要先在第一个Job中上传工件,再在第二个Job中下载:

name: codacy-coverage-reporter

on: ["push"]

jobs:
  codacy-coverage-reporter:
    runs-on: ubuntu-latest
    name: codacy-coverage-reporter
    steps:
      - uses: actions/checkout@v2
      # 先执行测试生成覆盖率报告,根据你的项目实际命令调整(比如Angular项目常用npm run test:coverage)
      - name: Generate coverage report
        run: npm run test:coverage
      - name: Upload coverage to Codacy
        uses: codacy/codacy-coverage-reporter-action@v1
        with:
          # 建议用GitHub Secrets存储token,不要硬编码
          project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
          coverage-reports: coverage/angular-forms-and-validations/lcov.info
      # 新增:将本地覆盖率文件上传为GitHub Actions工件
      - name: Upload coverage artifact
        uses: actions/upload-artifact@v4
        with:
          name: coverage-report # 自定义工件名称
          path: coverage/angular-forms-and-validations/ # 上传整个覆盖率目录
    
  download-reporter: 
    runs-on: ubuntu-latest
    needs: codacy-coverage-reporter
    steps:
      - name: Download coverage artifact
        uses: actions/download-artifact@v4
        with:
          name: coverage-report # 必须和上传时的工件名称一致
      # 可选:如果需要打包成tar.gz
      - name: Package report
        run: tar cvf coverage-report.tar.gz angular-forms-and-validations/

场景2:下载Codacy平台生成的覆盖率报告

如果你想获取Codacy平台上生成的官方报告,需要调用Codacy的API来获取,而非依赖GitHub Actions工件:

name: codacy-coverage-reporter

on: ["push"]

jobs:
  codacy-coverage-reporter:
    runs-on: ubuntu-latest
    name: codacy-coverage-reporter
    steps:
      - uses: actions/checkout@v2
      - name: Generate coverage report
        run: npm run test:coverage
      - name: Upload coverage to Codacy
        uses: codacy/codacy-coverage-reporter-action@v1
        with:
          project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
          coverage-reports: coverage/angular-forms-and-validations/lcov.info
    
  download-reporter: 
    runs-on: ubuntu-latest
    needs: codacy-coverage-reporter
    steps:
      - name: Fetch Codacy coverage report via API
        run: |
          # 替换为你的Codacy项目ID(可在Codacy项目设置页找到)
          PROJECT_ID="your-codacy-project-id"
          # 获取JSON格式的覆盖率数据
          curl -H "Authorization: Token ${{ secrets.CODACY_API_TOKEN }}" \
               -o codacy-coverage.json \
               "https://app.codacy.com/api/v3/projects/$PROJECT_ID/coverage"
          # 获取HTML格式的可视化报告
          curl -H "Authorization: Token ${{ secrets.CODACY_API_TOKEN }}" \
               -o codacy-coverage.html \
               "https://app.codacy.com/api/v3/projects/$PROJECT_ID/coverage/html"

关键注意事项

  • 不要硬编码Codacy的token,将其存储在GitHub Secrets中,避免敏感信息泄露
  • 确保第一个Job中成功生成了覆盖率报告文件,否则Codacy上传步骤也会失败
  • 工件名称在上传和下载时必须完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:43:09