我们看到在Jenkins多分支管道项目上触发重复构建。通常使用来自使用此插件的Bitbucket的推送通知来触发构建:https://marketplace.atlassian.com/plugins/com.nerdwin15.stash-stash-webhook-jenkins/server/overview在Jenkins多分支管道上触发的重复构建
但是,我们现在看到'double'构建出于某种原因。如果您查看触发的两个构建版本,则由“提交通知”触发,另一个由“分支索引”触发。
什么导致分支索引,为什么它触发构建?我们不添加或删除分支,这只是一个正常的提交/推送。
为了使它更复杂,它不会一直发生。有一次,我认为这只发生在合并后,但事实并非如此。此外,阻止它的一种方法似乎是删除作业的构建历史记录(这显然不是理想的)。
我们正在从管道脚本任务设置属性,但只废旧构建:
properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '20'))])
混乱的另一个来源似乎是,如果一个人应该有顺序启用轮询(无间隔)推送通知为Git插件工作。 Git插件的文档表明这是必需的,确实看起来是用于'普通'管道构建,但似乎并不需要多分支管道构建。 这是正确的吗?从詹金斯的Git插件维基:
这将扫描的所有作业:
有建立触发器>民意测验SCM启用。没有轮询时间表是 必需的。被配置为在指定的URL上构建存储库 被配置为构建可选的指定分支或提交ID 对于满足这些条件的作业,轮询将立即触发 。如果轮询发现值得构建的变化,则构建将会触发 。
我们使用的是Bitbucket 4.8.4和Jenkins 2.30(以及所有最新的管道插件)。
这只是一个猜测:如果存储库服务器上的时钟与Jenkins服务器上的时钟相比,我已经看到类似的问题。您可能会尝试添加安静期(https://jenkins.io/blog/2010/08/11/quiet-period-feature/)。 – jherb
@jherb感谢您的信息 - 但我找不到如何在Jenkinsfile的管道中创建安静期(我们需要在脚本上设置它,因为我们正在设置其他构建属性 - 这将覆盖其他任何设置集通过图形用户界面) –
我想你可以像在这个例子中使用'sleep 60'这样的东西:https://jenkins.io/doc/pipeline/examples/#timestamper-wrapper(在你调用scm或git命令之前) – jherb