Как получить имя/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. Если вы ищете доменное имя, проверьте один из других ответов.