6

slugコンパイラ.gitがherokuslugを作成するときにディレクトリを削除することは知っていますが、スクリプト内から現在実行中のgit commit番号にアクセスできるようにHerokuを構成する方法はありますか?

sinatraアプリ(Heroku内で実行)に「 runningversione72fb274a0」(または同様のもの)という小さなリンクを設定できるようにしたいと思います。これを取得するにはどうすればよいですか、またはslugコンパイラに環境変数に追加させるにはどうすればよいですか?

進捗:

これを行う最良の方法は、.gitディレクトリが削除される前にgitcommitバージョン番号をherokuスラッグに書き込むカスタムビルドパックを作成することだと思います。

私はこれを実行しようとしましたが(rubyビルドパックのフォークを参照)、追加した行(23行目)は機能していないようです。Herokuは新しいビルドパックを確認して使用しますが、ファイルをスラッグに書き込んでいないようです。

私のカスタムビルドパックが期待どおりに機能しない理由を誰かが知っていますか?

ありがとう、

JP

4

3 に答える 3

7

いくつかのオプション...

SOURCE_VERSION環境変数(ビルド時間)

2015年4月1日以降、SOURCE_VERSIONHerokuで実行されているビルドで使用できる環境変数があります。git-pushedビルドの場合、これはビルドされるソースのgitcommitSHA-1です。

https://devcenter.heroku.com/changelog-items/630

(それを指摘してくれた@srtechに感謝します!)

ビルドでその変数を使用している私の例-デプロイされたアプリによって提供されるHTMLを見ると、一番下のHTMLコメントhttps://gu-whoにコミットIDが表示されていることがわかります。 herokuapp.com/

/etc/heroku/dynoメタデータファイル(実行時)

Herokuには、実行中のdynoにメタデータファイルを書き出すベータ機能があります。/etc/heroku/dynoサポートにメールを送信すると、おそらくベータ版に追加される可能性があります。Heroku自体が使用している場所は次のとおりです。

https://github.com/heroku/fix/blob/6c8ab7a/lib/heroku_dyno_metadata.rb

内容は次のようになります。

{
   "dyno":{
      "physical_id":"161bfad9-9e83-40b7-b385-78305db2f168",
      "size":1,
      "name":"run.7145"
   },
   "app":{
      "id":null
   },
   "release":{
      "id":50,
      "commit":"2c3a0b24069af49b3de35b8e8c26765c1dba9ff0",
      "description":null
   }
}

..sorelease.commitはあなたが求めている分野です。SOURCE_VERSION変数が使用可能になるまで、私はこのメソッドを使用していました。

于 2015-02-25T12:20:52.017 に答える
3

2018年には、これが必要です: https ://devcenter.heroku.com/articles/dyno-metadata

heroku labs:enable runtime-dyno-metadata -a <app name>
于 2018-03-02T16:50:09.010 に答える
1

この情報を保存するスクリプトをデプロイする前に実行できます(おそらくYAML上で)

これらのa=`ls`を使用すると('"アポストロフィ"記号は`"逆アキュート"記号ではないことに注意してください)
、変数はこのbashコマンドの結果を
取得するため、git =`gitlog`を実行してから検索できます。必要な情報を保存します。したがって、後で取得できるようになります。

これは役に立ちましたか?

于 2012-08-31T15:06:23.080 に答える