我正在尝试使用GitHub为项目设置Jenkins-ci。我已经给Jenkins安装了合适的插件。我希望Jenkins只在项目中有人推动master时运行构建脚本。到目前为止,我已经能够设置一个构建将触发任何时候任何人推到任何地方,但这太广泛了。我已经用Git上的post-receive service钩子做到了这一点。
我读过Jenkins的维基和一些教程,但这个细节缺失了……也许这和民意调查有关?或者应该在Git端进行工作,以便Git只在master更改时触发Jenkins ?
我正在尝试使用GitHub为项目设置Jenkins-ci。我已经给Jenkins安装了合适的插件。我希望Jenkins只在项目中有人推动master时运行构建脚本。到目前为止,我已经能够设置一个构建将触发任何时候任何人推到任何地方,但这太广泛了。我已经用Git上的post-receive service钩子做到了这一点。
我读过Jenkins的维基和一些教程,但这个细节缺失了……也许这和民意调查有关?或者应该在Git端进行工作,以便Git只在master更改时触发Jenkins ?
当前回答
从0.5版开始,针对Jenkins的GitHub插件可以在将更改推送到GitHub时触发构建。
其他回答
与其远程触发构建,不如将Jenkins项目配置更改为通过轮询触发构建。
Jenkins可以基于固定的内部或URL进行投票。如果该分支没有更改,则您希望跳过后者。具体细节如下 在文档中。实际上,您只需要选中“Poll SCM”选项,将日程部分留空,并设置远程URL为JENKINS_URL/job/name/polling。
如果您有一个安全的Jenkins环境,那么与/build不同,/polling URL需要身份验证。这里有详细说明。例如,我有一个GitHub Post-Receive钩子到用户名:apiToken@JENKIS_URL/job/name/polling。
与Jenkins的持续集成,在代码从Git命令/ GUI推送到存储库后:
Create a job in Jenkins with only job name and select type of the project freestyle. Click OK. The next page doesn't add anything - just click Save. Go to the your local Git repository where you have the source code and navigate to the .git/hooks folder. The hooks folder contains the few files. Check for the "post-commit". If not present, create a file, "post-commit" without a file extension: C:\work\test\\.git\hooks\post-commit Edit the "post-commit" file with the below command. Make sure it is present in your local source code hooks folder. curl -u userName:apiToken -X POST http://localhost:8080/jenkins/job/jobName/build?token=apiToken Example: curl -u admin:f1c55b3a07bb2b69b9dd549e96898384 -X POST http://localhost:8080/jenkins/job/Gitcommittest/build?token=f1c55b3a07bb2b69b9dd549e96898384 5. userName: Jenkins user name jobName: Job name of the build apiToken: To get your API token, go to your Jenkins user page (top right in the interface). It is available in the "Configure" menu on the left of the page: "Show API token" Make changes in your source code and commit the code to repository. Your job, http://localhost:8080/jenkins/job/Gitcommittest/, should be building.
正如gezzed在他的评论中已经提到的,同时有一个很好的解决方案(在Polling must die中描述:从Git钩子触发Jenkins构建):
将Jenkins作业的构建触发器设置为Poll SCM,但不要指定时间表。 创建一个GitHub接收后触发器来通知URL http://yourserver/jenkins/git/notifyCommit?url=< Git存储库的URL >?Token =<从git获取Token来远程构建> 这将触发轮询指定Git存储库的所有构建。 但是,轮询实际上检查是否有任何内容已推送到已使用的分支。
它工作得很完美。
从0.5版开始,针对Jenkins的GitHub插件可以在将更改推送到GitHub时触发构建。
管理Jenkins/配置系统/GitHub服务器 在jenkins job / git凭证和分支说明符上(给你想要查找的分支推送)
在github上的Webhook