Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从应用程序内部获取Heroku应用程序名称/URL_Heroku - Fatal编程技术网

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

如何从应用程序内部获取Heroku应用程序名称/URL,heroku,Heroku,我正在为的注册代理工作,以便能够跟踪部署在Heroku上的应用程序。我缺少已部署应用程序的一些信息。注册代理是一个脚本(通常用应用程序本地语言编写),设计用于在部署后执行(例如,heroku运行,或者通过一些部署后挂钩(如果有)自动运行) 如何从应用程序内部获取应用程序名称、URL和一些UUID标识符,最好是从一些环境变量中获取?我需要它能够在不同语言之间移植 我研究了一个示例Python应用程序,上面的所有信息都丢失了。与Python相关的ENV变量只有几个。但是,dyno主机名看起来像UUI

我正在为的注册代理工作,以便能够跟踪部署在Heroku上的应用程序。我缺少已部署应用程序的一些信息。注册代理是一个脚本(通常用应用程序本地语言编写),设计用于在部署后执行(例如,heroku运行,或者通过一些部署后挂钩(如果有)自动运行)

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

我研究了一个示例Python应用程序,上面的所有信息都丢失了。与Python相关的ENV变量只有几个。但是,dyno主机名看起来像UUID

我可以使用类似的东西,但不需要用户/密码要求:


请给我指出正确的文档。

应用程序名称存储在您的url中,类似于
appname.herokuapp.com


您可以通过多种方式获得它,例如,
ENV['URL'].split(“.”)。在python中,首先
在按“.”分割时获取第一个值表单URL。就我所知,表示您的appname的Dynos本身没有任何关于正在运行的应用程序名称或URL的信息。列表中列出了设置的本地环境变量,但它只有端口和DYNO

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

我发现,您可以通过使用
heroku app:info
-s
标志来编写大部分脚本,以便于shell友好,只需进行一点grepping和cutting:

$ 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)

命令
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)

2015年12月引入了Dyno元数据。它目前是一个必须首先启用的实验室功能

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


以下是仅对应用程序名称有效的方法:

heroku info -s | grep git-url | sed 's#.\+\.com/\(.\+\)\.git$#\1#g'
我的用例是在shell脚本中查找应用程序名,该脚本需要应用程序名(而不是域名)。YMMV


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

2016年8月推出了一个labs附加组件,它将所有这些都放在您的环境中:

~ $ 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

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

  • 希罗库乌分行
  • HEROKU_应用程序_名称

  • 因此,可以推断URL是:“http(s)://HEROKU\u APP\u NAME.herokuapp.com”

    虽然这非常有用,但我发现它在控制台中不起作用。这有点奇怪,因为应用程序似乎应该知道一些关于自身的基本环境信息。在某个时候,Heroku将
    weburl
    更改为
    weburl
    。所以
    heroku info-s | grep web url | cut-d=-f2
    今天就可以了。看起来你应该避免设置
    heroku*
    命名的env vars,因为在heroku上有很高的内部冲突风险。我认为这是heroku应用程序:info(带“s”)目前dyno元数据不包含应用程序hostname@timelf123到2016年3月,它已经做到了。(或者至少文档中提到了它,我还没有真正尝试过。)是的,应用程序名被列为HEROKU_app_name。但是,我希望有一种方法可以从app.json配置中启用此功能。在我的实例上启用,并且只有HEROKU_DYNO_ID可用。看起来您无法将实验室功能添加到HEROKU CI构建的应用程序中?看起来您应该避免设置
    HEROKU_*
    命名的环境变量,因为在我的实例上启用HEROKU时存在内部冲突的高风险实例,并且只有HEROKU\u DYNO\u ID可用。@WillJones这里也一样。您能详细说明一下这些环境变量是如何填充的吗?我的heroku应用程序中似乎没有这些变量?它们可能仅在heroku review应用程序中可用。