Недавно я переключился с Capistrano 2 на Capistrano 3, многое изменилось, и у меня возникли некоторые проблемы, пытаясь адаптировать новый Capistrano к тому, что он делал с Capistrano 2 в проекте Я работаю на.Capistrano 3 Задачи, связанные с ролями
Самая большая проблема, с которой я сталкиваюсь в данный момент, - это фильтрование по ролям. Я знаю, что вы можете сделать:
ROLES=web,worker cap production deploy
, но если у вас есть один сервер со всеми ролями, которые, кажется, ничего не делать на самом деле.
С Capistrano 2 я мог бежать:
cap worker deploy
и все задачи, рабочие будут применяться. Capistrano 2 имел роли, указанные в задачах, и если роль не запрашивалась, задачи были пропущены (в большинстве случаев). Однако это не похоже на Capistrano 3, фильтр отлично работает в многосерверной среде, где у вас есть определенные серверы для каждой роли. Но если серверы разделяют роль или есть один, он становится немного странным. В новых задачах Capistrano, по-видимому, проверяется наличие хоста с заданной ролью, а не проверка выполнения задачи или нет на основе роли. Мне кажется, что ROLES предназначен для ограничения серверов, а не задач.
Так что я задаюсь вопросом, возможно ли это в Capistrano 3. Другой способ просмотра это группировать задачи под именем. Я хотел бы выбрать, какая группа задач выполняется.
Я могу добиться этого с помощью некоторых упражнений, я мог бы проверить, присутствует ли ROLES и пропустить задание или нет на нем, я мог бы выбрать, какие рецепты загружаться в зависимости от роли, я мог бы динамически присоединять задачи на основе ROLES var или, возможно, группировать задачи в именах файлов с именами и выполнять динамическую загрузку в зависимости от ROLES и т. д., но, возможно, есть что-то, чего я не вижу.
Любые мысли?