即使没有存储库更改,Jenkins也会不断构建在Windows slave上

时间:2012-01-20 11:00:44

标签: git jenkins

我有两个Jenkins工作绑定到一个特定的Windows奴隶,不断构建。它们设置为使用cron表达式* * * * *轮询Git SCM,但即使Git仓库中没有任何更改,也会每分钟构建一次。在两个作业的Git轮询日志中,我看到以下内容:

Started on 20-Jan-2012 10:57:10
Using strategy: Default
[poll] Last Build : #4179
[poll] Last Built Revision: Revision 581837483fc583126d8fde7760c88062d3aa2cfa (origin/HEAD, origin/master)
Last build was not on tied node, forcing rebuild.
Done. Took 8 ms
Changes found

特别是Last build was not on tied node, forcing rebuild.这句话似乎很可疑。谷歌搜索这个词时我可以看到一些类似的报道,但没有解决方案。

其他Windows奴隶似乎没有遇到同样的问题,因此我不确定这纯粹是Windows问题。

有没有人知道可能导致此问题的原因或我可以做些什么来解决它?

3 个答案:

答案 0 :(得分:0)

你是否完全确定这份工作是否与奴隶有关?

作为一个类似的问题的解决方案,消息“上次构建不在绑定节点上,强制重建”,建议将作业绑定到从节点:https://bugs.eclipse.org/bugs/show_bug.cgi?format=multiple&id=334069

答案 1 :(得分:0)

好的,我刚刚在以下的帮助下为我们的构建服务器(运行Hudson)解决了这个问题: http://web.archiveorange.com/archive/v/OkDctYWEcMGCgTIDY2Av

  

将作业绑定到从属配置时,在配置文件中   以下是

<assignedNode>hudson-slave1</assignedNode>
  

构建完成后,将创建一个文件

<job>/builds/<build-no>/build.xml. 
  

此文件有

<builtOn>hudson-slave1</builtOn>
  

我注意到一件奇怪的事情。如果你看到我打印出来的标签   说“hudson-slave1”属于节点“hudson-slave1”。   奇怪的是,节点“hudson-slave1”有两个标签“build2”和   “哈德森-SLAVE2”。没有这样的标签“hudson-slave1”(见第一篇)   画面)。**

在我们的案例中,构建与节点“BUILDDEV3”相关联,该节点的标签为“主要构建者”。

我将节点名称添加到标签列表中(通过将标签列表更改为“major-builders BUILDDEV3”)并立即开始表现。

似乎正在将节点名称与标签进行比较,以确定最后一次构建是否在绑定节点上。

这可能是一个错过的错误,因为我假设,如果你绑定一个标签,那么它将起作用,然后标签将与标签进行比较。

因此,总而言之,将节点名称添加到标签列表中,它应该可以正常工作。

答案 2 :(得分:0)

我刚刚遇到了Hudson v2.2.1的这个问题(是的,我知道它是一个古老的版本)。我不确定是什么触发了失控的构建,因为没有配置更改似乎与失控的开始一致。然而,我找到了(附加的)解决办法。

在作业配置页面上,有一个选项(复选框)用于&#34;限制此项目可以运行的位置&#34;,有两个(单选按钮)选项来选择限制方式:&#34 ;节点和标签菜单&#34;或者&#34;高级节点和标签表达式&#34;,必须选择其中一个。

当选择第二个选项&#34;高级节点和标签表达式&#34;时,会出现一个自由​​格式文本字段,允许您输入组合来自

的字词的逻辑表达式
  • 一组从属节点名称(&#34; BUILDDEV3&#34;在@Campey的回答中), union
  • 所有奴隶标签值的集合(&#34;主要建设者&#34;在@Campey的回答中)。

例如,major-builders && !BUILDDEV3

当选择第一个选项&#34;节点和标签菜单&#34;时,会出现一个选择列表,允许您从包含以下术语的列表中选择一个值:

  • 一组从属节点名称, union
  • 所有从属标签值的列表 union
  • 当前在&#34;高级节点和标签表达式中的任何作业中定义的所有表达式的集合&#34;机构。

请注意,从属节点名称集本身被视为从属标签。 @Campey的建议是不要弄乱选择机制,而是明确地将从属节点名称添加到每个从属的标签列表中。这将起作用,但是,如果重命名节点,则会产生潜在的副作用。我没有尝试过,但它甚至可能导致重复项显示在调度选择器的选择项列表中。我更愿意避免冗余信息捕获。

我的解决方法是永远不要选择隐式的从属节点名称,而只使用选择机制中只包含标签的标签或表达式,无论您选择哪一个。这永远不会是多余的。

例如,要表达前面给出的示例:major-builders && !BUILDDEV3,其中&#34;主要建设者&#34;是一个标签和&#34; BUILDDEV3&#34;是节点名称,必须向节点添加唯一的节点标签&#34; BUILDDEV3&#34;例如&#34; NOTHERE&#34;,然后使用表达式major-builders && !NOTHERE