如何使用 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 存储库在应用服务中部署应用?

使用部署密钥从 Github 存储库的发布部分下载文件

使用 CDK、AWS 和 Github 私有存储库部署的最佳实践?

如何直接从我的 Gitlab 存储库部署到 Heroku

如何将子模块添加到 github 存储库

将 2 个 Github 存储库部署到同一个 Heroku 应用程序