2017-08-22 6 views
0

私はを公開しています.Jenkinsfile内にSSHプラグインを公開しています。しかし、私はcreateClientメソッドで例外java.io.NotSerializableExceptionを取得しています。これは私のコードです:NotSerializableException JenkinsfileでSSHを使用して公開する

def publish_ssh   = Jenkins.getInstance().getDescriptor("jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin") 
def hostConfiguration = publish_ssh.getConfiguration("${env.DSV_DEPLOY_SERVER}"); 

if(hostConfiguration == null) 
{ 
    currentBuild.rawBuild.result = Result.ABORTED 
    throw new hudson.AbortException("Configuration for ${env.DSV_DEPLOY_SERVER} not found.") 
} 

def buildInfo = hostConfiguration.createDummyBuildInfo(); 

def sshClient = hostConfiguration.createClient(buildInfo, new BapSshTransfer(
     env.SOURCE_FILE, 
     null, 
     env.DSV_DEPLOY_REMOTE_DIR, 
     env.REMOVE_PREFIX, 
     false, 
     false, 
     env.DSV_DEPLOY_COMMAND, 
     env.DSV_DEPLOY_TIMEOUT as Integer, 
     false, 
     false, 
     false, 
     null 
    )); 

例外を取り除くにはどうしたらいいですか?

答えて

2

一部の変数はシリアル化できないためです。それは後で再開できるようにパイプラインはジェンキンスが再起動生き残る必要があるためdoc

から

、実行中のプログラムの状態を定期的にディスクに保存される(各ステップの後または例えば工程の途中で生じる保存さsh)。

あなたは が

@NonCPS 
def createSSHClient() { 
// your code here. 
} 
を使用し、作成を行うために @NonCPS注釈を使用することができます
関連する問題