jenkins 管道在文件退出时评估为 false

问题描述 投票:0回答:1

有任何提示为什么

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
jenkins jenkins-pipeline dsl
1个回答
0
投票

您使用哪个节点/容器操作系统?

我以前也遇到过这个问题。我发现

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} }
© www.soinside.com 2019 - 2024. All rights reserved.