无法下载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
相关产品推荐
相关产品推荐

