我在命名空间中有一个命名空间和几个任务,在deploy:updated之后运行。这是一个例子:
namespace :myservice do
task :start do
on roles(:app) do
sudo :start, "my/application"
end
end
end
我喜欢这些任务之一,只能在某个环境或主机上运行。我怎么能做到这一点?
我希望能够过滤环境,例如:
namespace :myservice do
task :start do
on roles(:app), env(:vagrant) do
sudo :start, "my/application"
end
end
end
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
似乎capistrano多阶段会帮助你。 https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension
基本上,您将有一个名为vagrant
的 stage ,您可以在其中定义配置变量,然后由主deploy.rb
脚本引用这些变量并对其执行操作
这是一个概念性的例子,
# config/deploy/production.rb
set :should_start_my_application, false
# config/deploy/vagrant.rb
set :should_start_my_application, true
# config/deploy.rb
namespace :myservice do
task :start do
on roles(:app) do
if should_start_application then
sudo :start, "my/application"
end
end
end
end