第一次运行时 Jenkins 参数不存在(多分支)

xxS*_*rdy 4 jenkins multibranch-pipeline

我在 Jenkins 多分支管道方面遇到问题,该管道是参数化的。参数均在 Jenkinsfile 中声明。

问题是这些参数在作业第一次运行时并不存在。因此,第一次执行将会失败并显示groovy.lang.MissingPropertyException. 任何后续运行现在都知道这些参数并且不会失败。

由于这是一个多分支管道,每个新的拉取请求或跟踪的分支都会发生这种情况。有什么解决方法可以避免这个问题吗?

我也尝试在 UI 中设置参数,但是管道配置页面上没有用于设置参数的选项。可能是因为这是一个多分支管道?

干杯

Joe*_*ers 9

这是管道中参数的一个已知问题。要知道需要哪些参数,Jenkins 需要执行一次 Jenkinsfile。例如,GUI 中的参数只有在管道首次运行后才可用。

为了防止错误,您可以指定合理的默认值,如下所示:

pipeline {
    agent any
    parameters {
        string(name: 'Greeting', defaultValue: 'Hello', description: 'How should I greet the world?')
    }
    stages {
        stage('Example') {
            steps {
                echo "${params.Greeting} World!"
            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

  • @aeoluseros你必须使用`${params.Foo}`而不是`${Foo}`。它隐藏在已接受的答案中。 (2认同)