如何从 jenkins 作业的 scm 轮询中排除 jenkins 文件

Posted

技术标签:

【中文标题】如何从 jenkins 作业的 scm 轮询中排除 jenkins 文件【英文标题】:How to exclude jenkins files from scm polling on a jenkins job 【发布时间】:2017-12-05 09:36:37 【问题描述】:

我正在使用声明性管道语法。我的 jenkins 文件存储在 git hub 存储库中,与要构建的代码分开,因此我设置了 jenkins 作业以从 scm 获取管道脚本,并在 master 分支上选择我的 git repo。 在我的管道脚本中,我使用 checkout 步骤从另一个源(在我的例子中是一个 RTC 存储库,但我想另一个 git 存储库将是相同的场景)获取我的真实代码。 一切正常,如果我能够通过轮询 scm 来触发构建,它将在两个存储库中的任何一个发生更改时启动(我会说是设计上的)。

我的问题是,如果更改发生在 jenkins 文件存储库中,我想避免触发构建,但仅当它发生在包含实际代码的存储库中时。在签出步骤中这很容易,因为有一个选项可以启用/禁用单个轮询,但在作业本身中,我找不到任何方法来跳过对 jenkins 文件存储库的轮询。

我尝试了附加行为“在提交通知时不触发构建”,但它似乎没有效果,至少不是我想要的方式。

【问题讨论】:

【参考方案1】:

可能的解决方法:

如果 webhook 未在 GitHub 组织级别配置,请为 Jenkinsfile 所在的存储库禁用 webhook

在 Jenkins 作业配置中,在 Pipeline > Additional Behaviours > Add 下,选择 Polling ignores commits in certain路径。然后,在 Excluded Regions 文本框中,指定 Jenkinsfile 路径或 .* 以排除所有内容。

【讨论】:

不幸的是,“轮询忽略提交...”行为不适用于多分支管道。

以上是关于如何从 jenkins 作业的 scm 轮询中排除 jenkins 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从长轮询中获取响应数据?

在轮询 SCM 时将 ssh-agent 与 jenkins 一起使用

将单个 Jenkins 发布作业配置为使用 Perforce 作为 SCM 从主干或分支发布

Jenkins定时构建和轮询SCM设置说明

jenkins学习14-构建触发器之定时构建和轮询 SCM

jenkins学习14-构建触发器之定时构建和轮询 SCM