Yol*_*pez 8 git changeset jenkins jenkins-pipeline
我有这个错误:
java.io.NotSerializableException: hudson.plugins.git.GitChangeSetList
Run Code Online (Sandbox Code Playgroud)
当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
Run Code Online (Sandbox Code Playgroud)
BMi*_*tch 14
Jenkins作业可以在执行中保存,这需要序列化.rawBuild的内容无法序列化,因此如果您访问它,则需要在前面的函数中执行此操作@NonCPS.例如:
showChangeLogs()
@NonCPS
def showChangeLogs() {
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}"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3611 次 |
| 最近记录: |