我正在使用Capistrano来处理我的部署,我在我的设置中有两个不同的角色 - 网络和:处理.它们都具有通常的:部署任务,但是:对于两种类型的服务器,:restart任务需要不同.
所以我的第一次尝试是这样的:
task :restart, :roles => :web do
run "... web related restart stuff ..."
end
task :restart, :roles => :processing do
run "... processing related restart stuff ..."
end
Run Code Online (Sandbox Code Playgroud)
哪个不起作用,因为第二个:restart(for:处理角色)替换第一个:restart(对于:web角色),而:web:restart永远不会发生.
我快速浏览了一下,看看我是否可以编写条件代码,具体取决于运行任务时服务器可能处于哪个角色(或角色)但是旁边没有任何文档用于此类事情.有任何想法吗?
您应该使用名称空间:
namespace :web do
desc "Restart web servers"
task :restart, :roles => :web do
# Restart Magic Here
end
end
namespace :process do
desc "Restart process servers"
task :restart, :roles => :process do
# Restart magic here
end
end
# Optionally:
task :restart do
web.restart
process.restart
end
Run Code Online (Sandbox Code Playgroud)
这就是我想要的!
另外,要在命令行中使用这些,您可以使用
$ cap <stage> # (if using multistage)
$ cap web:restart # Restarts web servers
$ cap process:restart # Restarts process servers
$ cap restart # Restarts both process and web servers
Run Code Online (Sandbox Code Playgroud)
(来源:我是Capistrano的维护者.)
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |