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

问题描述 投票:0回答:1

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

问题是这些参数在作业第一次运行时并不存在。因此,第一次执行将会失败,并显示

groovy.lang.MissingPropertyException
。任何后续运行现在都知道这些参数并且不会失败。

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

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

干杯

jenkins multibranch-pipeline
1个回答
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!"
            }
        }
    }
}

更新:对此答案的评论中的进一步说明表明默认值设置正确。导致相同错误消息的问题是参数是由

${foo}
而不是
${params.foo}
引用的。

© www.soinside.com 2019 - 2024. All rights reserved.