アプリバージョンを設定する


あなたがCapistranoを彼らのlaravelプロジェクトを展開するのを使う少数の人々のならば(我々は存在します!)この記事はうまくいけばあなたの役に立つでしょう.
あなたのアプリケーションのバージョン管理は、理由の数に最適ですし、生産環境でこの値へのアクセスを必要とするいくつかのユースケースがあります.
私の特定のケースでは、私は頻繁に更新を受信する大きなダッシュボードを維持し、フッターに表示されているバージョン番号を持つことは、迅速な視覚的な参照として役立ちます.

アプローチ
幸いにも、これは特に複雑な仕事ではありません.以下に必要なことを示します.
確実にするAPP_VERSION パラメータは.env ファイルはsecrets ディレクトリを作成します.
タスクを追加するdeploy.rb ユーザがバージョン文字列をプロンプトするファイルで、.env リリースディレクトリ内のファイル.

タスクの追加
以下に使用するタスクコードを示します.
task :set_version do
    ask(:app_version, "")
    on roles(:laravel) do
        execute :sed, "-i 's/^APP_VERSION.*/APP_VERSION=#{fetch(:app_version)}/' #{release_path}/.env"
    end
end
上のスニペットで何が起こっているかを打破しましょう.
  • 我々は仕事を定義しているset_version , 実行されると、アプリケーションのバージョン文字列をユーザーに要求します.
  • 値が受信されると、app_version 設定変数.
  • この仕事は1 A以内にあるlaravel ファイルの名前空間on roles(:laravel) ライン.
  • The execute ディレクティブは1行のbashコマンドを使用しますsed , のインライン編集を行うには.env リリースパスのルートにあるファイル.
  • The sed regexマッチを行うコマンドAPP_VERSION を使って行全体を新しい値に置き換えます.
  • まだsed コマンドはfetch(:app_version) , これは以前に格納された設定値です.
  • 最後に、次の例で実行するようにタスクを設定できます.
    namespace :deploy do
        after :updated, "laravel:set_version"
    end
    

    設定キャッシュのクリア
    もちろん、リリースディレクトリ内の設定キャッシュをクリアする必要があります.env ファイル.
    あなたは既に何らかの方法でこれをしているでしょう私の好ましい方法は以下のようなタスクを使うことです.
     task :clear_config do
         on roles(:laravel) do
             within release_path do
                 execute :php, "artisan config:cache"
                 execute :php, "artisan view:cache"
                 execute :php, "artisan route:cache"
                 execute :php, "artisan cache:clear"
             end
         end
     end
    
    ただ、アプリケーションのバージョンタスクが実行された後に設定キャッシュをクリアしてください.

    ありがとう
    私は、あなたがこれを読む時間があることに感謝します;うまくいけばそれは道に沿って誰かを助ける.