我正在尝试使用GitHub为项目设置Jenkins-ci。我已经给Jenkins安装了合适的插件。我希望Jenkins只在项目中有人推动master时运行构建脚本。到目前为止,我已经能够设置一个构建将触发任何时候任何人推到任何地方,但这太广泛了。我已经用Git上的post-receive service钩子做到了这一点。

我读过Jenkins的维基和一些教程,但这个细节缺失了……也许这和民意调查有关?或者应该在Git端进行工作,以便Git只在master更改时触发Jenkins ?


当前回答

与其远程触发构建,不如将Jenkins项目配置更改为通过轮询触发构建。

Jenkins可以基于固定的内部或URL进行投票。如果该分支没有更改,则您希望跳过后者。具体细节如下 在文档中。实际上,您只需要选中“Poll SCM”选项,将日程部分留空,并设置远程URL为JENKINS_URL/job/name/polling。

如果您有一个安全的Jenkins环境,那么与/build不同,/polling URL需要身份验证。这里有详细说明。例如,我有一个GitHub Post-Receive钩子到用户名:apiToken@JENKIS_URL/job/name/polling。

其他回答

对于GitLab,使用以下步骤:

转到项目的设置→Web钩子 从Jenkins项目中输入“Build Now”URL作为推送事件URL: 例如http://server.com/jenkins/job/project_name/build?delay=0sec 单击“添加Web钩子”,然后测试钩子

然后,每当你提交到存储库时,web钩子就会被触发,并创建一个构建。确保在每次构建之前将Jenkins工作区设置为删除工作区,以便获得新代码的新副本。

使用pull request builder插件: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin

这真的很简单。然后你可以设置GitHub webhook来触发构建。

与其远程触发构建,不如将Jenkins项目配置更改为通过轮询触发构建。

Jenkins可以基于固定的内部或URL进行投票。如果该分支没有更改,则您希望跳过后者。具体细节如下 在文档中。实际上,您只需要选中“Poll SCM”选项,将日程部分留空,并设置远程URL为JENKINS_URL/job/name/polling。

如果您有一个安全的Jenkins环境,那么与/build不同,/polling URL需要身份验证。这里有详细说明。例如,我有一个GitHub Post-Receive钩子到用户名:apiToken@JENKIS_URL/job/name/polling。

与Git无关,但下面我将帮助使用Mercurial详细配置Jenkins作业。它可能会帮助其他有类似问题的人。

安装URL触发器插件 进入作业配置页面,选择Poll SCM选项。设置为* * * * * 检查选项:[URLTrigger] -使用URL轮询。 现在您可以选择一些选项,如修改日期更改,URL内容等。 在选项中,选择“URL内容更改”,选择第一个选项“监控内容更改” 保存更改。

现在,通过一些测试签入触发对Mercurial存储库的一些更改。

查看Jenkins作业现在通过检测SCM更改来运行。当构建由于Mercurial的更改而运行时,您将看到文本Started by an SCM发生更改。Else,手动启动它的用户。

我也有同样的问题。这救了我

要根据有效负载'ref'标签进行过滤,jenkins pipeline job中设置了可选过滤器。

然后对'ref'变量应用可选过滤器,只允许主分支

或者表达可以很简单

参考/头/大师

现在我的詹金斯工作是触发只有当有一个提交到主