当前位置: 首页 > 面试题库 >

jenkins管道中的changeSet错误(错误:java.io.NotSerializableException:hudson.plugins.git.GitChangeSetList)

归鹤龄
2023-03-14
问题内容

我有这个错误:

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

ChangeSet!=null但奇怪的是,更新此插件时发生错误:管道共享Groovy库,在此工作正常之前,我使用jenkins 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

问题答案:

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}"
          }
      }
  }
}


 类似资料:
  • 我正在尝试使用 Jenkinsfile 实现一个新的 Jenkins 管道。 GIT存储库并没有在每个分支上都有一个Jenkinsfile,只是在一个特定的分支下(因为我目前正在为一个遗留存储库构建CI)。 Jenkins管道是使用以下配置创建的: 丢弃旧版本(我不想手动清理) Bitbucket webhook trigger (on push event) 来自 SCM 的管道脚本 Bitbu

  • 问题内容: 我正在Jenkins管道中以代码形式编写Android构建过程。脚本的相关部分是: 运行构建时,出现以下错误: 我相信该问题与get_current_time_date函数有关,但我不确定如何处理。 我已经在互联网上阅读了有关该错误的信息,发现可以去Jenkins-> Manage Jenkins->进程内脚本批准并批准某些代码运行,但是如何防止这种情况发生?我不确定应该批准哪个代码(

  • 问题内容: 我在执行正则表达式匹配的函数前使用,即使使用注释,我仍然遇到错误。 请注意,它会多次调用该函数,并且仅在实际匹配后才会发生异常。 这是我的代码: 进行詹金斯构建时的输出: 问题答案: 可能是由于范围可变。尝试像这样限制它: 在全局脚本绑定中创建没有变量的变量,因此从方法退出后仍然存在。

  • 我已经在windows上安装了Jenkins版本并使用配置了并且能够通过选中选项从签出。但取消选中此选项后,在运行构建时会出现以下错误: cvs rlog-s-d06 Mar2015 18:49:11+0500<09 Mar2015 14:54:14+0500 ns cvs[rlog中止]:/home/cvs/src/ns/stencils/statements/attic/checktempla

  • 我已经在AWS/EMR上准备了一个流jobflow,它使用熟悉的测试管道运行良好: boto emr作业运行也可以很好地工作,因为我增加了输入数据的大小,直到某个阈值,作业因python断管错误而失败: 以及以下java错误: 我假设内存错误首先发生,导致管道中断。 对于任何输入数据大小,映射任务都已完成;错误发生在减速机阶段。我的减速机是通常的流式减速机(我使用AMI 3.2.3与包内置到Pyt