Возможно ли это - есть ли что-то вроде переменной среды RELEASE_VERSION?
Как я могу получить доступ к текущей версии выпуска Heroku программно?
Ответ 1
В настоящее время существует функция Heroku Labs, называемая Метаданные Dyno, которая дает вам эту информацию. После того, как вы включите его, ваша рабочая среда dyno будет содержать переменные среды с идентификатором версии Heroku вашего приложения, хэш-код git commit, из которого был создан ваш релиз slug, и многое другое. Например:
HEROKU_APP_ID: 9daa2797-e49b-4624-932f-ec3f9688e3da
HEROKU_APP_NAME: example-app
HEROKU_DYNO_ID: 1vac4117-c29f-4312-521e-ba4d8638c1ac
HEROKU_RELEASE_VERSION: v42
HEROKU_SLUG_COMMIT: 2c3a0b24069af49b3de35b8e8c26765c1dba9ff0
HEROKU_SLUG_DESCRIPTION: Deploy 2c3a0b2
Ответ 2
Я знаю это старое, но я не нашел определенного ответа нигде, поэтому я отправляю его здесь, если кто-то наткнется на этот вопрос. Я добавил инициализатор, называемый deploy_version.rb, с последующим контентом:
if ENV['HEROKU_APP']
res = `curl -H "Accept: application/json" -u :#{ENV['HEROKU_API_KEY']} -X GET https://api.heroku.com/apps/#{ENV['HEROKU_APP']}/releases`
last = JSON.parse(res).last
$deploy_version = last['name']
else
$deploy_version = 'local'
end
Затем легко отобразить его в вашем приложении:
<meta name="release" content="<%= $deploy_version %>">
Ответ 3
Вы можете сделать это с помощью .profile.d script, который вызывает API платформы и устанавливает переменную среды:
.profile.d/release.sh
# get the unique release id and set as RELEASE_ID
# Heroku config variables that need to be set
# API_KEY: heroku api key (get from dashboard or `heroku auth:token`
# APP_NAME: set this to your app_name (this could be hardcoded in the profile.d script but
# would make it harder to manage apps with multiple environments)
res=$(curl -s -H "Accept: application/vnd.heroku+json; version=3"\
-H "Authorization: Bearer $API_KEY"\
-H "Range: version ..; order=desc, max=1"\
-X GET https://api.heroku.com/apps/$APP_NAME/releases)
release_id=$(ruby -rjson -e "j = JSON.parse('$res'); puts j[0]['id']")
export RELEASE_ID=$release_id
В приложении rails, например, ENV ['RELEASE_ID'] теперь должен быть установлен на самый последний идентификатор релиза. (Python будет os.environ.get('RELEASE_ID')
). bash script использует ruby для разбора json, который, я думаю, является частью стека кедра по умолчанию для любого buildpack.
Ответ 4
если это не в ENV, тогда нет волшебного места для выталкивания переменных из.