60

我正在为http://www.dif.io开发一个注册代理,以启用对 Heroku 上部署的应用程序的跟踪。我缺少已部署应用程序的一些信息。注册代理是一个脚本(通常以应用程序本地语言编写),旨在在部署后执行(例如,heroku 运行或通过一些部署后挂钩自动运行)。

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

我探索了一个示例 Python 应用程序,但上述所有信息都丢失了。只有几个与 Python 相关的 ENV 变量。然而,测功机主机名看起来像一个 UUID。

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

请指出正确的文档。

4

8 回答 8

51

该命令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)
于 2014-11-02T18:49:49.733 回答
30

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

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

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

于 2015-12-24T17:10:13.623 回答
15

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

于 2016-11-02T01:33:46.977 回答
11

据我所知,Dynos 本身没有关于它们正在运行的应用程序名称或 URL 的任何信息。Dynos 上的文档列出了设置了哪些本地环境变量,但它只有 PORT 和 DYNO。

我们在hubot中使用的一种解决方法是要求用户添加一个带有应用程序主机名的配置,例如 HEROKU_URL。

我发现您可以编写大部分脚本,通过使用shell 友好heroku app:info的标志,并进行一些 grepping 和切割:-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)
于 2014-09-14T20:18:46.777 回答
6

以下是仅适用于应用名称的方法:

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

我的用例是查找应用程序名称,以便在需要应用程序名称(而不是域名)的 shell 脚本中使用。YMMV

我使用了,git-url而不是web-url因为域名可以被覆盖为自定义的东西,但应用程序名称将始终保持映射到 git url。如果要查找域名,请检查其他答案之一。

于 2016-07-21T16:51:25.707 回答
3

应用名称存储在您的网址中,例如appname.herokuapp.com.

您可以通过多种方式获取它,例如ENV['URL'].split(".").first在 python 中,当被“。”分割时,获取第一个值形式的 url。代表您的应用名称

于 2012-11-17T09:21:08.740 回答
3

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

  1. HEROKU_BRANCH
  2. HEROKU_APP_NAME

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

于 2020-01-13T11:38:03.447 回答
0

对我来说,这很简单:

heroku info
heroku info
=== secure-inlet-07449
Addons:         heroku-postgresql:hobby-dev
Auto Cert Mgmt: false
Dynos:          web: 1
Git URL:        https://git.heroku.com/secure-inlet-07449.git
Owner:          some.one@example.com
Region:         us
Repo Size:      45 KB
Slug Size:      33 MB
Stack:          heroku-20
Web URL:        https://secure-inlet-07449.herokuapp.com/

最后一行显示了应用程序的 url:https ://secure-inlet-07449.herokuapp.com/

于 2022-02-22T14:00:12.903 回答