groovy 如何修复管道脚本“需要一个步骤”错误

cedebl8k  于 2022-11-21  发布在  其他
关注(0)|答案(2)|浏览(155)

我尝试在Jenkins中运行一个简单的流水线脚本,有两个阶段。脚本本身创建了一个textFile并检查它是否存在。但是当我尝试运行作业时,我得到了一个**“预期步骤”**错误。
我在什么地方读到过,你不能在一个步骤内有一个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) ...开始的行

c3frrgcw

c3frrgcw1#

缺少声明性管道中所需的script{}步骤。
报价:
指令码步骤会取得指令码管缐的区块,并在宣告式管缐中执行。

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

piztneat2#

出现"Expected a step"错误的原因有多种。
我的错误是因为我用单引号'而不是双引号"来括起一个步骤脚本。例如:

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

上面使用的字符串使用了字符串插值(或者我猜它被称为“可模板化字符串”?),这对单引号字符串不起作用。
我想我会在这里添加这个答案,以防有人来自谷歌和接受的答案不工作!

相关问题