私は共有ライブラリを持っています。これは、その名前のとおり、DRYを避けるために異なるプロジェクト間で共有されるプロジェクトです。共有ライブラリはGITリポジトリと他のアプリケーション(app1、app2、app3)です。Capitranoはダウンタイムなしで同時に2つのアプリケーションを展開します
app1をデプロイするときは、まずsharedとapp1をデプロイしたいと思います。 app2とapp3と同じです。ダウンタイムを避けるために、共有ライブラリはapp1と同時にデプロイする必要があります。したがって、基本的にdeploy:symlink:releaseは、両方のデプロイメントの終了時に実行する必要があります。
共有ライブラリ内のコードの変更は私がこれまでに成功したセットアップカピストラーノは個別のアプリを展開する必要があり、それに依存しているすべてのプロジェクトも同時に
で展開されていることを確認する必要があります。いくつかの読書の後、私は今、カフを使用していますが、それは私がこの問題を解決するのを手助けしてくれないようです。私は現在、使用しています何
:
namespace :app1 do
task :deploy do
run_locally do
execute 'cap apps:shared staging deploy --dry-run', raise_on_non_zero_exit: true
execute 'cap apps:app1 staging deploy --dry-run', raise_on_non_zero_exit: true
execute 'cap apps:shared staging deploy', raise_on_non_zero_exit: true
execute 'cap apps:app1 staging deploy', raise_on_non_zero_exit: true
end
end
end
実行の問題は、共有が更新される間、そのAPP1は、ダウンタイムを経験され、APP1が展開されています。
この問題を解決するためのベストプラクティスは何ですか?カピストラノの流れをオーバーライドして、タスクの終わりにシンボリックリンクのみを実行する方法はありますか?
新しいアプローチがあります。この回答をご覧くださいhttp://stackoverflow.com/a/40921589/2067375。 (免責事項:私は宝石の所有者です) –