"スクリプト"指令でload関数を使用して、スクリプトをGroovyスクリプトにインポートしようとしています。以下は、私が持ってる簡素化コードを達成することであるこのカスタムGroovyスクリプトまたはJenkinsfileで「シリアライズ不可能」とは何ですか?
プロジェクト構造
Jenkinsfile
script.groovy
helper/
Builder.groovy
Jenkinsfile
....
stage ('Build') {
steps {
script {
def executer = load "script.groovy"
executer.printText()
}
}
}
....
script.groovy
import helper.Builder
builder = new Builder()
def printText(){
def text = builder.getText()
println text
}
Builder.groovy
package helper
class Builder{
def getText(){
return "blah"
}
}
しかし、Jenkinfileを実行すると失敗し続け、 "import helps.builder"というコードが原因で問題が発生しています。しかし、私はBuilder.getText()関数を呼び出すことができるように、 "script.groovy"にBuilderクラスをインポートすることができます。
私が理解していないことの1つは、terminalを使用してscript.groovyを実行しようとするとうまく動作し、問題がないことです。
アイデアはありますか?ところで
は、下記本当にコマンドラインのようなものが動作しませんジェンキンスan exception which occurred:
in field collector
in field abnormal
in field outcome
in field body
in field step
in field thread
....
....
Caused: java.io.NotSerializableException: org.codehaus.groovy.control.ErrorCollector
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
....
....