Jenkins使用StarTeam插件时经常发生IOException

时间:2014-08-20 07:47:42

标签: windows jenkins jenkins-plugins starteam

我们在Windows机器上运行Jenkins CI服务器(和许多从服务器)。我们的代码存储库位于我们经常轮询的StarTeam(单独的StarTeam服务器)中。通常这很好用!

但是,每隔一段时间我们就会看到一个IOException - 远程操作失败(见下文),它无法构建并使登记历史记录崩溃,这使得无法确定在后续构建期间谁签入了什么。我需要帮助找出为什么我们一直看到这些错误:

以下是错误示例,其中构建在从属节点上执行:

    Fjernbygger på machinename (...) in workspace ... 
    java.io.IOException: remote file operation failed: (workspacename) at hudson.remoting.Channel@849755:machinename 
    at hudson.FilePath.act(FilePath.java:916) 
    at hudson.FilePath.act(FilePath.java:893) 
    at hudson.plugins.starteam.StarTeamSCM.checkout(StarTeamSCM.java:131) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1251) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604) 
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:513) 
    at hudson.model.Run.execute(Run.java:1706) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:231) 
    Caused by: java.io.IOException: Remote call on machinename failed 
    at hudson.remoting.Channel.call(Channel.java:748) 
    at hudson.FilePath.act(FilePath.java:909) 
    ... 10 more 
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.borland.starteam.impl.util.Platform 
    at com.borland.starteam.impl.ClientContext.(Unknown Source) 
    at com.borland.starteam.impl.Server.(Unknown Source) 
    at com.starbase.starteam.Server.(Unknown Source) 
    at hudson.plugins.starteam.StarTeamConnection.initialize(StarTeamConnection.java:196) 
    at hudson.plugins.starteam.StarTeamCheckoutActor.invoke(StarTeamCheckoutActor.java:131) 
    at hudson.plugins.starteam.StarTeamCheckoutActor.invoke(StarTeamCheckoutActor.java:30) 
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2474) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:118) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:48) 
    at hudson.remoting.Request$2.run(Request.java:326) 
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at hudson.remoting.Engine$1$1.run(Engine.java:58) 
    at java.lang.Thread.run(Unknown Source) 

这与Jenkins无法轮询starteam服务器有关吗? 这是否与从属设备上的starteam插件配置错误有关? starteam客户端(我相信2008 R2?)安装在主节点和从节点上。此外,我还遵循了this post关于将文件复制到主节点上的web-inf位置的说明。

我需要指出我应该从哪里开始寻找答案,然后希望能够获得更多信息。 如果我需要提供重要细节以澄清问题,请告诉我。

修改

Thisthis看起来有点相关。我的问题也通过重新启动slave /重新启动运行它们的Jenkins服务来解决。这是一个问题,因为我在从节点上运行Jenkins作为服务?服务在从属服务器上使用与主节点上相同的用户凭据运行。或者这与机器上的不同JRE环境有关?

1 个答案:

答案 0 :(得分:2)

NoClassDefFoundError告诉我们问题与你的类路径上的starteam jar有关。问题将是罐子的位置/存在,或者它们的版本。

检查starteam文件夹中是否同时拥有starteam-bridgeweb-inf/lib个罐子(如果你有桥箱),并且没有多个副本/版本罐子在你的类路径上点缀着。

另一种解决方案可能是使用较新版本的starteam罐子。我没有看到jenkins在starteam 2008R2上运行,所以jenkins插件可能需要一个更新的jar(较新的jar会向后兼容你的服务器)。