1. 相遇相识
这两天为 jfoa 添加了 PDF 导出的支持, 但是项目在本地跑着没啥问题, 但是 CI 却报错了, 查看 GitHub Actions 构建控制台却发现以下输出:
尴不尴尬? 意不意外? 我怎么访问 CI 的测试报告呢? 本地没问题, CI 测试出错, 测试报告看不到, 我…
2. 解决办法
上一篇我们介绍了 GitHub Actions CI/CD 解放码农双手, 当时我们将
jfoa
的打包的客户端上传至GitHub
, 那么我们是否也可以将测试报告也上传到 GitHub?
答案当然是:
Yes!
2.1 找到测试报告所在目录
SpringBoot 使用
gradle
构建的话, 默认测试报告在build/reports/
目录下, 因此, 我们可以直接上传这个目录到 GitHub.
2.2 上传测试报告
参考
upload-artifact
文档可以看到如下介绍:
因此上传这个目录就可以用
path
指定到目录就可以了(path 最后的目录分隔符 ‘/’ 可带可不带)
jfoa
上传的 action 就如下
.... build action... 先执行 build, 再上传测试报告, 因为 build 会执行 test, 只有执行了 test 之后才会生成测试报告
# upload build test reports
- name: Publish reports
uses: actions/upload-artifact@v2
with:
name: jfoa-build-reports-${{ runner.os }}
path: runner/build/reports/
2.3 运行状态
修改提交之后我们发现构建如果没有抛错的话,
workflow
可以顺利执行完成, 但是当 build 执行失败(编译未通过或者 test 执行失败等)依然不会有测试报告上传!
Why? 因为先执行 build, 再上传测试报告,如果 build 执行失败了, 之后的action 就不会再执行了!!
因此, 我们希望, 而且大部分情况下只有 build 执行失败的时候测试报告才显得更加重要.
所以, 我们需要GitHub actions
无论build
是否执行成功, 都将测试报告上传. 查阅文档, 就可以发现通过always()
就可以实现.
# upload build test reports
- name: Publish reports
if: always()
uses: actions/upload-artifact@v2
with:
name: jfoa-build-reports-${{ runner.os }}
path: runner/build/reports/
always()
总是返回true
.