Каждый раз, когда я запускаю свое приложение в heroku, я вижу эту строку
-----> Launching... done, v43
Есть ли способ сделать так, чтобы номер версии отображался в приложении, чтобы другие люди могли видеть этот номер?
Вы можете создать файл Ruby для следующих действий:
require 'heroku'
heroku = Heroku::Client.new('username','password')
puts heroku.releases('appname')
Возвращает документ JSON, содержащий тонну метаданных о ваших развертываниях, включая SHA, номер версии и т. Д.
Теперь можно попробовать функцию 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
...
Нам не нужно настраивать какой-либо конфигурационный файл или что-то еще.
В 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 .