0

さまざまな役割のタスクを作成しようとしています:

namespace :foo do
  task :mytasks, :roles => [:a, :b,] do
    task_a
    task_b
  end

  task :task_a, :roles => :a do
    run 'echo A'
  end

  task :task_b, :roles => :b do
    run 'echo B'
  end
end

'mytasks'を実行すると、次の結果が得られます。

$ cap -n ROLES=b foo:mytasks
  * 2013-03-01 16:59:14 executing `foo:mytasks'
  * executing "echo A"
  * executing "echo B"

すべてのタスクが実行されます、なぜですか?

4

1 に答える 1

0

Capistranoロールは、特定のサーバー(または複数のサーバー)を特定の機能に関連付けることを目的としています。たとえば、「machine-a」はWebサーバーであり、「machine-b」はデータベースサーバーです。これは、特定のタスクにのみ必要なため便利です。特定のマシンで実行されます。

したがって、ロールは、Capistranoの実行時にタスクを実行するマシンを条件付きで選択する方法を意図したものではなく、単にどのマシンでどのタスクを実行するかを選択するだけです。

ただし、探しているものである可能性のあるMultistageと呼ばれる別のCapistrano機能があります。デプロイ先の「ステージ」に基づいて、さまざまなサーバーのセットを指定できます(さらに、それらをさまざまな役割に関連付けることもできます)。したがって、 aステージとbステージがあり、それぞれに個別のサーバーセットがあり、次を使用してデプロイできます。

cap a foo:mytasks
cap b foo:mytasks
于 2013-03-04T06:57:38.600 に答える