Запуск задач Capistrano только для определенных ролей - PullRequest
8 голосов
/ 30 июня 2011

В моем проекте есть многошаговый конвейер, который включает в себя некоторые шаги, такие как Crawling, NLP и т. Д., Но я просто буду называть их Step1, Step2 и т. Д. Кроме того, я хочу иметь возможность развертывания в различных средах (dev , продукт и т. д.).

Я полагаю, что буду использовать многоступенчатый компонент для Capistrano для развертывания в различных средах (например, развертывание cap dev против развертывания cap prod).

Также, кажется, имеет смысл использовать роли для каждого шага конвейера. Однако каждый шаг выполняется довольно независимо от остальной части конвейера, поэтому каждый шаг может быть перезапущен / развернут независимо от других шагов. Не похоже, что Capistrano явно поддерживает выполнение задач только для определенной роли. Какой хороший способ сделать это?

Является ли лучший способ сделать это, определяя задачи конкретно для каждой роли? Что, если между ролями есть общие задачи? Может быть, там есть вспомогательные методы?

Ответы [ 4 ]

3 голосов
/ 24 июля 2011

Не уверен, что это именно то, что вы ищете, но когда я хочу сделать что-то только для определенной роли, я использую оболочку capistrano.Например, скажем, я хочу развернуть, но только на своих серверах приложений, я мог бы сделать следующее:

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

Надеюсь, это поможет,

Скотт

2 голосов
/ 14 августа 2013

Если вы хотите запустить задачу capistrano из командной строки, но только для подмножества определенных ролей, вы можете использовать параметр ROLES.

Команда ниже выполняет задачу category:task только для роли was:

cap ROLES=was category:task

Параметр ROLES является многозначным, поэтому вы можете добавить больше ролей, разделенных запятой:

cap ROLES=was,db category:task

Для получения более подробной информации вы можете обратиться к invoke Документация

1 голос
/ 29 ноября 2012

Не уверен, в какой версии была добавлена ​​функция, но cap будет искать в переменной среды ROLES, чтобы определить, какие роли запускать, так что

$ ROLES=db cap deploy
1 голос
/ 01 июля 2011

Проверьте это обсуждение Создание задачи Capistrano, которая выполняет различные задачи в зависимости от роли

task :stop_memcached, :roles => :memcache do 
...
end
...