GitHub组织Repo + Jenkins(GitHub插件)集成

时间:2012-05-22 05:22:07

标签: github continuous-integration hudson jenkins jenkins-plugins

我在GitHub上有一个私人存储库组织。我也让Jenkins设置在服务器上的端口8080上运行,并安装了GitHub插件。我在GitHub上为我的jenkins用户创建了一个帐户,该帐户位于所有者组中。

当我将更改推送到我的开发分支(或主分支,似乎都没有工作)时,我正试图触发jenkins的工作。

当我查看Jenkins中的GitHub Hook日志时,它说Polling还没有运行。当我去“管理Jenkins”时,GitHub插件在我测试时说我的帐户已经过验证。

有关如何配置此内容的任何见解?我有多个我想使用的存储库,因此部署密钥对我来说似乎不是解决方案。

3 个答案:

答案 0 :(得分:8)

更新

Craig Ringer中提及his answer,您可以在GitHub插件设置下的“配置Jenkins”中选择Grant READ permissions for /github-webhook,允许在不进行身份验证的情况下调用webhook。

另一次更新:Webhooks are now (Dec. 2014) available for organization:请参阅WebHooks API for orgs


注意:issue 4hudson-github-plugin是关于:

Last GitHub Push

Polling has not run yet.

结论是:

  

没关系,唯一缺少的是github用户的权限复选框,互联网上没有任何记录。

这是关于Jenkins用户的权限问题吗?

文章“Set up Jenkins-CI on Ubuntu for painless Rails3 app CI testing”包括以下过程:

  

要限制CI系统并授予您的团队成员访问权限以使用或查看构建日志,首先您要创建一个帐户。

     
      
  • 转到Manage Jenkins > Configure System
  •   
  • 选中Enable Security复选框
  •   
  • Security Realm下,选择Jenkins自己的用户数据库
  •   
  • 选中Allow users to sign up复选框
  •   
  • Authorization下,选择Project-based Matrix Authorization Strategy
  •   
  • 添加名为admin的第一个用户和使用GitHub的另一个用户(注意:Admin访问的用户名必须是admin)对于名为user的GitHub,只需选择Overall Read only权限。稍后我们将使用此用户使用GitHub挂钩。
  •   
     

注意:我们在上面的步骤中添加的admin和GitHub用户不会创建用户。然后你要创建一个具有相同名称的真实用户。雅,我知道,Jenkins UI有点奇怪。

     

转到管理Jenkins > Manage Users > Create User。创建admin和GitHub用户。

     

使用Github web-hooks挂钩

     

现在,当新的提交或分支被推送到Github时,自动运行构建,我们必须设置存储库。

     

进入存储库的hooks页面。例如

github.com/<username>/<project_name>/admin/hooks
  

AVAILABLE SERVICE HOOKS > Post-Receive URLs下,添加github:github@your-ci-server.com/github-webhook/

     

github:github是我们之前创建的用户。

     

然后我们必须用Github验证Jenkins。转到Manage Jenkins&gt;配置系统并在GitHub Web Hook下,添加您的Github用户名和密码,然后单击Test Credential按钮以使用Github授权一次。

答案 1 :(得分:2)

看起来当前版本的GitHub插件不再需要接受的答案。您可以在&#34;配置Jenkins&#34;中检查Grant READ permissions for /github-webhook。在GitHub插件设置下,允许无需身份验证即可调用webhook。

正如在这个选项的帮助中所解释的那样,这是非常安全的,坦率地说,并不比让用户名为&#34; github&#34;用密码&#34; github&#34;反正。

答案 2 :(得分:0)

有两种方法可以在Jenkins上实现自动构建。您选择的内容取决于GitHub是否可以调用您提供的Jenkins服务器URL。如果你在防火墙后面运行Jenkins,情况可能并非如此。

  1. 如果GitHub可以访问该网址,您可以在回购邮件上设置服务挂钩
  2. 如果没有,您可以将Jenkins设置为定期轮询
  3. 您可以设置两者,但只需一个解决方案即可使其正常运行。如果可行的话,我总是会选择第一个,因为它可以节省资源CPU和流量。

    您需要GitHub plugin for Jenkins

    希望有所帮助。