Подтвердить что ты не робот

Как я могу получить доступ к текущей версии выпуска Heroku программно?

Возможно ли это - есть ли что-то вроде переменной среды RELEASE_VERSION?

4b9b3361

Ответ 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, тогда нет волшебного места для выталкивания переменных из.