GitLab CI/CD流水线报错:无匹配文件,需确认工件相对工作目录
解决GitLab CI/CD流水线JUnit报告找不到的问题
问题原因
报错提示找不到gosecuri/target/surefire-reports/TEST-*.xml文件,核心原因是JUnit报告的路径配置错误。Maven执行clean test后,Surefire插件默认会在项目根目录的target/surefire-reports/下生成测试报告,而非你配置的gosecuri/子目录下。
解决方案
1. 修正JUnit报告路径
修改流水线配置中reports.junit的路径,去掉多余的gosecuri/前缀:
stages: - test image: "maven:3.8.7" variables: MAVEN_OPTS: >- -Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version" cache: paths: - .m2/repository/ - target/ test-job: stage: test services: - selenium/standalone-chrome script: - echo "Compiling the code..." - mvn --version - mvn "$MAVEN_CLI_OPTS" clean test -Dhost=selenium__standalone-chrome - Get-Command zip # 可选:添加命令验证报告文件是否存在(Windows Runner) - Get-ChildItem target\surefire-reports artifacts: when: always paths: - target/ reports: junit: - target/surefire-reports/TEST-*.xml # 修正此处路径
2. 验证报告生成情况
如果修改路径后仍报错,可以在script阶段添加目录查看命令,确认测试报告是否生成:
- 若使用Windows Runner(PowerShell):
Get-ChildItem target\surefire-reports - 若使用Linux/macOS Runner:
ls -la target/surefire-reports/
3. 检查Maven测试执行状态
确保mvn clean test命令实际执行了测试用例:
- 查看流水线日志中Maven的输出,确认是否有测试用例执行记录
- 若测试用例未执行,检查
pom.xml中Surefire插件的配置是否正确,或测试类是否符合命名规范(默认要求以Test结尾)
内容的提问来源于stack exchange,提问作者saheb bhatia
相关产品推荐
相关产品推荐

