有任何提示为什么
WHEN
表达式的计算结果为 FALSE 吗?我尝试了this解决方案,但没有运气
stage('Code Coverage Tests') {
steps {
container('main') {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh '''
pwd
echo testinfo > /coverage-data/_coverage_report.dat
ls -ltr /coverage-data/
'''.stripIndent()
}
}
}
}
stage('Code Coverage Scan') {
when { expression { return fileExists ('/coverage-data/_coverage_report.dat') } }
steps {
输出显示文件退出。
+ ls -ltr /coverage-data/
total 4
-rw-r--r-- 1 jenkins jenkins 9 Dec 18 18:13 _coverage_report.dat
+ pwd
[Pipeline] stage
[Pipeline] { (Code Coverage Scan)
[Pipeline] fileExists
Stage "Code Coverage Scan" skipped due to when conditional
您使用哪个节点/容器操作系统?
fileExists
在我使用的 SLES15 操作系统节点和 SLES 容器上不起作用。请注意,这可能已在 Jenkins 的更高版本中修复。
请参阅此答案。
我最终使用 shell 脚本来检查该文件。如果您使用的是 Windows,则必须针对 Windows 操作系统进行修改。
更换
when { expression { return fileExists ('/coverage-data/_coverage_report.dat') } }
与
when { expression { return sh(script: "#!/bin/sh \n test -e /coverage-data/_coverage_report.dat", returnStatus: true) == 0} }