【问题标题】:Jenkins SVN plugin failed when removing files (Checksum mismatch)删除文件时 Jenkins SVN 插件失败(校验和不匹配)
【发布时间】:2013-01-22 08:36:39
【问题描述】:

我们今天在 Jenkins 上遇到了一个奇怪的错误。经过调查,我们发现是由于我们删除了SVN中的一些文件,导致Jenkin SVN插件出现问题。

根据我的调查,这个错误似乎是已知的,但尚未修复。所以升级到更新的 SVN 插件版本不是解决方案(我们使用的是 Jenkins 1.474)。

我们的临时解决方案是“始终在构建之前结帐”。但这显然非常缓慢,并且对于大型项目需要很多时间。所以我正在寻找一种方法来(至少)在构建后脚本中检测到 SVN 问题,并可能会发送电子邮件通知开发人员。

有人有这方面的经验吗?我对 Jenkins 不太熟悉,因此非常感谢任何帮助或指点。

这是错误日志:

Building in workspace /workspace-directory/workspace
Cleaning up /var/lib/jenkins/jobs/aaa/workspace/.
Deleting /var/lib/jenkins/jobs/aaa/workspace/logs
Deleting /var/lib/jenkins/jobs/aaa/workspace/target
Updating svn://address/trunk@HEAD
U         src/main/some_file.java
D         src/main/another_file.java
U         src/main/other_files.java
ERROR: Failed to update svn://address/trunk@HEAD
org.tmatesoft.svn.core.SVNException: svn: E155017: Checksum mismatch while updating '/var/lib/jenkins/jobs/aaa/workspace/src/main/address/.svn/text-base/StudioSignUpController.java.svn-base'; expected: '39fc987bbeb8cd332e6b94abfb934720', actual: 'e9fa300ee28a2b1e15b2273f4b14ae18'
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:85)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:69)
    at org.tmatesoft.svn.core.internal.io.svn.SVNEditModeReader.driveEditor(SVNEditModeReader.java:250)
    at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.update(SVNRepositoryImpl.java:1503)
    at org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.update(SVNUpdateClient16.java:557)
    at org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.doUpdate(SVNUpdateClient16.java:414)
    at org.tmatesoft.svn.core.internal.wc16.SVNUpdateClient16.doUpdate(SVNUpdateClient16.java:324)
    at org.tmatesoft.svn.core.internal.wc2.old.SvnOldUpdate.run(SvnOldUpdate.java:27)
    at org.tmatesoft.svn.core.internal.wc2.old.SvnOldUpdate.run(SvnOldUpdate.java:11)
    at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
    at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1221)
    at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:292)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:315)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:295)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:391)
    at hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:136)
    at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:144)
    at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:789)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:770)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:753)
    at hudson.FilePath.act(FilePath.java:842)
    at hudson.FilePath.act(FilePath.java:824)
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:743)
    at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:685)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1245)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494)
    at hudson.model.Run.execute(Run.java:1488)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:236)
Caused by: org.tmatesoft.svn.core.SVNException: svn: E155017: Checksum mismatch while updating '/xxxxx/.svn/text-base/SignUpController.java.svn-base'; expected: '39fc987bbeb8cd332e6b94abfb934720', actual: 'e9fa300ee28a2b1e15b2273f4b14ae18'
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
    at org.tmatesoft.svn.core.internal.wc.SVNUpdateEditor15.textDeltaEnd(SVNUpdateEditor15.java:637)
    at org.tmatesoft.svn.core.internal.wc.SVNAmbientDepthFilterEditor.textDeltaEnd(SVNAmbientDepthFilterEditor.java:221)
    at org.tmatesoft.svn.core.internal.wc.SVNCancellableEditor.textDeltaEnd(SVNCancellableEditor.java:130)
    at org.tmatesoft.svn.core.internal.io.svn.SVNEditModeReader.processCommand(SVNEditModeReader.java:176)
    at org.tmatesoft.svn.core.internal.io.svn.SVNEditModeReader.driveEditor(SVNEditModeReader.java:232)
    ... 29 more
Caused by: svn: E155017: Checksum mismatch while updating '/xxxx/.svn/text-base/SignUpController.java.svn-base'; expected: '39fc987bbeb8cd332e6b94abfb934720', actual: 'e9fa300ee28a2b1e15b2273f4b14ae18'
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208)
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:189)
    at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:141)
    at org.tmatesoft.svn.core.internal.wc.SVNUpdateEditor15.textDeltaEnd(SVNUpdateEditor15.java:634)
    ... 33 more
no change for svn://some_address/trunk since the previous build
No emails were triggered.

【问题讨论】:

    标签: java bash svn jenkins maven-3


    【解决方案1】:

    我们偶尔会看到一些构建的问题,但我们通常只是清除工作区然后重新构建。 (从 Jenkins,导航到作业,然后是“工作区”。)

    有几个不同的插件可能有助于检测并可能根据问题实际采取一些措施。

    • Warnings Plugin - 解析控制台输出并查找它报告为警告的内置模式和用户定义模式。
    • Log Trigger Plugin - 如果在控制台日志中找到特定触发器,则触发下游作业。 (也许触发了 SVN“清理”作业?)

    其中,我自己只使用过警告插件。

    【讨论】:

      【解决方案2】:

      Jenkins JIRA 和 JetBrains 的这些主题很有趣: https://issues.jenkins-ci.org/browse/JENKINS-14550 http://youtrack.jetbrains.com/issue/IDEA-83673#comment=27-379397

      正如您所提到的,问题在 Jenkins 中仍然存在。 JetBrains 相信他们已经用更新的 svnkit 纠正了 IDEA:svnkit 1.7.5-v1。

      jetbrains 问题中还提到了一些使用商业工具 SmartSvn 解决问题的策略,SmartSvn 是一个具有特殊功能“验证管理区域”的 svn 客户端。

      我将尝试使用有关 svnkit 的注释来更新 Jenkins JIRA 问题,看看是否会导致修复。

      编辑: 实际上,一月的 Jenkins Subversion 插件 1.4.5 似乎解决了这个问题。安装并手动重新启动后,不匹配消失了。

      【讨论】:

      • 似乎已经解决了这个问题。不得不手动重新启动 Jenkins,但构建立即工作(这是出乎意料的 - 以为我必须清除 SVN 下载)。
      • 手动重启 Jenkins?我不明白。为什么我们需要重启 Jenkins?
      • 如果只有在手动重启 Jenkins 后才有效,我宁愿擦工作区。
      • 似乎这部分只是 Windows 将其作为服务运行的错误。具体来说,Jenkins 让一个 Java 进程运行,我假设它正在寻找服务器的重新启动,但是该 Java 进程正在占用 Jenkins 主进程正在寻找的端口,因此它无法加载正在使用的端口。如果没有重新启动,我没有尝试此更新。可能这可能会奏效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      相关资源
      最近更新 更多