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

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


当前回答

我希望这篇文章对您有所帮助:如何在Git提交上触发Jenkins构建

这只是使用curl使用Git提供的Git钩子触发Jenkins作业的问题。

命令curl http://localhost:8080/job/someJob/build?delay=0sec可以运行Jenkins作业,其中someJob是Jenkins作业的名称。

在隐藏的。git文件夹中搜索“hooks”文件夹。重命名“post-commit”。样本文件,以“后提交”。用记事本打开它,删除“:Nothing”行,并将上面的命令粘贴进去。

就是这样。无论何时执行提交,Git都会触发文件中定义的提交后命令。

其他回答

一般Webhook触发器插件可以配置过滤器来实现这一点。

当配置为

名为ref的变量和表达式$.ref。 一个带有文本$ref的过滤器和像^refs/heads/master$这样的过滤器表达式。

那这项工作就会触发每一次突破。没有投票。

你可能需要webhook提供更多的值来实际执行构建。只需使用JSONPath添加更多变量,以选择所需的变量。

这里有一些用例:https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd

您需要指定分支。默认情况下,它会监听任何内容。请参阅博客文章Hudson: Git和Maven插件。

从0.5版开始,针对Jenkins的GitHub插件可以在将更改推送到GitHub时触发构建。

对于GitLab,使用以下步骤:

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

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

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

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

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

或者表达可以很简单

参考/头/大师

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