プログラムで現在のHerokuリリースバージョンにアクセスするにはどうすればよいですか?

これも可能ですか?RELEASE_VERSION環境変数などがありますか?

13

4 答え

リリースされた Heroku Labs の機能は、 Dynoメタデータを参照してください。これを有効にすると、実行中のdynoの環境には、アプリケーションのHerokuバージョンID、リリーススラッグが構築されたgit commitハッシュなどの環境変数が含まれます。例えば:

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
14
追加された

それがENVになければ、変数を抜き出す魔法の場所はありません。

2
追加された
いいえ、それは私のせいでした - ENVはRubyです。私は恐れているPythonについてはわかりません。
追加された 著者 John Beynon,
docs.python.org/library/os.html - osをご覧ください。 environos.getenv(varname [、value])など
追加された 著者 Kristian Glass,
ここでn00bの質問を申し訳ありません - 私はPythonを使用している場合、どのように私はENVにアクセスする - これは変数の辞書ですか?私はheroku re:ENVに関するドキュメントを見つけることができません。
追加された 著者 Gabriel Florit,

プラットフォームAPIを呼び出し、環境変数を設定する.profile.dスクリプトを使用して実行できます。

.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

たとえば、レールアプリでは、ENV ['RELEASE_ID']を最新のリリースIDに設定する必要があります。 (Pythonは os.environ.get( 'RELEASE_ID')となります)。 bashスクリプトはrubyを使ってjsonを解析します。これはビルドパックのデフォルトのcedarスタックの一部であると思います。

1
追加された

私はそれが昔の人だと知っていますが、どこにでも明確な答えが見つからなかったので、誰かがこの質問に遭遇した場合に備えてここに投稿しています。私は、フォローインの内容の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 %>">
1
追加された