我在堆栈上找不到问题的答案,抱歉,如果它是重复的。
假设我在 Github 上有 repo A,我的 Jenkinsfile 在那里,在 Github 上有 repo B,我所有的源代码都在那里。
对于我的工作,我从存储库"A"中设置了"来自 SCM 的管道脚本",添加了"轮询忽略某些路径中的提交",其中包含的区域仅包含此 Jenkinsfile。
在 Jenkinsfile 中,我正在使用结帐插件来拉取带有添加 PathRestricted 扩展的存储库"B"。 此外,我还将 pollSCM 添加到值为"H/5 * * * *"的"触发器"中。
但是每当我向 repo 'A' 提交一些东西而没有对这个 Jenkinsfile 进行任何更改时,无论如何都会触发构建。
我的问题是:如何将我的构建设置为仅在存储库"A"中的 Jenkinsfile 或我的源代码更改时触发?
有两种方法可以在特定文件更改时触发生成。
1. 脚本钩子:在 git 服务器端,创建一个钩子,用于检查上次提交是否更改了 Jenkinsfile,如果为 true,则向配置有"远程触发构建"的 Jenkins 作业发送帖子。
2. 提交:仅使用 Jenkinsfile 创建一个存储库,因此此存储库上的每个提交都将是对 Jenkinsfile 的更改。
我强烈建议您改变方法并使用 Jenkins 共享库,这是跨多个项目/作业共享和管理管道的更好方法