GitLab CI测试失败却显示警告并发送成功邮件,寻求解决
问题解决方法
你的.gitlab-ci.yml存在缩进语法错误,这是导致流水线状态异常的核心原因:
when: manual本该是test_qa任务的子配置项,你错误将其写成了与test_qa同级的全局配置,导致后续的artifacts块也无法关联到该任务。GitLab因此无法正确识别任务的失败判定逻辑,也无法处理JUnit测试报告,最终出现测试失败却只显示警告、发送成功邮件的问题。
修正后的配置如下:
stages: - qa image: name: maven:3-jdk-11 pull_policy: [always, if-not-present] variables: MAVEN_OPTS: "-Dmaven.repo.local=/.m2" test_qa: stage: qa script: - echo "testing against qa..." - mvn test when: manual artifacts: when: always reports: junit: - /target/surefire-reports/TEST-*.xml expire_in: 120 days
关键修正说明:
- 将
when: manual缩进至test_qa块内,作为该任务的手动触发配置; - 调整
artifacts块的缩进,使其归属test_qa任务,确保GitLab能正确收集JUnit测试报告,依据测试结果标记流水线状态; - 统一缩进格式(保持2空格一致),避免语法解析错误。
修正后效果:
- 当
mvn test执行返回非零状态码,或JUnit报告存在失败用例时,该任务会标记为失败,流水线整体状态同步变为失败; - GitLab会根据流水线最终的失败状态,发送对应的失败通知邮件。
内容的提问来源于stack exchange,提问作者tedtrain
相关产品推荐
相关产品推荐

