Jenkins:尽管没有变化,SCM仍会触发持续构建

时间:2013-11-15 18:14:50

标签: version-control build triggers jenkins

我们遇到一个问题,尽管没有代码更改,但SCM正在触发构建。 SCM每15分钟轮询一次更改,并且只有在找到更改时才会触发构建。

以下是连续SCM轮询日志的几个示例。

Started on Nov 15, 2013 11:47:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (origin/develop)
Done. Took 0.23 sec
Changes found

Started on Nov 15, 2013 11:17:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (origin/develop)
Done. Took 0.22 sec
Changes found

Started on Nov 15, 2013 11:02:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (origin/develop)
Done. Took 0.2 sec
Changes found

正如您所看到的那样,修订版本与

的版本相同
Git Build Data

Revision: 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 origin/develop

这些工作在几天前表现得如预期。我们所知道的任何事情都没有改变我们的环境造成这种情况。

我升级到最新版本的Jenkins(1.539),并在昨晚安装了插件,以解决此问题,但行为仍在继续。

6 个答案:

答案 0 :(得分:13)

由于SCM的变化,我刚刚遇到Jenkins,即使没有变化,也没有打开轮询。这可能与您的方案不同,但我认为它可能仍然有助于分享我的解决方案。

将Out项目配置为使用分支说明符*/integration进行构建,就像我们所有其他集成构建一样。但是,在查看了我们的原始git repo上的所有分支之后,我看到有两个分支与*/integration说明符匹配。看起来开发人员必须错误地推送到一个名称非常相似的新分支:

$git branch --remote | grep integration
  origin/integration
  origin/origin/integration

为我解决此问题的解决方案是使用refs/heads/integration完全指定分支。我认为它也可以简单地删除重复的违规分支,但通过准确指定分支,我可以避免将来遇到同样的问题。

我不确定这是否与您的问题原因相同,但这对我有用,并希望在这种情况下能为其他人工作。

答案 1 :(得分:6)

似乎可以使用最新的Jenkins GIT plugin版本2.0重现。

降级到版本1.x可能会解决问题。虽然你也应该从旧备份中恢复Jenkins配置,因为GIT插件版本1.x似乎不能使用新的2.0配置方案。

This thread建议启用“快速远程轮询”作为解决方法。在2.0版中,我认为它是“使用工作空间强制轮询”。

引用Jenkins问题:https://issues.jenkins-ci.org/browse/JENKINS-20767

答案 2 :(得分:2)

我遇到了同样的问题。

为我修复的是注意到Git Polling Log看起来像这样:

Started on [date]
Using strategy: Default
[poll] Last Built Revision: Revision [commit#] (origin/develop)
[...]
Found 12 remote heads on ssh://[...]/repo.git
[poll] Latest remote head revision on refs/heads/feature/foo is: [commit#] - already built by 1414
[poll] Latest remote head revision on refs/heads/feature/bar is: [commit#] - already built by 2365
[poll] Latest remote head revision on refs/heads/feature/baz is: [commit#] - already built by 1489
[poll] Latest remote head revision on refs/heads/feature/qux is: [commit#] - already built by 1413
[poll] Latest remote head revision on refs/heads/develop is: [commit#] - already built by 2368
[poll] Latest remote head revision on refs/heads/master is: [commit#]
Done. Took 0.16 sec
Changes found

请注意,master的行不会说已经构建了#39;。我构建了master分支并修复了问题。

答案 3 :(得分:0)

小心svn重定向,在我的情况下我有同样的情况Jenkins无法检测svn是否没有变化,并且总是触发。

问题在于我的jenkins svn配置中有这个url:

https://xxxx.yyy.es:443/svn/myproject/trunk及其重定向到

http://xxxx.yyy.es:8008/svn/myproject/trunk(我不知道为什么)

Jenkins必须配置最后一个URL才能正确检测svn更改。

这是我的问题已解决。

http://antuansoft.blogspot.com.es/2014/10/jenkins-pool-smc-always-detect-changes.html

答案 4 :(得分:0)

我今天遇到了同样的问题。当我在构建完成时添加"删除工作区时,它开始发生了#34;发布任务。我删除了该任务,似乎解决了这个问题。

答案 5 :(得分:0)

删除管道末端的清理步骤对我来说很有效:

cleanup {
  cleanWs()
}