我怎样才能使jenkinsCI与GIT触发器推动主?

我正在尝试使用github为一个项目设置Jenkins-ci。 我已经用适当的插件设置了jenkins。 我希望jenkins只有在项目的某个人推动主人时才能运行构build脚本。 到目前为止,我已经能够设置它,以便任何时候任何人都可以触发构build,但是这太宽泛了。 我已经用git上的post-receive服务钩子完成了。

我读过jenkins wiki和一些教程,但是这个特殊的细节已经被忽略了……是否可以使用轮询呢? 还是应该在git方面进行工作,以便git只在Master更改时触发jenkins?

谢谢你的帮助!

正如他在评论中已经指出的那样 ,同时还有一个很好的解决scheme(由http://kohsuke.org/2011/12/01/polling-must-die-triggering-jenkins-builds-from-a-git-挂钩/ ):

  • 将Jekins作业的构build触发器设置为轮询SCM ,但指定计划

  • 创build一个github post-receive触发器来通知URL

    http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely> 
  • 这将触发所有轮询指定的git回购的构build。

  • 然而,轮询实际上检查是否有任何东西被推送到使用的分支。

它完美的作品。

从版本0.5开始,Jenkins的Github插件可以在更改推送到GitHub时触发构build

而不是远程触发构build ,更改您的Jenkins项目configuration通过轮询触发构build。 jenkins可以根据固定的内部或URL进行轮询。 后者是你想要跳过构build,如果没有更改该分支。 具体细节在文档中 。 本质上,您只需要检查“Poll SCM”选项,将时间表部分留空,并设置远程URL以打JENKINS_URL / job / name / polling。

一个问题,如果你有一个安全的Jenkins环境是不同的/build立,/轮询URL需要authentication。 这里的说明有详细信息。 例如,我有一个Github Post-Receive hook去用户名:apiToken @ JENKIS_URL / job / name / polling。

对于Gitlab ,请使用以下步骤:

  1. 转到您的项目设置> Web钩子
  2. 从Jenkins项目中input“立即生成”URL作为推送事件URL

    例如http://server.com/jenkins/job/project_name/build?delay=0sec

  3. 单击Add Web Hook ,然后test hook

然后,无论何时您提交回购,都会触发Web钩子并创build一个构build。 确保delete workspace before each build将Jenkins工作区设置为delete workspace before each build以便获得新代码的新副本。

你需要指定分支。 默认情况下,它监听任何东西。 在这里看到这个职位:

http://evgenyg.wordpress.com/2010/03/27/hudson-git-maven/

与Git无关,但下面我将与Mercurial详细介绍Jenkins作业configuration。 可以帮助他人解决类似的问题。

  1. 安装URL触发器插件
  2. 转到作业configuration页面并selectPoll SCM选项。 将值设置为* * * * *
  3. 检查选项: [URLTrigger] - Poll with a URL
    现在您可以select修改date更改,url内容等选项
  4. 在选项中,selectURL内容更改,select第一个选项 – Monitor change of content
  5. 保存更改。

现在,通过一些testing检查来触发对mercurial存储库的一些更改

看到jenkins的工作现在运行通过检测SCM的变化。 当由于mercurial更改而运行构build时,您将看到Started by an SCM change文本。 否则,手动启动它的用户。

希望这有助于: http : //nrecursions.blogspot.in/2014/02/how-to-trigger-jenkins-build-on-git.html

这只是使用curl触发一个使用git提供的git钩子的Jenkins作业的问题。
命令curl http://localhost:8080/job/someJob/build?delay=0sec可以运行Jenkins作业,其中someJob是Jenkins作业的名称。

search隐藏的.git文件夹中的“钩子”文件夹。 将“post-commit.sample”文件重命名为“post-commit”。 用记事本打开它,删除“:Nothing”行,并将上面的命令粘贴到它。

而已。 无论何时你提交,Git都会触发文件中定义的提交后命令。

解决这个问题的另一个可能的方法是使用类似于“如何在特定文件集发生更改时才触发构build”的问题 。

我为www.appboy.com的Jenkins实例写了一个简短的构build部署脚本。 我们的要求是:

  • build立每个分支
  • 从开发中不断部署到我们的升级环境
  • 从主站不断部署到我们的生产环境
  • 部署完成后,对运行中的服务器运行冒烟testing
    • 如果有问题,回滚
  • 发布状态更新到Hipchat

这是构build和部署脚本。 填写适当的值和步骤。 如果您使用的是Heroku,Engine Yard或DotCloud等云托pipe服务,则部署和回滚操作非常简单。

https://gist.github.com/2399693

下载这个文件,更新它,在你的仓库中提交它,并且把你的Jenkins构build脚本设置成类似于

 #!/bin/bash source ~/.bashrc ruby ci_runner.rb 

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

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