我的项目有一个多步骤的管道,其中包括一些步骤,如爬行,自然语言处理等,但我只是将它们称为Step1,Step2等。另外,我希望能够部署到不同的环境(开发,生产等)。
我想我将为Capistrano使用多阶段组件,以便部署到不同的环境(例如,cap dev deploy vs cap prod deploy)。
在每个管道步骤中使用角色似乎也很直观。但是,每个步骤都独立于管道的其余部分运行,因此每个步骤都可以独立于其他步骤重新启动/部署。Capistrano似乎并不显式地支持仅针对特定角色运行任务。有什么好方法可以做到这一点呢?
做到这一点的最佳方式是专门为每个角色定义任务吗?如果角色之间有一些共同的任务,该怎么办?也许帮助器方法就是答案?
发布于 2011-07-24 05:22:13
我不确定这是否就是您想要的,但是当我想只针对某个特定的角色做一些事情时,我会使用capistrano shell。例如,假设我想要部署,但只部署到我的应用程序服务器,我可能会执行以下操作:
cap production shell
cap>with app
cap>!deploy #or any other cap task you have
如果需要,您还可以按计算机来确定作用域。再一次:
cap production shell
cap>on <machine name or ip>
cap>!deploy #or any other cap task you have
希望能有所帮助,
史考特
发布于 2013-08-14 22:16:37
如果您希望从命令行运行capistrano任务,但仅针对已定义角色的子集,则可以使用ROLES
参数。
以下命令仅为角色was
执行任务category:task
cap ROLES=was category:task
ROLES
参数是多值的,因此您可以添加更多用逗号分隔的角色:
cap ROLES=was,db category:task
有关更多详细信息,请参阅invoke文档
发布于 2011-07-01 16:14:31
检查此讨论Creating a Capistrano task that performs different tasks based on role
task :stop_memcached, :roles => :memcache do
...
end
https://stackoverflow.com/questions/6528313
复制相似问题