如何修复管道脚本"Expected a step"错误



我正在尝试在 Jenkins 中运行一个简单的管道脚本,其中包含 2 个阶段。脚本本身会创建一个文本文件并检查此文件是否存在。但是当我尝试运行作业时,出现"预期步骤">错误。

我在某处读到您不能在步骤中if,因此这可能是问题所在,但如果是这样,我如何在不使用if的情况下进行检查?

pipeline {
    agent {label 'Test'}
    stages {
        stage('Write') {
            steps {
                writeFile file: 'NewFile.txt', text: 
                '''Sample HEADLINE'''
                println "New File created..."
            }
        }
        stage('Check') {
            steps {        
                Boolean bool = fileExists 'NewFile.txt'
                if(bool) {
                    println "The File exists :)"
                }
                else {
                    println "The File does not exist :("
                }            
            }
        }
    }
}

我希望脚本在代理工作区中创建"NewFile.txt",并将文本打印到控制台,确认它存在。

但我实际上得到了两个"预期一步">错误。在以Boolean bool = ...开头的线路在if(bool) ...

缺少声明性管道中所需的script{} -步骤。

报价:

脚本

步骤采用脚本化管道块并执行该在声明性管道中。

stage('Check') {
    steps {        
        script {
            Boolean bool = fileExists 'NewFile.txt'
            if (bool) {
                println "The File exists :)"
            } else {
                println "The File does not exist :("
            }   
        }         
    }
}

您可能会收到"Expected a step"错误的原因有多种。

我的发生是因为我使用单引号'来包围步骤脚本而不是双引号"。 例如:

stage("Build") {
    steps {
        sh "./build.sh ${SECRET_KEY}"
    }
}

上面使用的字符串使用字符串内插(或者我猜它被称为"模板化字符串"?(,这不适用于单引号字符串。

以为我会在这里添加这个答案,以防有人来自谷歌并且接受的答案不起作用!

相关内容

最新更新