6

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

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

当我查看 Jenkins 中的 GitHub Hook Logs 时,它说轮询尚未运行。当我转到“管理 Jenkins”时,GitHub 插件说我的帐户在我测试时已验证。

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

4

3 回答 3

8

更新:

正如Craig Ringer在他的回答中提到的那样,您可以Grant READ permissions for /github-webhook在 GitHub 插件设置下的“配置 Jenkins”中进行选择,从而允许在没有身份验证的情况下调用 webhook。

另一个更新:Webhooks 现在(2014 年 12 月)可用于组织:请参阅WebHooks API for orgs


注意:hudson-github-plugin的第 4期是关于:

Last GitHub Push

Polling has not run yet.

结论是:

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

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

文章“在 Ubuntu 上设置 Jenkins-CI 以进行无痛 Rails3 应用程序 CI 测试”包括以下过程:

要限制 CI 系统并允许您的团队成员使用或查看构建日志,首先您必须创建一个帐户。

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

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

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

与 Github 网络挂钩挂钩

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

转到您的存储库的挂钩页面。例如

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 > Configure System 并在 GitHub Web Hook 下,添加您的 Github 用户名和密码,然后单击 Test Credential 按钮以使用 Github 进行一次授权。

于 2012-05-22T06:09:22.357 回答
2

当前版本的 GitHub 插件似乎不再需要接受的答案。您可以改为检查Grant READ permissions for /github-webhookGitHub 插件设置下的“配置 Jenkins”,允许在没有身份验证的情况下调用 webhook。

正如这个选项的帮助中所解释的那样,这是非常安全的,坦率地说,这并不比拥有一个名为“github”且密码为“github”的用户更糟糕。

于 2012-12-11T10:19:32.420 回答
0

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

  1. 如果 GitHub 可以访问该 URL,您可以在那里在您的存储库中设置服务挂钩
  2. 如果没有,您可以设置 Jenkins定期轮询

您可以同时设置两者,但一种解决方案足以让它发挥作用。如果可行,我总是会选择第一个,因为它可以节省资源 CPU 和流量。

无论哪种方式,您都需要Jenkins 的 GitHub 插件

希望有点帮助。

于 2012-05-22T05:41:29.247 回答