我正在尝试在 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}"
}
}
上面使用的字符串使用字符串内插(或者我猜它被称为"模板化字符串"?(,这不适用于单引号字符串。
以为我会在这里添加这个答案,以防有人来自谷歌并且接受的答案不起作用!