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

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


当前回答

在我目前的组织中,我们不在master中这样做,但在开发和发布/分支中都这样做(我们使用Git Flow),以生成快照构建。

当我们使用多分支管道时,我们在Jenkinsfile中使用when{}语法…

stage {
    when { 
        expression { 
            branch 'develop'
        }
    }
}

这篇博客文章详细介绍了这一点: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline

其他回答

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

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

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

在我目前的组织中,我们不在master中这样做,但在开发和发布/分支中都这样做(我们使用Git Flow),以生成快照构建。

当我们使用多分支管道时,我们在Jenkinsfile中使用when{}语法…

stage {
    when { 
        expression { 
            branch 'develop'
        }
    }
}

这篇博客文章详细介绍了这一点: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline

管理Jenkins/配置系统/GitHub服务器 在jenkins job / git凭证和分支说明符上(给你想要查找的分支推送)

在github上的Webhook

对于GitLab,使用以下步骤:

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

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