Как получить имя/URL-адрес приложения Heroku из приложения

Я работаю над агентом регистрации http://www.dif.io, чтобы включить отслеживание приложений, развернутых на Heroku. Мне не хватает информации о развернутом приложении. Агент регистрации - script (обычно написанный на родном языке приложения), который предназначен для выполнения после развертывания (например, запуск героя выполняется или автоматически с помощью какого-либо почтового развертывания, если таковой имеется).

Как получить имя приложения, URL-адрес и некоторый идентификатор UUID внутри приложения, предпочтительно из некоторых переменных ENV? Мне нужно, чтобы он был переносимым между языками.

Я исследовал образец приложения Python, и вся вышеуказанная информация отсутствует. Есть только пара дополнительных переменных ENV, связанных с Python. Однако динамическое имя хоста выглядит как UUID.

Я мог бы использовать что-то вроде этого, но без требований пользователя/пароля: https://addons.heroku.com/provider/resources/technical/reference/app-info

Пожалуйста, укажите мне правильные документы.

Ответ 1

Команда 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)

Ответ 2

Метаданные Dyno были представлены в декабре 2015 года. В настоящее время это функция лаборатории, которая должна быть включена первой.

Метаданные Dyno предоставляют динамический доступ к информации о приложении и среде. Примеры доступных метаданных dyno включают в себя сведения о выпуске, размере динозавров, имени приложения, а также уникальном идентификаторе для конкретной выполняемой dyne.

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

Ответ 3

Насколько я могу судить, у самих динамиков нет информации о названии или URL-адресе приложения. Документация на Dynos указывает, какие локальные переменные среды установлены, но имеет только PORT и DYNO.

Одним из способов обхода, который мы используем в hubot, является требование, чтобы пользователь добавил конфигурацию, такую ​​как HEROKU_URL, с именем хоста приложения.

Я нашел, что вы можете script большую часть этого, используя heroku app:info с флагом -s для дружественной оболочки, с небольшим количеством grepping и cut:

$ 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

Там есть дополнение к лабораториям, появившееся в августе 2016 года, которое помещает все это в вашу среду:

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

Ответ 5

Храните имя приложения в своем URL-адресе примерно как appname.herokuapp.com.

Вы можете получить его во многих отношениях, например. ENV['URL'].split(".").first в python, чтобы получить первую форму форму url, когда split на "." которые представляют ваше приложение

Ответ 6

Здесь то, что работало для меня только для имени приложения:

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

Моим вариантом использования было найти имя приложения для использования в оболочке script, для которой было необходимо имя приложения (а не имя домена). YMMV

Я использовал git-url вместо web-url, потому что имя домена можно переопределить на что-то обычное, но имя приложения всегда будет отображаться на URL-адрес git. Если вы ищете доменное имя, проверьте один из других ответов.