通过Heroku API从Github部署的实现方法

7
背景:我有一个部署在Heroku上的项目。Heroku应用程序与github连接,因此我可以从Heroku的Web API按下“部署”按钮,手动将github上的分支部署到Heroku。

我想做的是构建一个Slack机器人,通过Slack命令让我完成这个操作。理想情况下,Heroku的平台API上会有一些函数,比如.deploy('my_app', 'some_branch_on_github),但我似乎找不到它。

平台API的构建功能已经很接近了。该函数允许您提供tarball的公共URL,然后Heroku将其部署。但是,我的GitHub存储库不是公共的,所以这行不通。然而,私有存储库不应该是问题,因为Heroku已经连接到我的GitHub存储库。

简而言之:我如何以编程方式告诉Heroku从它连接的私有GitHub中部署我的应用程序?

2个回答

11

我收到了Heroku支持团队的回复,问了几乎相同的问题。他们的答案是我试图做的事情不可能完成,但是在某个时候会实现(无论如何,在接下来的几个月内不会实现)。

他们建议我可以使用Heroku自己的Web控制台使用的未公开Web API(在kolkrabbi.heroku.com上的一个端点上进行POST请求)。但是他们警告说,作为私有API,它可能会在没有警告的情况下发生更改。


25
顺便说一下,这个名字也不能再模糊了吧?我在我的 Github webhook 列表中看到了它,然后通过谷歌找到了这里。感谢你的解释。 - timelfelt
是的,它可能与他们主机的某些内部命名方案匹配,因为它不是面向公众的。 - Fishtoaster
16
Kolbrakki是冰岛语,意思是章鱼,我相信这就是Github的吉祥物 :) - aghaux

0

截至2020年4月, Heroku已经原生集成了GitHub,无需使用任何不稳定的未记录的冰岛端点

配置后,Heroku可以自动构建并发布(如果构建成功)到指定的GitHub仓库。

启用GitHub集成

您可以在Heroku控制面板部署选项卡中配置GitHub集成。

Enable GitHub
integration

要配置GitHub集成,您需要使用GitHub进行身份验证。 您只需在Heroku帐户上执行一次此操作。

为了配置自动GitHub部署,您需要具有GitHub存储库管理员访问权限。 这是因为Heroku需要在GitHub存储库上注册一个服务钩子,而此操作需要管理员访问权限。对于GitHub组织,您的GitHub帐户还需要是该组织的成员,而不是外部协作者。

 

如果您的存储库位于启用了第三方应用程序限制的GitHub组织中, 则组织管理员需要批准Heroku与该组织一起使用。更多详细信息请参见 GitHub

在将Heroku应用程序链接到GitHub存储库后,您可以选择性地 从分支部署或配置自动部署。

手动部署

使用手动部署,您可以创建任何分支的即时部署,该分支来自连接到您的应用程序的GitHub存储库。 如果您想要控制何时将更改部署到Heroku,请使用手动部署。

Manual
deploy

您还可以使用手动部署来临时部署与自动部署配置不同的分支。例如,您可能有一个开发应用程序与development GitHub分支同步,但是您暂时想要测试一个功能分支。只需触发功能分支的手动部署即可在Heroku应用程序上进行测试。请注意,在下一次成功的GitHub推送到development分支时,功能分支的发布将被覆盖。

自动部署

当您为GitHub分支启用自动部署时,Heroku会构建和部署该分支的所有推送。例如,如果您在Heroku上有一个开发应用程序,您可以将推送到GitHub的development分支配置为自动构建并部署到该应用程序。

Automatic
deploys

如果您已经配置了GitHub存储库以使用自动化的持续集成(例如Travis CI),则可以勾选“等待CI通过后再部署”复选框。启用后,Heroku将仅在相关提交的所有提交状态显示为success时才会自动部署。

此提交不会自动部署,因为其中一个检查显示pending状态:Failed commit status - won't
auto-deploy

此提交将自动部署,因为所有检查都显示success状态:Success commit statuses - will
auto-deploy

审查应用程序

启用 Heroku 应用程序的审查应用程序后,Heroku 将为与父应用程序连接的 GitHub 存储库上打开的每个拉取请求创建临时测试应用程序。如果您正在使用 GitHub Flow 提出、讨论和合并代码更改,则审查应用程序非常有用。由于拉取请求分支部署到 Heroku 上的新应用程序中,因此您和协作者可以轻松地测试和调试代码分支。您还可以在代表 GitHub 分支的 Heroku 应用程序上运行自动化集成测试。

有关详细信息,请参见审查应用程序文章

Heroku CI

一旦您将GitHub存储库连接到Pipeline,您可以启用Heroku CI,我们的可视化、低配置测试运行程序,它与Heroku Pipelines轻松集成(因此可以补充Review应用程序、现有的Heroku应用程序和我们的GitHub集成)。任何Heroku Pipeline都已经准备好使用Heroku CI - 只需在Pipeline的设置选项卡中打开即可。

差异链接

对于链接到GitHub存储库的应用程序,在仪表板的活动选项卡中发布的版本将包括“查看差异”链接。点击链接将带您进入GitHub比较视图,显示自上次发布以来所做的更改。

Diff view
link

从GitHub断开连接

必要时终止过时的GitHub连接。

断开单个应用程序的连接

可以在应用程序的部署选项卡的GitHub窗格中断开单独的应用程序。

Screenshot of UI to disconnect
app

断开账户

您可以在仪表板帐户页面上的第三方应用程序面板中断开您的Heroku和GitHub账户。

Screenshot of UI to disconnect
accounts


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