gpt4 book ai didi

jenkins - Jenkins 中的 WorkflowScript.with

转载 作者:行者123 更新时间:2023-12-01 13:33:57 24 4
gpt4 key购买 nike

我在 jenkins 共享库中有一个类,它存储来自 jenkins 管道脚本的 WorkflowScript 类的实例,如下所示。
def myTools = new my.org.MyTools(this)
MyTools 的构造函数只是像这样存储 WorkflowScript 的实例......

MyTools(script){
this.script = script
}

然后我有一个方法尝试使用 groovy 的 .withscript但失败了...
myMethod(){
script.with{
node{
echo "I want to be able to use pipeline syntax here"
sh 'echo "without using script. in front of each command"'
}
}
}

但是当我运行它时,我收到以下错误...
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.jenkinsci.plugins.workflow.cps.CpsClosure2.node() is applicable for argument types: (org.jenkinsci.plugins.workflow.cps.CpsClosure2) values: [org.jenkinsci.plugins.workflow.cps.CpsClosure2@855f14e]
Possible solutions: clone(), use([Ljava.lang.Object;), notify(), wait(), call(), run()
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite
.java:113)

我早就料到里面的 script.with关闭以访问与 script. 相同的所有内容,但它似乎只能访问 java.lang.Object 的方法.是否有可能获得 script.with闭包与 script. 的上下文相同?

最佳答案

对于常规闭包,可以指定 strategy which the closure uses to resolve methods and properties

有选项:DELEGATE_FIRST、DELEGATE_ONLY、OWNER_FIRST(默认)、OWNER_ONLY、TO_SELF

我认为管道脚本有一个特殊的策略,在你的类(class)中有一个默认策略。

关于jenkins - Jenkins 中的 WorkflowScript.with,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44569712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com