Отражение версии пуша Heroku в приложении

Каждый раз, когда я запускаю свое приложение в heroku, я вижу эту строку

-----> Launching... done, v43

Есть ли способ сделать так, чтобы номер версии отображался в приложении, чтобы другие люди могли видеть этот номер?

24
задан Nick Ginanto 9 January 2012 в 17:41
поделиться

3 ответа

Вы можете создать файл Ruby для следующих действий:

require 'heroku'

heroku = Heroku::Client.new('username','password')
puts heroku.releases('appname')

Возвращает документ JSON, содержащий тонну метаданных о ваших развертываниях, включая SHA, номер версии и т. Д.

1
ответ дан 28 November 2019 в 22:33
поделиться

Теперь можно попробовать функцию Heroku, о которой Роберто написал в своем ответе, не связываясь с Heroku. Он называется Heroku Labs: Dyno Metadata , и вы можете включить его с помощью

heroku labs:enable runtime-dyno-metadata -a <app name>

, а затем информация будет доступна (при следующем развертывании) в качестве переменных среды:

~ $ env
HEROKU_APP_ID:                   <some-hash-appId>
HEROKU_APP_NAME:                 example-app
HEROKU_DYNO_ID:                  <some-hash-dynoId>
HEROKU_RELEASE_VERSION:          v42
HEROKU_SLUG_COMMIT:              <some-hash-slugCommit>
HEROKU_SLUG_DESCRIPTION:         Deploy 2c3a0b2
...

Нам не нужно настраивать какой-либо конфигурационный файл или что-то еще.

18
ответ дан 28 November 2019 в 22:33
поделиться

В Node.js с использованием JavaScript fetch (и предстоящей асинхронной / ожидающей) вы можете сделать это с помощью следующего кода (без push-зацепок!):

const fetch = require('node-fetch');
const url = 'https://api.heroku.com/apps/myapp/releases';
const headers = {
    Accept:        'application/vnd.heroku+json; version=3',
    Authorization: 'Basic '+base64Encode(':'+process.env.HEROKU_API_TOKEN)
};
const response = await fetch(url, { headers });
const releases = await response.json();
const lastRelease = releases[releases.length-1];
const version = lastRelease.version;
const created = lastRelease.created_at;

с помощью

function base64Encode(str) {
    return new Buffer(str, 'binary').toString('base64');
}

Обратите внимание, что для этого требуется

$ heroku config:set HEROKU_API_TOKEN=\`heroku auth:token`.

См. devcenter.heroku.com/articles/platform-api-reference#release-list .

0
ответ дан 28 November 2019 в 22:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: