如何将可选的 Jenkins 参数传递到 Jenkinsfile 中

Jac*_*des 5 jenkins jenkins-pipeline

我有两份詹金斯工作。两者都不使用源代码控制下的 Jenkinsfile。相反,每个作业都有一个保存在 Jenkins 作业本身内的管道脚本。这两个作业的管道脚本只有一处不同 - 其中一个在运行作业时提示用户选择一个名为 VERSION 的参数,而另一个则没有。管道脚本在所有其他方面都是相同的。

我正在尝试将两个管道脚本合并到源代码控制下的单个 Jenkinsfile 中。我这样定义了 VERSION 变量:

def version = (VERSION != "") ? "version=${VERSION}" : ""
Run Code Online (Sandbox Code Playgroud)

据我了解(我可能是错的),这意味着“如果运行作业的用户输入了 VERSION,则将 $version 设置为 $VERSION。如果运行作业的用户未输入 VERSION,则将 $version 设置为 null” 。然后我在 Jenkinsfile 中进一步调用 $version 。

当我运行用户未选择 VERSION 的 Jenkins 作业时,作业失败并出现以下错误:

groovy.lang.MissingPropertyException: No such property: VERSION for class: 
Run Code Online (Sandbox Code Playgroud)

关于如何根据用户在运行作业时是否选择此选项来选择性地将 VERSION 传递到我的 Jenkinsfile 中,有什么想法吗?

yon*_*ong 6

如果VERSION是作业的参数,您应该更改如下:

def version = params.VERSION ? "version=${params.VERSION}" : ""
Run Code Online (Sandbox Code Playgroud)