Я всегда только что создал задачи колпачковых для каждой цели развертывания и использовать их в командной строке:
# deploy.rb
task :stage do
server 10.0.0.1 ...
end
> cap stage deploy
Вы также можете определить настройки задачи внутри каждой целевой задачи, такие как Deploy, что делает очистку в но не в производстве.
Поскольку эти задачи развертывания целевых задач редко бывают очень большими, я никогда не видел смысла что-то вроде установки расширений крышки для многоступенчатых, но я полагаю, что ситуации других могут быть разными.
Я думаю, что производство должно быть отделено от других условий, в противном случае существует опасность того, что неправильные процессы в стадии постановки или тому подобное могут повлиять на производительность.
Иногда я определяю задачи с крышкой для удобства постановки, такие как взрыв базы данных и ее перезагрузка с самого последнего производственного дампа. Эти задачи должны проверять их цель развертывания с помощью заданной переменной или тому подобного и отказаться от запуска для производства в качестве страхования от поздней ночной опечатки.
Заманчиво положить много пользовательского поведения в ваш deploy.rb, но я обнаружил, что это имеет тенденцию откусывать назад и требует много усилий по обслуживанию в качестве среды или изменения cap api.
Другая практика, которую я видел в более крупных средах, заключается в том, чтобы иметь учетную запись оболочки с проверкой, которая отслеживает стабильную ветвь, специально настроенную для работы в качестве контрольной точки capistrano. Вы используете ssh и запускаете команды cap вместо локально. Это может помочь избежать проблем, в которых локальный checkout's deploy.rb имеет изменения, которые вы не готовы использовать при развертывании на производство. Это меньше проблема с git vs svn, но все же нужно быть осторожным, чтобы подумать о том, что их местный deploy.rb в данный момент работает с командами командной строки.
Heroku действительно делает этот материал легким в эти дни, и EY и другие далеко не совсем позади.
Извините, мне пришлось удалить две гиперссылки на эти сообщения в блоге, чтобы опубликовать вопрос. Любой, кто заинтересован в том, чтобы узнать больше, может зайти в Google с этими пунктами прямо на стол. – trisignia
Зачем вам удалять гиперссылки? –
Я новый пользователь здесь, и StackOverflow еще не дал мне опубликовать гиперссылки в моих вопросах. – trisignia