jenkins - 如何确定 Jenkins Groovy 脚本的哪个参数需要 String 以及哪个 GString?
问题描述
我已经SomeClass
用方法定义了一个类
class SomeClass implements Serializable {
void someMethod(String var1, String var2, String... vars) {
...
}
}
我在声明性管道中使用如下:
SomeClass instance = new SomeClass(this)
pipeline {
environment {
VAR1 = "var1"
VAR2 = sh(returnStdout: true, script: "echo var2").trim()
VAR3 = "var3"
}
stages {
stage("Stage X") {
steps {
script {
instance.someMethod("${VAR1}", "${VAR2}", "${VAR3}")
}
}
}
}
}
由于失败
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.jenkinsci.plugins.docker.workflow.SomeClass.someMethod() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl, org.codehaus.groovy.runtime.GStringImpl, org.codehaus.groovy.runtime.GStringImpl) values: [var1, var2, var3]
如果我将调用更改为instance.someMethod(VAR1.toString(), VAR2.toString(), VAR3.toString())
它失败,因为
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.jenkinsci.plugins.docker.workflow.SomeClass.someMethod() is applicable for argument types: (java.lang.String, java.lang.String, java.lang.String) values: [var1, var2, var3]
Afaik 至少其中一个应该可以工作。我认为 Groovy 应该能够使两者都工作,但这是第二步。如何使用给定的参数调用该方法?
解决方案
打印变量下面的代码:
SomeClass instance = new SomeClass()
pipeline {
agent any
environment {
VAR1 = "var1"
VAR2 = sh(returnStdout: true, script: "echo var2").trim()
VAR3 = "var3"
}
stages {
stage("Stage X") {
steps {
script {
instance.someMethod(this, "${VAR1}", "${VAR2}", "${VAR3}")
//instance.someMethod("${VAR1}", "${VAR2}", "${VAR3}")
}
}
}
}
}
class SomeClass implements Serializable {
void someMethod(def script, String var1, String var2, String... vars) {
script.echo "someMethod: ${var1}"
}
}
推荐阅读
- javascript - 如何将 Javascript 元素放入 CSS 背景图像
- tensorflow - 关于Tensorflow Dense Layer实现的问题
- typescript - 为什么打字稿命名空间已经过时了?
- javascript - 如何在单击时切换数组?
- c# - Dns.GetHostByName/Resolve 别名列表为空
- html - 尝试在 Bootstrap 4 中将文本环绕在图像周围
- python - 如何使用 range 函数在 for 循环中的每次迭代中以 1 为增量从 0 计数到 8
- typescript - VS 代码在每个空格上添加了无用的单词“cons”单词和分号
- excel - 尝试创建循环
- python - 有没有办法在 PyCollada 几何图形上找到纹理的文件路径?