java.lang.NoSuchMethodError: 在步骤中找不到这样的 DSL 方法“$”

pap*_*ito 6 jenkins

我有以下 dsl

pipeline {
    agent {
        label 'test'
    }
    parameters {        
        booleanParam(defaultValue: false, description: 'This is a Release build', name: 'isRelease')
    }

    stages {
        stage('Build') {
            steps {
                 script {
                     if (${params.isRelease}) {
                          echo("This is a release")
                     }
                 }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这失败并出现以下错误

java.lang.NoSuchMethodError: No such DSL method '$' found among steps 
Run Code Online (Sandbox Code Playgroud)

我做错了什么?我在用

  • 詹金斯 2.89.4
  • 工作 DSL 1.68
  • 流水线作业 2.20
  • 管道:API 2.27
  • 管道:基本步骤 2.7
  • 管道:构建步骤 2.7
  • 管道:声明性 1.2.9

pap*_*ito 8

好的,答案已经可以在Stackoverflow 中找到:布尔参数实际上是字符串,所以这是有效的

if ("${params.isRelease}" == "true") {
    echo("This is a release")
}
Run Code Online (Sandbox Code Playgroud)

或者使用 params-object

if (params.isRelease) {
    echo("This is a release")
}
Run Code Online (Sandbox Code Playgroud)