Tim*_*ter 6 git bitbucket jenkins bitbucket-server jenkins-pipeline
我们看到Jenkins multibranch管道项目触发了重复构建.构建通常使用来自Bitbucket的推送通知使用此插件触发:https://marketplace.atlassian.com/plugins/com.nerdwin15.stash-stash-webhook-jenkins/server/overview
但是,由于某种原因,我们现在看到"双重"构建.如果查看触发的2个构建,一个由"提交通知"触发,另一个由"分支索引"触发.
是什么导致分支索引,为什么它会触发构建?我们不是添加或删除分支,它只是一个正常的提交/推送.
为了使它更复杂,它不会一直发生.有一次,我认为这只是在合并之后才发生,但事实并非如此.另外,阻止它的一种方法似乎是删除作业的构建历史(这显然不是理想的).
我们在管道脚本中设置作业属性,但仅丢弃旧构建:
properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '20'))])
Run Code Online (Sandbox Code Playgroud)
混淆的另一个原因似乎是,如果一个人应该启用轮询(没有间隔),以便推送通知适用于Git插件.Git插件的文档表明这是必需的,实际上似乎是"普通"管道构建,但似乎不需要多分支管道构建. 它是否正确? 来自Jenkins Git插件维基:
这将扫描以下所有作业:
具有构建触发器>已启用轮询SCM.不需要投票时间表.配置为在指定的URL上构建存储库配置为构建可选指定的分支或提交ID对于满足这些条件的作业,将立即触发轮询.如果轮询发现值得构建的更改,则会依次触发构建.
我们正在使用Bitbucket 4.8.4和Jenkins 2.30(以及所有最新的管道插件).
正如另一个答案已经建议的那样,您想要的是“不允许并发构建”选项。您可以通过Jenkinsfile
:
properties ([
buildDiscarder(logRotator(artifactNumToKeepStr: '5', daysToKeepStr: '15')),
disableConcurrentBuilds()
])
Run Code Online (Sandbox Code Playgroud)
编辑:
这不是此处实际问题的解决方案。但它似乎仍然对某些人有帮助,因此,只要我们没有更好的答案,我就将其保留。
我也在使用多分支管道,我可能可以为您提供一些信息。
当您在Jenkins中创建“GitHub组织”作业并添加相关Git信息时,您还需要选择Jenkins构建的触发方式和频率:
Jenkins 将按照您设置的频率扫描您配置的 GitHub 组织下的存储库。
然后,Jenkins 一旦发现有新的提交被提交,就会自动触发构建(只要配置了 Jenkins-Git webhook)。
当分支索引发生时,它也会触发构建。
在其他 Jenkins 作业风格中,您可以配置“不允许并发构建”,但我找不到多分支作业风格的此设置。
我希望这能让我们对此事有所了解。
归档时间: |
|
查看次数: |
3797 次 |
最近记录: |