2016-09-30 30 views
4

私はこのエラーがあります:エラー(:java.io.NotSerializableException:エラーhudson.plugins.git.GitChangeSetList)は

java.io.NotSerializableException: hudson.plugins.git.GitChangeSetList 

ChangeSet!=nullを奇妙なは、更新時にエラーが発生しましたということですこのプラグイン:この作品の良い前にパイプラインの共有Groovyのライブラリ、私はジェンキンスを使用し、V 2.21およびパイプライン2.4と私のコードは次です:

def changeLogSets = currentBuild.rawBuild.changeSets 
for (int i = 0; i < changeLogSets.size(); i++) { 
    def entries = changeLogSets[i].items 
    for (int j = 0; j < entries.length; j++) { 
     def entry = entries[j] 
     echo "${entry.commitId} by ${entry.author} on ${new Date(entry.timestamp)}: ${entry.msg}" 
     def files = new ArrayList(entry.affectedFiles) 
     for (int k = 0; k < files.size(); k++) { 
      def file = files[k] 
      echo " ${file.editType.name} ${file.path}" 
     } 
    } 
} 
changeLogSets= null 

答えて

4

ジェンキンスジョブはシリアライズされたことを、それらを必要とする、半ば実行に保存することができます。 rawBuildの内容はシリアル化することはできませんので、これにアクセスするには、先に@NonCPSの関数内でアクセスする必要があります。例:

+0

showChangeLogsがJenkinsfileにインポートされたライブラリ内にある場合、これは役に立たないようです – gerasalus