Go项目GitLab流水线go-junit-report解析测试结果失败
GitLab流水线JUnit XML解析失败:移除非ASCII字符的解决办法
问题根源
你遇到的JUnit XML parsing failed报错,基本就是因为生成的report.xml里包含非ASCII字符,GitLab的JUnit解析器无法处理这类字符导致的。
直接修改流水线脚本解决
在现有脚本里加一步过滤,把go test输出里的非ASCII字符删掉,再传给go-junit-report生成合规的XML报告。修改后的.gitlab-ci.yml如下:
test: stage: build artifacts: when: always expire_in: 30 day reports: junit: report.xml script: - go install github.com/jstemmer/go-junit-report/v2@v2.0.0 - go test -cover -v ./internal/... -coverprofile=unit.coverprofile -tags=unit \ | tr -cd '\11\12\15\40-\176' \ | $GOPATH/bin/go-junit-report -iocopy -set-exit-code -out report.xml
命令解释
tr -cd '\11\12\15\40-\176':这个命令会保留所有可打印ASCII字符,以及制表符、换行符、回车符,删掉其他所有非ASCII字符,确保输出给go-junit-report的内容是纯ASCII的。- 把这步过滤插在
go test和go-junit-report之间,就能保证最终生成的report.xml符合GitLab解析要求,测试结果就能正常显示在测试标签页了。
内容的提问来源于stack exchange,提问作者indee423
相关产品推荐
相关产品推荐

