我在 Jenkins 多分支管道方面遇到问题,该管道是参数化的。参数均在 Jenkinsfile 中声明。
问题是这些参数在作业第一次运行时并不存在。因此,第一次执行将会失败,并显示
groovy.lang.MissingPropertyException
。任何后续运行现在都知道这些参数并且不会失败。
由于这是一个多分支管道,每个新的拉取请求或跟踪的分支都会发生这种情况。有什么解决方法可以避免这个问题吗?
我也尝试在 UI 中设置参数,但是管道配置页面上没有设置参数的选项。可能是因为这是一个多分支管道?
干杯
这是管道中参数的一个已知问题。要知道需要哪些参数,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}
引用的。