创建Capistrano任务,根据角色执行不同的任务

Mic*_*ael 17 ruby capistrano

我正在寻找一种方法来调用单个Capistrano任务来执行不同角色的不同操作.Capistrano能够做到这一点,还是我为每个角色编写了一个特定的任务?

Sar*_*Mei 17

在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
Run Code Online (Sandbox Code Playgroud)

所以,是的,您确实需要编写单独的任务,但您可以从父任务中调用它们,它们将适当地过滤.

  • 这对我不起作用,所有三个任务都被执行了. (3认同)
  • 对我来说也没用.所有任务都会执行. (3认同)

tim*_*urb 5

实际上没有:

% 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
Run Code Online (Sandbox Code Playgroud)

:roles param进一步传递给run命令等,但似乎并不影响该任务是否实际被触发.

对不起,没有找到评论评论的方式,所以我在这里写了.