我正在寻找一种方法来调用单个Capistrano任务来对不同的角色执行不同的事情。Capistrano是否能够做到这一点,或者我是否需要为每个角色编写特定的任务?
发布于 2009-04-15 23:31:55
在Capistrano中执行此操作的标准方法是:
task :whatever, :roles => [:x, :y, :z] do
x_tasks
y_tasks
z_tasks
end
task :x_tasks, :roles => :x do
#...
end
task :y_tasks, :roles => :y do
#...
end
task :z_tasks, :roles => :z do
#...
end
因此,是的,您确实需要编写单独的任务,但您可以从父任务中调用它们,它们将进行适当的过滤。
发布于 2011-06-20 08:11:47
实际上不是:
% cat capfile
server 'localhost', :role2
task :task1, :roles=>:role1 do
puts 'task1'
end
task :task2 do
task1
end
% cap task2
* executing `task2'
* executing `task1'
task1
roles参数被进一步传递以运行命令等,但似乎并不影响任务是否被实际触发。
对不起,找不到在评论上发表评论的方法,所以我在这里写了它。
发布于 2012-04-18 21:01:49
你也可以这样做
task :foo do
run "command", :roles => :some_role
upload "source", "destination", :roles => :another_role
end
https://stackoverflow.com/questions/754015
复制相似问题