Geçerli Heroku sürüm sürümüne program aracılığıyla nasıl erişirim?

Bu mümkün mü? - RELEASE_VERSION ortam değişkeni gibi bir şey var mı?

13

4 cevap

Şu anda yayınlanmış bir Heroku Labs özelliği var Dyno Metadata . Bunu etkinleştirdiğinizde, çalışan dyno ortamınız, uygulamanızın Heroku sürüm kimliğiyle ortam değişkeni içerecektir, sürüm sundurma işleminin yapıldığı git işlemi ve daha fazlası. Örneğin:

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
katma

ENV'de değilse, değişkenleri kopyalamak için büyülü bir yer yoktur.

2
katma
hayır, benim hatamdı - ENV ruby için. Korkarım Python hakkında emin değilim.
katma yazar John Beynon, kaynak
docs.python.org/library/os.html - os sayfasına bakın. ortam , os.getenv (varname [ değer]) ve cetera
katma yazar Kristian Glass, kaynak
n00b sorusu için özür dilerim - eğer Python kullanıyorum, ENV'ye nasıl erişirim - bu bir değişkenler sözlüğü mü? Heroku'da herhangi bir doküman bulamıyorum: ENV.
katma yazar Gabriel Florit, kaynak

Platform API'sini çağıran ve bir ortam değişkeni belirleyen bir .profile.d komut dosyası ile bunu yapabilirsiniz:

.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

Bir ray uygulamasında, örneğin, ENV ['RELEASE_ID'] şimdi en son sürüm kimliğine ayarlanmalıdır. (Python os.environ.get ('RELEASE_ID') olur. Bash betiği, herhangi bir buildpack için varsayılan sedir kümesinin parçası olduğunu düşündüğüm json'u ayrıştırmak için ruby ​​kullanır.

1
katma

Biliyorum, bu bir ihtiyar, ama başka hiçbir yerde kesin bir cevap bulamadım, bu yüzden bu soru üzerine tökezleyen biri için buraya gönderiyorum. Followin içeriği ile deploy_version.rb adlı bir başlatıcı ekledim:

    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

Ardından, uygulamanızda görüntülemek kolaydır:

   <meta name="release" content="<%= $deploy_version %>">
1
katma