如何从应用程序内部获取Heroku应用程序名称/ URL

时间:2012-09-24 18:18:08

标签: heroku

我正在为http://www.dif.io注册代理,以便跟踪部署在Heroku上的应用。我错过了部署的应用程序的一些信息。注册代理是一个脚本(通常用应用程序本机语言编写),它被设计为在部署之后执行(例如heroku运行或者通过一些post deploy hook(如果有的话)自动执行)。

如何从应用程序内部获取应用程序名称,URL和一些UUID标识符,最好是从某些ENV变量中获取?我需要它可以在语言之间移植。

我探索了一个示例Python应用程序,并且缺少以上所有信息。只有几个与Python相关的ENV变量。然而,dyno主机名看起来像UUID。

我可以使用类似的东西,但没有用户/密码要求: https://addons.heroku.com/provider/resources/technical/reference/app-info

请指出正确的文档。

7 个答案:

答案 0 :(得分:39)

命令app:info似乎不再是heroku命令,只是info会做同样的事情:

heroku info -s | grep web_url | cut -d= -f2

或设置变量

heroku config:set HEROKU_URL=$(heroku info -s | grep web_url | cut -d= -f2)

答案 1 :(得分:24)

Dyno元数据于2015年12月推出。它目前是实验室功能,必须首先启用。

  

Dyno元数据使dyno可以轻松访问有关应用和环境的信息。可用的dyno元数据示例包括有关发布,dyno大小,应用程序名称以及特定运行dyne的唯一标识符的详细信息。

https://devcenter.heroku.com/articles/dyno-metadata

答案 2 :(得分:10)

2016年8月出现了一个实验室附加组件,它将所有这些添加到您的环境中:

~ $ env
HEROKU_APP_ID:                   9daa2797-e49b-4624-932f-ec3f9688e3da
HEROKU_APP_NAME:                 example-app
HEROKU_DYNO_ID:                  1vac4117-c29f-4312-521e-ba4d8638c1ac
HEROKU_RELEASE_CREATED_AT:       2015-04-02T18:00:42Z
HEROKU_RELEASE_VERSION:          v42
HEROKU_SLUG_COMMIT:              2c3a0b24069af49b3de35b8e8c26765c1dba9ff0
HEROKU_SLUG_DESCRIPTION:         Deploy 2c3a0b2

https://devcenter.heroku.com/articles/dyno-metadata

答案 3 :(得分:8)

据我所知,Dynos自己没有关于他们运行的应用程序名称或URL的任何信息。 documentation on Dynos列出了设置的本地环境变量,但它只有PORT和DYNO。

我们在hubot中使用的一种解决方法是要求用户使用应用主机名添加HEROKU_URL等配置。

我发现你可以编写大部分内容,使用heroku app:info -s标志,以便进行外壳友好,并进行一些点击和切割:

$ heroku apps:info -s  | grep web_url | cut -d= -f2
http://hubotio-campfire.herokuapp.com/

并设置HEROKU_URL:

$ heroku config:set HEROKU_URL=$(heroku apps:info -s  | grep web_url | cut -d= -f2)

答案 4 :(得分:3)

您的网址中的应用名称存储类似于appname.herokuapp.com

你可以通过多种方式获得它,例如python中的ENV['URL'].split(".").first以“。”分割时获取第一个值表单url代表您的appname

答案 5 :(得分:3)

以下仅适用于应用名称的内容:

heroku info -s | grep git-url | sed 's#.\+\.com/\(.\+\)\.git$#\1#g'

我的用例是找到在shell脚本中使用的应用程序名称,该脚本需要专门的应用程序名称(而不是域名)。 YMMV

我使用git-url代替web-url,因为域名可以覆盖为自定义内容,但应用名称将始终保持映射到git网址。如果要查找域名,请检查其他答案之一。

答案 6 :(得分:0)

对于那些来这里的人,试图找到一种在Heroku中获取评论应用程序的应用程序URL的方法,我们还有两个可用的环境变量:

  1. HEROKU_BRANCH
  2. HEROKU_APP_NAME

所以推断URL只是:“ http(s)://HEROKU_APP_NAME.herokuapp.com”