7

現在アクティブなデプロイの時間を追跡するために、環境変数または何かを更新したいと思います。Heroku のアプリ内からこれを自動的に行う方法はありますか?それとも、デプロイ スクリプトの一部として行う必要がありますか? 理想的には、CI に TDDium を使用して動作し、ビルドが成功したときに Heroku にプッシュしてくれるものが欲しいです。

4

3 に答える 3

10

Heroku で環境変数を使用する

Heroku のconfig-varsを使用できます。これらは実際には、Heroku CLI を介して構成する単なる環境変数です。たとえば、現在の日付を DEPLOY_TIMESTAMP という名前の環境変数に格納できます。

heroku config:add DEPLOY_TIMESTAMP=$(date)

これで、アプリケーション内またはコマンド ラインからこの環境変数にアクセスできるようになります。この値には、Rails アプリケーションから、またはローカル プロジェクト ディレクトリからENV['DEPLOY_TIMESTAMP']の出力を解析することによってアクセスできます。heroku config

エイリアスによる自動化

これをある程度自動化したい場合は、Git エイリアスを作成して Heroku にプッシュし、同時に DEPLOY_TIMESTAMP を更新できます。pushのような実際の G​​it コマンドの名前を上書きすることはできませんが、 pushstampなどのカスタム アクションを追加することはできます。例えば:

git config alias.pushstamp \
    '! git push heroku master; heroku config:add DEPLOY_TIMESTAMP=$(date)'

関連項目

git-config(1)

于 2012-06-27T07:11:08.603 に答える
2

読み取り専用の Heroku ファイルシステム内のファイルのタイムスタンプを調べると、前回のデプロイ時刻を確認できます。

これらのタイムスタンプを ls で直接確認することで、これを確認できます。実行中の例heroku run rails c:

irb(main):003:0> puts `ls -la`
total 96
drwx------ 14 u51199 51199  4096 May 14 22:49 .
drwxr-xr-x 15 root   root   4096 Mar 20 09:43 ..
drwx------ 10 u51199 51199  4096 May  7 02:12 app
drwx------  2 u51199 51199  4096 May  7 02:17 bin
drwx------  2 u51199 51199  4096 Mar 14 22:12 .bundle
drwx------  5 u51199 51199  4096 May  7 02:12 config
-rw-------  1 u51199 51199   226 May  7 02:12 config.ru
drwx------  3 u51199 51199  4096 May  7 02:12 db
-rw-------  1 u51199 51199  1138 May  7 02:12 Gemfile
-rw-------  1 u51199 51199 11456 May  7 02:12 Gemfile.lock
-rw-------  1 u51199 51199   542 May  7 02:12 .gitignore
drwx------  5 u51199 51199  4096 May  7 02:12 lib
drwx------  2 u51199 51199  4096 May  7 02:17 log
-rw-------  1 u51199 51199    57 May  7 02:12 Procfile
drwx------  2 u51199 51199  4096 May  7 02:13 .profile.d
drwx------  3 u51199 51199  4096 May  7 02:17 public
-rw-------  1 u51199 51199   249 May  7 02:12 Rakefile
-rw-------  1 u51199 51199   613 May  7 02:12 README.md
-rw-------  1 u51199 51199    31 May  7 02:12 .rspec
drwx------  7 u51199 51199  4096 May  7 02:12 spec
drwx------  3 u51199 51199  4096 May  7 02:18 tmp
drwx------  6 u51199 51199  4096 May  7 02:13 vendor

その結果、アプリが最後にいつデプロイされたかを知りたい場合はFile.mtime、実際のTimeオブジェクトを使用して取得できます。

irb(main):009:0> File.mtime("app")
=> 2015-05-07 02:12:57 +0000
irb(main):010:0> File.mtime("app").class
=> Time
于 2015-05-14T23:44:53.187 に答える
1

1.デプロイスクリプト/タスクを作成しない限り、Herokuにデプロイする際の自動メソッドはありません。(私も2012年6月にこれを検索しました)。デプロイを行うrakeタスクがあり、その一部がGIT_TAGを設定し、私のWebページ(Railsのアプリケーションレイアウト)がそれをページに出力します。

Heroku GIT_TAG構成変数に書き込む方法は次のとおりです(RailsベースのRakeタスクを使用)。

    tag = `git describe master --always`.strip
    `heroku config:add GIT_TAG=#{tag} --app XXXX` 

2. tddiumの場合:tddiumは「ビルド後フック」をサポートするようになりました。標準バージョンを拡張して、そのプロセス中にGIT_TAGを設定します。最初にhttp://blog.tddium.com/2012/05/09/heroku-continuous-deployment/を読んでフォローし、「post_build_hook」タスクにタグを読み取るための何かを追加して、次のようにherokuconfigvarを設定します。

    namespace :tddium do
      def cmd(c)
        system c
      end

      desc "post_build_hook to deploy to dfc-site-qa"
      task :post_build_hook do
        ...use code verbatim from above URL (https://www.tddium.com/support/reference#customization)
        ...
        current_tag = `git describe master --always`.strip
        cmd "heroku config:add GIT_TAG=#{current_tag} --app XXXX" or puts "could not set GIT_TAG to #{current_tag}"
        ...
      end

ノート:

  1. 必要に応じて、上記の「マスター」に置き換えてください。私のデプロイレーキタスク(共有して幸せ)では、ブランチまたはタグに基づいてデプロイすることを許可します(マスターからのみデプロイしたいというherokuの要望を回避するのに便利です)。

  2. tddiumに「post_build_hook」を実行させるには、次のコマンドを実行して、デプロイ後のURLを非アクティブ化する必要があります。tddiumsuite --edit

    「pullurl」には現在の値を使用しますが、「pushurl」は空白(またはデフォルト)に設定します。このステップはブログリンクに記載されていません。

  3. 現在のビルドのtddiumWebページに、post_deploy_hookログファイル(ページの一番下)へのリンクが表示されます。このログファイルを開いて、どのように実行されたかを確認できます(rakeタスクのデバッグ)。

于 2012-07-10T02:17:21.457 に答える