【问题标题】:How to configure Cloudbees Jenkins to trigger build on push to Github如何配置 Cloudbees Jenkins 以在推送到 Github 时触发构建
【发布时间】:2013-07-09 06:09:47
【问题描述】:

我尝试按照本文中的说明进行操作:

http://developer.cloudbees.com/bin/view/DEV/GitHub+Commit+Hooks+HOWTO

但是我有两个问题:

  1. 它不起作用。当我推送到 github 时,詹金斯方面没有任何反应。在 Jenkins 上,GitHub Hook 日志显示“轮询尚未运行。”

  2. 可能的原因是我无法指定 git 存储库,如下图所述:

没有用于公钥的文本字段,也没有其他字段。相反,我有字段

Repository URL, Name, Refspec

我还可以指定一个 http url(以及除触发之外的所有内容)。但是,如果我在图像中指定 git/ssh url,则会收到以下错误:

无法连接到存储库:命令“git ls-remote -h git@github.com:schauder/degraph.git HEAD”返回状态码 128: 标准输出:标准错误:警告:永久添加 'github.com,207.97.227.239' (RSA) 到已知主机列表。 权限被拒绝(公钥)。致命:无法从远程读取 存储库。

请确保您拥有正确的访问权限和存储库 存在。

我从 github 复制了 url,所以不太可能出现拼写错误。

我确认我已经安装了 github 插件(升级到 1.5 版)

任何提示如何解决或至少调试问题?

更新 cmets 中的回答问题:

是的,我在作业配置中选中了“将更改推送到 GitHub 时生成”复选框。

是的,我在 GitHub 中设置了 webhook。当我单击那里的测试按钮时,没有任何反应。当我将 webhook 中的 url 放入浏览器时,我得到一个 http 500 说

不打算以交互方式浏览(必须指定有效负载参数)

加上一些冗长的堆栈跟踪。

另一个更新

我检查了安装在 Jenkins 端的 GIT 相关插件。文本中显示的所有带有 GIT 的内容均已安装且为最新版本

【问题讨论】:

  • 只是为了验证:1) 您是否选中了 Jenkins 作业中 BuildTrigger 下的“将更改推送到 GitHub 时构建”复选框? 2)您是否在“设置”下注册了服务挂钩?服务挂钩 | GitHub 项目中的 WebHook URL?
  • 是的,我做到了。查看问题的更新。
  • 根据上面的 Git 错误消息,我假设您无法通过身份验证。您是否按照here 的描述在 GitHub 上添加了 CloudBees 公共 SSH 密钥?
  • 好的,我想我找到了公钥(在 Jenkins 中)并将它放在 Github 中。现在我可以为 github 存储库指定一个 SSH URL。但仍然没有触发发生。
  • 实际上触发确实有效,在设置密钥之后。不知道为什么我的第一次测试似乎失败了。

标签: github jenkins cloudbees


【解决方案1】:

根据上面的 Git 错误消息,我假设您无法通过身份验证。您是否按照here 的描述在 GitHub 上添加了 CloudBees 公共 SSH 密钥?

OP 的澄清

问题中引用的图像似乎表明有人将 GitHub 中的公钥放入 CloudBees。但实际上是相反的,而且所有的标签似乎都被改变了,所以很难将那个截图与你在 CloudBees 中看到的相匹配。

所以我做的是这样的:

  • 在 Cloudbees 的作业配置中有一个公钥(由 CloudBee 生成)。我在CloudBees DEV@cloud Authorization 部分并标记为CloudBees Public Key。复制该密钥。

  • 跳到 GitHub 并转到 Settings > Deploy Keys。在那里添加密钥。

  • 转到Settings > Service Hooks > WebHook URLs。点击测试按钮。您不会在 GitHub 方面看到太多内容。

  • 回到 CloudBees Jenkins。从作业的主页转到“GitHub Hook Log”。在那里你应该看到类似的东西:

    Started on Mar 15, 2013 8:55:14 AM
    Using strategy: Default
    [poll] Last Built Revision: Revision 581acde89a62317fd8dabaa3f4c6025d1c9dd413     (origin/master)
    Fetching changes from the remote Git repositories
    Polling for changes in
    Done. Took 0.34 sec
    Changes found
    

    你的工作应该开始了。

    如果最后一行显示No Changes,则表示钩子有效,但您已经构建了当前版本,因此不会再次触发构建。

  • 如果您仍然有问题,请查看“疑难解答”下的https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin#GitHubPlugin-TriggerabuildwhenachangeispushedtoGitHub,它会告诉您如何在 jenkins 端设置日志记录。有了这个,我在 Jenkins SystemLog 中得到了各种各样的东西。

【讨论】:

    【解决方案2】:

    我刚刚发布了一篇关于使用 CloudBees 对托管在 GitHub 上的 Play 应用程序进行持续集成的教程。这旨在提供一个全面的指南:

    http://ics-software-engineering.github.io/play-example-continuous-integration/

    【讨论】:

      猜你喜欢
      • 2012-08-30
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多