如何在推送掌握时使用Git触发器制作Jenkins CI?

Zig*_*ggy 201 git github jenkins

我正在尝试使用GitHub为一个项目设置Jenkins-ci.我已经使用适当的插件设置了Jenkins.我希望Jenkins只在项目中有人推动掌握时运行构建脚本.到目前为止,我已经能够设置它,以便在任何人推送到任何地方时都会触发构建,但这太宽泛了.我在Git上使用post-receive服务挂钩完成了这个.

我已经阅读了Jenkins wiki和一些教程,但缺少这个特殊的细节......它可能与民意调查有关吗?或者应该在Git方面完成工作,这样Git只会在master更改时触发Jenkins ?

ole*_*enz 187

正如他在评论中已经注意到的那样,同时有一个很好的解决方案(描述在Polling必须死:从Git钩子触发Jenkins构建):

  • 将Jenkins作业的构建触发器设置为Poll SCM,但指定计划.

  • 创建GitHub post-receive触发器以通知URL

    http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely>
    
    Run Code Online (Sandbox Code Playgroud)
  • 这将触发轮询指定Git存储库的所有构建.

  • 但是,轮询实际上会检查是否已将任何内容推送到已使用的分支.

它完美地运作.

  • 适用于Bitbucket的POST钩子(不是Jenkins).要指定身份验证凭据,可以使用http:// user:password@my.ci.server/git/notifyCommit?url = ...作为URL. (4认同)
  • 你能澄清这部分吗?“创建一个github post-receive触发器来通知URL” (3认同)

doc*_*hat 32

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

  • @asveikau - 最初的问题是关于github. (23认同)

小智 9

而不是远程触发构建,更改Jenkins项目配置以通过轮询触发构建.

Jenkins可以根据固定的内部或URL进行轮询.如果没有针对该分支的更改,则后者是您要跳过构建的内容.具体细节在文档中.基本上你只需要检查"轮询SCM"选项,将计划部分留空,并设置一个远程URL以命中JENKINS_URL/job/name/polling.

如果您有一个安全的Jenkins环境/build,那么一个问题就是不同,/pollingURL需要身份验证.这里的说明有详细信息.例如,我有一个GitHub Post-Receive挂钩username:apiToken@JENKIS_URL/job/name/polling.


etu*_*usm 8

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

  1. 转到项目的设置→Web挂钩
  2. 从Jenkins项目输入"Build Now"URL作为推送事件URL:

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

  3. 单击Add Web Hook然后test hook

然后,只要您提交到存储库,就会触发Web挂钩并创建构建.请务必将Jenkins工作区设置为,delete workspace before each build以便获得新代码的全新副本.

  • 您如何解决有关仅在按下master分支时就构建的问题? (2认同)