如何从应用程序内部获取Heroku应用程序名称/URL
我正在为的注册代理工作,以便能够跟踪部署在Heroku上的应用程序。我缺少已部署应用程序的一些信息。注册代理是一个脚本(通常用应用程序本地语言编写),设计用于在部署后执行(例如,heroku运行,或者通过一些部署后挂钩(如果有)自动运行) 如何从应用程序内部获取应用程序名称、URL和一些UUID标识符,最好是从一些环境变量中获取?我需要它能够在不同语言之间移植 我研究了一个示例Python应用程序,上面的所有信息都丢失了。与Python相关的ENV变量只有几个。但是,dyno主机名看起来像UUID 我可以使用类似的东西,但不需要用户/密码要求:如何从应用程序内部获取Heroku应用程序名称/URL,heroku,Heroku,我正在为的注册代理工作,以便能够跟踪部署在Heroku上的应用程序。我缺少已部署应用程序的一些信息。注册代理是一个脚本(通常用应用程序本地语言编写),设计用于在部署后执行(例如,heroku运行,或者通过一些部署后挂钩(如果有)自动运行) 如何从应用程序内部获取应用程序名称、URL和一些UUID标识符,最好是从一些环境变量中获取?我需要它能够在不同语言之间移植 我研究了一个示例Python应用程序,上面的所有信息都丢失了。与Python相关的ENV变量只有几个。但是,dyno主机名看起来像UUI
请给我指出正确的文档。应用程序名称存储在您的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的人,我们有两个额外的环境变量可用:
因此,可以推断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应用程序中可用。