【问题标题】:Jenkins ClearCase UCM plugin retrieving changes errorJenkins ClearCase UCM 插件检索更改错误
【发布时间】:2015-04-10 14:13:42
【问题描述】:

我正在尝试将 Jenkins 与 UCM ClearCase 环境集成,但在构建过程中遇到了问题。

首先,我在我的集​​成流中创建了一个 -recommended 基线,并在我的开发流中重新建立了这个基线。

我的 jenkins 作业在我的集成流上配置并在“子流”上轮询

我在文件中添加了一个“#”以进行一些更改并在轮询后触发构建。在那次更改之后,我创建了将被插件检测到的基线。

它似乎工作正常,直到出现导致构建失败的错误:

[CCUCM] Getting snapshotview
[CCUCM] Updating view using all modules.
java.io.IOException: Error while retrieving changes
    at net.praqma.hudson.remoting.deliver.GetChanges.invoke(GetChanges.java:49)
    at net.praqma.hudson.remoting.deliver.GetChanges.invoke(GetChanges.java:21)
    at hudson.FilePath.act(FilePath.java:981)
    at hudson.FilePath.act(FilePath.java:959)
    at net.praqma.hudson.scm.CCUCMScm.generateChangeLog(CCUCMScm.java:563)
    at net.praqma.hudson.scm.CCUCMScm.checkout(CCUCMScm.java:246)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1265)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:622)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:528)
    at hudson.model.Run.execute(Run.java:1759)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:89)
    at hudson.model.Executor.run(Executor.java:240)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1949)
    at java.lang.String.substring(String.java:1916)
    at net.praqma.clearcase.ucm.entities.Activity$Parser.parse(Activity.java:275)
    at net.praqma.hudson.remoting.deliver.GetChanges.invoke(GetChanges.java:43)
    ... 13 more
Processing baseline
[CCUCM] Build result: FAILURE
[CCUCM] Cancelling the deliver. Cancelling
Failed.
[CCUCM] Performing common post build steps
[CCUCM] Build failed.

如果我在更改后未创建新基线,并且在“初始”级别更改旧基线,则构建成功但未交付更改,因为旧基线不包含最后的更改。

有人知道这个问题吗?

【问题讨论】:

    标签: jenkins integration clearcase clearcase-ucm baseline


    【解决方案1】:

    您的问题可能有多种原因,但从子流传送到目标集成流似乎存在问题。 要找出导致问题的原因,您可能需要手动执行 Clearcase 交付操作,即从源流上的视图启动交付到目标流。尝试使用类似的条件:

    -快照视图

    -快照根视图文件夹的路径长度相同(以防万一您在 Windows 上达到 255 个字符的限制)

    可能的原因有:

    1) 无法交付元素,因为它无法在目标视图中检出。这可能是由于权限问题,因为它已经在流中签出但在另一个视图中,或者由于某些元素的路径超过 255 个字符。

    2) 元素在交付时需要手动合并。

    如果您使用的插件版本早于 1.2.0,您可以在 DEBUG 模式下设置日志级别 ccucm_loglevel。如果你使用 1.2.0 或更高版本的插件,你可能会发现另一种调查方法也是设置

    【讨论】:

    • Jenkins ClearCase UCM 插件在作业工作区中创建了一个快照视图,但我不完全了解触发构建时它在做什么。当 Jenkins 在我的开发流上检测到新基线时,他似乎正在扫描集成流工作区,但没有检测到开发流更改以在集成中交付它们。您知道 jenkins 在子流轮询中配置时在做什么吗?
    • 通常它会从源流到目标流执行“cleartool Deliver -baseline”。您是否检查了源流上基线的提升级别?它处于 REJECTED 级别,插件不应该执行交付。此外,如果您可以访问更多日志以查看已完成的操作,那就太好了。除了 Jenkins 日志,您可能还想查看 Clearcase 日志。它们可以在 /var/adm/atria/log 中找到(对于 Linux / Unix)。您必须在视图服务器上查看它们以获取 view_server 日志。 vob 服务器上的 albd_log 也很有用。
    • 当我在此更改之后执行更改和“cleartool mkbl”时,在发生更改的组件上创建的基线处于初始级别。 Jenkins 正在检测这个基线,但不能像控制台输出中所说的那样“检索更改”。在日志记录中,插件似乎想要取消不存在的交付,从而引发错误。我在这段代码中找到了错误消息:github.com/jenkinsci/clearcase-ucm-plugin/blob/master/src/main/… 但我可以检索到什么可以触发异常。
    • 在 jenkins 新版本 1.599 中修复。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多