从Github向Heroku推送代码而不下载存储库

37

我有一个Github仓库,想要将其推送到Heroku节点上。第三方主机将协调此操作。由于我将大规模地进行此操作,因此希望避免将存储库的内容下载到第三方主机上。我该怎么做?


1
现在Heroku已经支持此功能 - 请参阅https://devcenter.heroku.com/articles/github-integration - James Manning
4个回答

47

你不能直接从Github推送到Heroku。

你需要使用第三方主机协调推送。这可以通过Github的post-receive hook来完成。

要直接同步,请使用类似以下的内容:

git remote add github git@github.com:user/repo.git
git remote add heroku git@heroku.com:app.git

git push heroku refs/remotes/github/master:refs/heads/master

我已经让它工作了。看起来在第三个主机上没有避免使用文件系统的方法 :( - opsb
4
虽然不完全是我想要的答案,但对于浏览这个问题的人来说,可能是最有用的。 - opsb
3
我采用了更简单的设置:创建一个 Github 仓库,将它克隆到本地,添加 Heroku 作为远程仓库,然后只需运行 git push heroku master - Patrick Fisher

2

Codeship.io 现在作为一项服务提供此功能,并自动配置公共或私有 github 存储库上的适当 git webhooks。

还有一些其他的“连续集成即服务”(CIAAS)选项,但总体而言,它们解决了你所特别提出的问题:web hooks 需要命中第三方服务,这将触发 heroku 构建流程。

这些 CIAAS 主机充当第三方,通常为公共项目提供免费层次。您也可以通过部署接收 web hook 的服务器来自己创建,该服务器可以拉取和推送 git 存储库。


Codeship实际上免费提供5个私有仓库;每月最多100次部署。我可能会尝试一下。 - Rob Grant
其实我不是,因为他们不支持Python 3.x。但还是非常酷的。 - Rob Grant

0

我认为你不能直接从GitHub推送到另一个远程仓库。

因此,如果您有许多应用程序要推送,可以考虑使用子模块的组织,就像在这个SO问题中所示。

您仍然需要下载一个仓库才能将其推送到Heroku节点上,但至少您可以控制要拉取/推送的内容(并在每次推送之间进行一些清理)。


我实际上不会成为应用程序的所有者(我正在构建云基础服务),因此我无法控制它们的组织方式。 - opsb

0
大约一年前,我曾回答过关于codeship.io的问题。现在,Heroku推出了他们的Pipeline功能集的初步版本,其中包括适当的Github集成。

https://devcenter.heroku.com/articles/github-integration

整个流程管道非常强大,可以基于分支创建临时实例,多个应用程序部署,从暂存到生产的推广等。更多信息可以在Heroku的概述文章中找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接