Jenkins 多分支管道作业的分支索引是否应该由Webhook自动触发?

Jenkins 多分支管道作业的分支索引是否应该由Webhook自动触发?,jenkins,multibranch-pipeline,Jenkins,Multibranch Pipeline,我已经在Jenkins中设置了许多运行2.46.2 LTS、Branch API 2.0.8、GitHub Branch Source 2.0.5和Pipeline Multibranch 2.14的多分支管道作业,并且刚刚注意到,来自GitHub的webhook调用似乎不会触发分支索引(以及对旧分支的任何清理)。只有当有人手动单击“立即扫描存储库”链接,或者重新保存Jenkins中的作业配置时,才会触发该命令。我使用扫描存储库日志页面中显示的时间戳作为分支索引发生时间的指示 看起来新的分支或对

我已经在Jenkins中设置了许多运行2.46.2 LTS、Branch API 2.0.8、GitHub Branch Source 2.0.5和Pipeline Multibranch 2.14的多分支管道作业,并且刚刚注意到,来自GitHub的webhook调用似乎不会触发分支索引(以及对旧分支的任何清理)。只有当有人手动单击“立即扫描存储库”链接,或者重新保存Jenkins中的作业配置时,才会触发该命令。我使用扫描存储库日志页面中显示的时间戳作为分支索引发生时间的指示

看起来新的分支或对现有分支的更改正在被正确地检测和构建,因此源代码管理GitHub的Webhook可以正常工作,但令人惊讶的是,这并没有触发分支索引,从而导致旧的分支清理。我只是无法从中判断这是否是正确的和预期的行为,或者我的设置中是否有不正确的地方

我注意到,定期运行设置的帮助文本显示:

某些类型的文件夹在收到外部事件后会立即自动重新编制索引。例如,多分支项目在收到SCM更改通知时,将重新检查其SCM存储库中的新分支、已删除分支或已修改分支。推送通知可以根据每个分支源使用的SCM插件进行配置。然而,这样的通知有时可能不可靠,或者Jenkins甚至可能没有运行来接收它们。在某些情况下,甚至不可能立即通知,例如,因为Jenkins位于防火墙后面,只能轮询外部系统

此触发器允许定期回退,但在必要时。如果在指定的时间间隔内未执行索引,则将安排索引。例如,在多分支项目的情况下,如果源代码管理系统未配置为推送通知,请设置大多数人会选择的15分钟到1小时之间的短间隔。如果源代码管理系统配置为推送通知,则将与丢失推送通知的最大可接受延迟相对应的间隔设置为当天的最后一次提交。后续提交无论如何都会触发索引,并导致提交被拾取,因此大多数人会在4小时到1天之间拾取

这当然意味着多分支管道作业的索引应该由分支事件重新触发,例如,通过webhook从GitHub推送,但我的索引日志上的时间戳似乎与此不符


那么,我观察到的是预期的行为吗?如果是这样,并且我希望定期清理旧分支,是否需要选中扫描存储库触发器下的定期运行复选框?或者我的设置有什么问题,使其无法正常工作?

我依赖定期运行,如果没有其他方式,1清理分支,2为全新回购创建容器作业。我使用Bitbucket Team/Project,Github组织的Bitbucket版本,这基本上为组织中的每个回购创建了一个多分支管道。我定期运行,如果没有其他设置为每天运行一次为每个项目

这些东西似乎可以通过webhook实现,但根据我的经验,它们不起作用。

根据:

默认情况下,Jenkins不会自动为存储库重新编制分支添加或删除的索引,除非使用组织文件夹,因此,配置多分支管道以定期在配置中重新编制索引通常很有用


我希望使用AWS lambda函数来检测新的PR事件,然后触发重新索引,而不是定期执行此操作。可能吗?知道怎么做吗?我面临着一个类似的问题,我有一个指向Lambda函数的github webhook,而不是Jenkins服务器/github webhook。因此,詹金斯无法发现新创建的公关分支机构。我必须手动扫描回购协议才能发现它。一旦发现分支,我的Lambda就能够正确地触发构建。所以我的问题是——如何在Python中触发Jenkins的分支重新索引或分支发现?或者有什么环境可以做到这一点?没有指向Jenkins服务器的github webhook?