首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅为某些角色运行Capistrano任务

仅为某些角色运行Capistrano任务
EN

Stack Overflow用户
提问于 2011-06-30 07:10:18
回答 4查看 4.2K关注 0票数 8

我的项目有一个多步骤的管道,其中包括一些步骤,如爬行,自然语言处理等,但我只是将它们称为Step1,Step2等。另外,我希望能够部署到不同的环境(开发,生产等)。

我想我将为Capistrano使用多阶段组件,以便部署到不同的环境(例如,cap dev deploy vs cap prod deploy)。

在每个管道步骤中使用角色似乎也很直观。但是,每个步骤都独立于管道的其余部分运行,因此每个步骤都可以独立于其他步骤重新启动/部署。Capistrano似乎并不显式地支持仅针对特定角色运行任务。有什么好方法可以做到这一点呢?

做到这一点的最佳方式是专门为每个角色定义任务吗?如果角色之间有一些共同的任务,该怎么办?也许帮助器方法就是答案?

EN

回答 4

Stack Overflow用户

发布于 2011-07-24 05:22:13

我不确定这是否就是您想要的,但是当我想只针对某个特定的角色做一些事情时,我会使用capistrano shell。例如,假设我想要部署,但只部署到我的应用程序服务器,我可能会执行以下操作:

代码语言:javascript
运行
复制
cap production shell
cap>with app
cap>!deploy #or any other cap task you have

如果需要,您还可以按计算机来确定作用域。再一次:

代码语言:javascript
运行
复制
cap production shell
cap>on <machine name or ip>
cap>!deploy #or any other cap task you have

希望能有所帮助,

史考特

票数 3
EN

Stack Overflow用户

发布于 2013-08-14 22:16:37

如果您希望从命令行运行capistrano任务,但仅针对已定义角色的子集,则可以使用ROLES参数。

以下命令仅为角色was执行任务category:task

代码语言:javascript
运行
复制
cap ROLES=was category:task

ROLES参数是多值的,因此您可以添加更多用逗号分隔的角色:

代码语言:javascript
运行
复制
cap ROLES=was,db category:task

有关更多详细信息,请参阅invoke文档

票数 2
EN

Stack Overflow用户

发布于 2011-07-01 16:14:31

检查此讨论Creating a Capistrano task that performs different tasks based on role

代码语言:javascript
运行
复制
task :stop_memcached, :roles => :memcache do 
...
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6528313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档