Ағымдағы Heroku нұсқасын бағдарламалы түрде қалай алуға болады?

Бұл тіпті мүмкін бе - RELEASE_VERSION ортасының айнымалысы сияқты нәрсе бар ма?

13

4 жауаптар

Енді Heracle Labs мүмкіндігін Dyno Metadata сізге осы ақпаратты береді. Сіз оны қосқаннан кейін, қолданыстағы dyno ортасында бағдарламаның Heroku нұсқасының идентификаторы бар орта айнымалы мәндері болады, гитара босату слогы салынған және тағы басқалар болады. Мысалға:

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 бөлімін қараңыз. , os.getenv (varname [ value]) және cetera
қосылды автор Kristian Glass, көзі
n00b сұрағыңыз үшін кешіріңіз - егер мен Python пайдалансам, ENV-ге қалай кіруге болады - бұл айнымалылардың сөздігі ме? Мен ешқандай құжаттарды таба алмаймын: 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'] енді ең соңғы шығару идентификаторына орнатылуы керек. (Python os.environ.get ('RELEASE_ID') ) болар еді. Bash сценарийі ruby ​​параметрін кез келген buildpack үшін әдепкі кедра стекінің бөлігі деп ойлаймын.

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
қосылды