1

我在堆栈上找不到我的问题的答案,如果它是重复的,对不起。

假设我在 Github 上有 repo A,我的 Jenkinsfile 在哪里,在 Github 上有 repo B,我的所有源代码都在哪里。

对于我的工作,我从 repo 'A' 设置了'来自 SCM 的管道脚本',添加了'轮询忽略某些路径中的提交',包含的区域仅包含此 Jenkinsfile。

在 Jenkinsfile 中,我使用checkout插件来拉取 repo 'B' 并添加了PathRestriction扩展。此外,我已将 pollSCM 添加到值为“H/5 * * * *”的“触发器”中。

但是,每当我在没有对此 Jenkinsfile 进行任何更改的情况下向 repo 'A' 提交内容时,都会触发构建。

我的问题是:当 repo 'A' 中的 Jenkinsfile 或我的源代码发生更改时,如何将我的构建设置为仅触发?

4

1 回答 1

0

有两种方法可以仅在特定文件更改时触发构建。

 1. 脚本挂钩:在 git 服务器端,创建一个挂钩来检查最后一次提交是否更改了 Jenkinsfile,如果为真,则向配置了“远程触发构建”的詹金斯作业发送帖子。

 2. 提交:只使用 Jenkinsfile 创建一个 repo,所以这个 repo 上的每次提交都会对 Jenkinsfile 进行更改。

我强烈建议您改变方法并使用Jenkins 共享库,这是在多个项目/作业之间共享和管理管道的更好方法

于 2019-11-22T14:56:10.473 回答