如何使用 Hubot 将 Github 存储库部署到 Heroku?
Posted
技术标签:
【中文标题】如何使用 Hubot 将 Github 存储库部署到 Heroku?【英文标题】:How to use Hubot to deploy a Github repo to Heroku? 【发布时间】:2012-01-20 18:54:10 【问题描述】:回到他们announcedHubot 时,GitHub 说他们对他们所做的事情之一就是部署。我正在尝试对我的项目执行相同的操作,该项目的代码托管在 GitHub 上,而应用程序本身位于 Heroku 上。我的 Hubot 也在 Heroku 上,但我首先在本地进行所有测试。
我的想法是在 tmp 中克隆目标 repo,在该 repo 中添加一个遥控器以指向 Heroku 应用程序,然后运行 git push heroku
或(如 this SO question)创建两个遥控器和 push
这样。当我尝试运行时,我已经让 git clone
在本地工作
Exec "cd #dir; git remote add #proj_loc git@heroku.com:#heroku_app.git"
它最终将远程添加到存在于我开始 bin/hubot
的目录中的 git 存储库中,而不是现在存在于 tmp 中的 git 存储库。我知道 dir 设置正确,并且 cd
有效,因为我已经运行了
Exec "cd #dir; pwd"
结果是我所期望的。所以git remote
的行为让我很困惑。
有没有人做过类似的事情,或者至少可以告诉我为什么git remote
不将遥控器添加到 tmp 中的临时以及如何修复它?
我还没有尝试解决 1) 访问 GitHub 上的私有存储库所需的密钥问题;和 2) 部署到 Heroku。我会弄清楚如果我能做到这一点。
【问题讨论】:
【参考方案1】:我用我的系统做到了这一点。我让我的 hubot 通过 SSH 联系我的构建框并运行 git pull / deploy 命令。部署命令会将 POST 有效负载发送回 hubot 实例,并将所有状态发布到 hubot 的聊天客户端。我为此写了一篇完整的博文:http://tritarget.org/blog/2014/10/13/new-site-ship-it/
【讨论】:
【参考方案2】:我创建了一个 Java / Play Framework 应用程序,它可以满足您的需求:https://github.com/heroku/shareheroku-java
该应用执行以下操作:
-
从 git url 克隆(或更新)git repo
为现有 Heroku 用户创建新的 ssh 密钥
将密钥添加到用户帐户
在 Heroku 上创建一个新应用
将克隆的应用推送到 Heroku
将另一个用户添加为协作者
将所有权转让给用户
从应用程序中删除原始用户
从原始用户中删除 ssh 密钥
您可以在以下网址查看它的实际效果:http://java.herokuapp.com
【讨论】:
【参考方案3】:当我听说 Github 如何使用 Hubot 时,我也是这么想的。不过,猜测一下,他们将其托管在他们管理的机器上,例如物理或 VPS,在部署代码时更像是本地机器。虽然你可能会在 Heroku 上工作,但我认为你会在密钥和实际部署方面遇到困难 - 但我愿意被证明是错误的 :)
【讨论】:
以上是关于如何使用 Hubot 将 Github 存储库部署到 Heroku?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 REST API 或 ARM 模板通过私有 GitHub 存储库在应用服务中部署应用?