【问题标题】:Jenkins: How to use 'bindings' field of Extended Choice Parameters plugin?詹金斯:如何使用扩展选择参数插件的“绑定”字段?
【发布时间】:2020-12-29 23:53:34
【问题描述】:

我不明白如何使用extendedChoice参数的'bindings'字段,我检查了插件的源代码,发现它在groovyShell的上下文中添加了变量,但我不明白如何访问这个上下文。

我尝试这样设置绑定:

  def bindings = new Binding()
  bindings.setProperty("foo", "foo value")

  return extendedChoice(
      name: 'jsonParameters',
      bindings: bindings.getVariables().toString(),
      type: 'PT_JSON',
      javascript: jsScript,
      groovyScript: groovyScript)

然后在“groovyScript”中,我希望能够访问我的“foo”变量...

更新:我创建了一个简单的测试,“绑定”是全局的,我可以访问它!为什么不在我的带有插件的 groovyscript 中?

def bindings = new Binding()
bindings.setVariable("foo", "bar")
GroovyShell groovyShell = new GroovyShell();
Script compiledScript = groovyShell.parse("""
  println "foo: " + binding.variables.get("foo")
""");
compiledScript.setBinding(bindings);
compiledScript.run();

// print "foo: bar"

插件版本:0.78

【问题讨论】:

    标签: jenkins jenkins-pipeline groovyshell extended-choice-parameter


    【解决方案1】:

    绑定字段格式不是Map.toString() 格式,而是“key=value”,其中条目由“\n”分隔:

    return extendedChoice(
          name: 'jsonParameters',
          bindings: "key1=value2\nkey2=value2",
          type: 'PT_JSON',
          javascript: jsScript,
          groovyScript: groovyScript)
    

    然后,为了使用这些变量,只需在 groovyScript 中调用 getProperty

    getProperty("key1")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多