【问题标题】:How to pass optional Jenkins parameter into a Jenkinsfile如何将可选的 Jenkins 参数传递到 Jenkinsfile
【发布时间】:2019-03-11 17:43:10
【问题描述】:

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

我正在尝试将两个管道脚本合并到一个受源代码控制的 Jenkinsfile 中。我已经定义了 VERSION 变量:

def version = (VERSION != "") ? "version=${VERSION}" : ""

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

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

groovy.lang.MissingPropertyException: No such property: VERSION for class: 

有什么想法可以根据用户在运行作业时是否选择此选项来选择将 VERSION 传递到我的 Jenkinsfile 中吗?

【问题讨论】:

  • 由于没有提供代码,很难猜测,但听起来VERSION 是一个参数,应该通过params.VERSION 从其映射中访问。

标签: jenkins jenkins-pipeline


【解决方案1】:

如果VERSION是job的参数,你应该改变如下:

def version = params.VERSION ? "version=${params.VERSION}" : ""

【讨论】:

  • 非常感谢 Matt 和 yong。您的解决方案是正确的。我用 params.VERSION 替换了 VERSION,现在它可以工作了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
相关资源
最近更新 更多