我正在尝试为使用 GitHub 的项目设置 Jenkins-ci。我已经使用适当的插件设置了 Jenkins。我希望 Jenkins 仅在项目中有人推送到 master 时才运行构建脚本。到目前为止,我已经能够设置它,以便在任何人推送到任何地方时都会触发构建,但这太宽泛了。我已经通过 Git 上的接收后服务挂钩完成了这项工作。
我已经阅读了 Jenkins wiki 和一些教程,但是缺少这个特定的细节……这可能与轮询有关吗?还是应该在 Git 端完成工作,以便 Git 仅在master更改时触发 Jenkins?
master
正如 gezzed 在他的评论中已经指出的那样,同时有一个很好的解决方案(在 Polling must die:triggering Jenkins builds from a Git hook 中描述):
将 Jenkins 作业的构建触发器设置为 Poll SCM ,但不要 指定 时间表。
创建 GitHub 接收后触发器以通知 URL
http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely>
这将触发轮询指定 Git 存储库的所有构建。
然而,轮询实际上检查是否有任何东西被推送到使用的分支。
它完美地工作。