使用capistrano仅部署到一个角色/服务器

Sea*_*ess 3 ruby capistrano

我正在尝试设置多个角色,一个用于直播,另一个用于开发.它们看起来像这样:

role :live, "example.com"
role :dev, "dev.example.com"
Run Code Online (Sandbox Code Playgroud)

但是,当我运行cap deploy时,它会为两个服务器执行.我尝试了以下内容,它总是在两者上执行.

cap deploy live
cap ROLE=live deploy
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我知道我可以编写一个只响应一个角色的自定义任务,但我不想编写一大堆任务只是为了告诉它响应一个或另一个角色.谢谢!

sca*_*er2 13

Capistrano Multistage绝对是您发布用于部署到环境的示例的解决方案.关于部署到角色或服务器的问题,Capistrano也提供了命令行解决方案.

部署到单个角色(注意ROLES是复数):

cap ROLES=web deploy
Run Code Online (Sandbox Code Playgroud)

要部署到多个角色:

cap ROLES=app,web deploy
Run Code Online (Sandbox Code Playgroud)

要部署到特定服务器(注意HOSTS是复数):

cap HOSTS=web1.myserver.com deploy
Run Code Online (Sandbox Code Playgroud)

要部署到多个服务器:

cap HOSTS=web1.myserver.com,web2.myserver.com deploy
Run Code Online (Sandbox Code Playgroud)

要部署到具有角色的服务器:

cap HOSTS=web1.myserver.com ROLES=db deploy
Run Code Online (Sandbox Code Playgroud)