私は最近Capistrano 2からCapistrano 3に切り替わりました。多くの変更がありました。新しいCapistranoをプロジェクトでCapistrano 2を使って修正しようとしています。私は取り組んでいます。Capistrano 3役割に固有のタスク
私が今直面している最大の問題は、役割によるフィルタリングです。
ROLES=web,worker cap production deploy
しかし、すべての役割を持つ単一のサーバーを使用している場合は、実際には何もしないようです。
カピストラーノ2で、私は実行することができます:
cap worker deploy
、すべての労働者のタスクが適用されます。 Capistrano 2はタスクに指定された役割を持ち、役割が要求されなかった場合、タスクはスキップされました(ほとんどの場合)。しかし、Capistrano 3の場合はそうではないようですが、フィルターは各役割ごとに特定のサーバーを持つマルチサーバー環境で優れています。しかし、サーバーが役割を共有している場合や、単一のサーバーがある場合は、それはちょっと変わってしまいます。新しいCapistranoのタスクでは、タスクが実行されるべきかどうか、または役割に基づいていないかどうかを確認するのではなく、特定の役割を持つホストがあるかどうかをチェックするようです。 ROLESはタスクではなくサーバーを制限することを意図しているようです。
私はこれがCapistrano 3で可能かどうか疑問に思います。これを表示する別の方法は、名前でタスクをグループ化することです。実行するタスクのグループを選択したいと思います。
私はいくつかの工夫でこれを達成することができ、私は動的ロールに基づいてタスクを添付することができ、私は役割に応じてロードするためにレシピかを選択でき、それに基づいてタスクかどうかを役割が存在するかどうかを確認し、スキップ可能性がありvarを使用したり、ロールという名前のファイルでタスクをグループ化したり、ROLESなどに応じてその動的ローディングを実行したりすることができます。
どのような考えですか?