只有SCM Trigger,Tycho构建在Jenkins上失败

时间:2013-08-14 12:27:05

标签: maven jenkins eclipse-rcp tycho maven-reactor

Jenkins,Maven和Tycho有一点奇怪的问题,很难找出谁是罪魁祸首。

所有SCM触发的构建都失败,但所有手动触发的构建都成功。

詹金斯版本:Jenkins ver。 1.527
Maven版本:3.05

我有一个模块化的tycho构建:

<modules>
    <module>../main.plugin.test</module>
    <module>../main.plugin.internationalization.at</module>
    <module>../crud.plugin</module>
    <module>../rest.plugin</module>
    <module>../main.plugin</module>
    <module>../main.feature</module>
    <module>../product</module>
    <module>../target-definition</module>
    <module>../rest.plugin.test</module>
</modules>

Jenkins被配置为带有模块的简单maven构建。

它只执行:

-X clean deploy

当触发SCM-Build时,某些模块不会构建。

enter image description here

当我手动构建它时,一切都很好:

enter image description here

此行为是一致的。我已经尝试了

  • 切换到其他Maven版本(3.05 / 3.04)
  • 在构建之前删除整个工作区
  • 清理所有来源的结帐
  • -X deploy(不干净)
  • 的运行

任何数量的手动调用都会成功。任何数量的scm触发器都会失败。

在(工作)之前,两个Maven日志看起来完全相同:

[INFO] Reactor Build Order:
[INFO] 
[INFO] client-master
[INFO] crud-plugin
[INFO] main-plugin
[INFO] ------------.main.plugin.test
[INFO] ------------.main.plugin.internationalization.at
[INFO] rest-plugin
[INFO] main-plugin
[INFO] ------------.product
[INFO] target-definition
[INFO] ------------.rest.plugin.test

和(失败):

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] main-plugin
[INFO] ------------.plugin.test
[INFO] ------------.main.plugin.internationalization.at
[INFO] rest-plugin
[INFO] main-plugin
[INFO] ------------.product
[INFO] ------------.rest.plugin.test

因此最终的错误信息是:

Caused by: java.lang.IllegalStateException: ------------..client:------------..crud.plugin:eclipse-plugin:1.0.0-SNAPSHOT does not provide an artifact with classifier 'null'

客户特定的模块名称将替换为------------。在这个问题上。

1 个答案:

答案 0 :(得分:2)

我多次听到Tycho建立在Jenkins身上的模糊问题。这些问题的原因似乎是一些Jenkins插件触发了这些构建挂钩到Maven生命周期中,并且这与Tycho在Maven内部的作用发生了某种程度的碰撞。

对于您所描述的问题,您使用的Jenkins插件似乎正在更改模块构建顺序。对于正常的Maven构建(其中所有依赖项都在POM中声明),这可能没问题,但是对于Maven / Tycho构建可能会失败,其中依赖项是由Tycho在构建期间计算的。

要避免此问题,您应该以更接近正常命令行构建的方式触发Maven构建。我发现 Maven Integration插件中的 Invoke顶级Maven目标构建步骤没有问题。