Вести журнал развертываний Capistrano
-
22-07-2019 - |
Вопрос
Есть ли способ вести журнал (локальный или хранящийся на удаленном сервере) каждый раз, когда развертывание выполняется через Capistrano? Было бы очень полезно вести учет того, какая ревизия выполнялась в любое время в прошлом.
Я знаю, что процесс развертывания оставляет за развернутыми файлами последние 10 развертываний в каталоге релизов, но было бы неплохо сохранить больше истории и сделать ее доступной в виде плоского файла.
Решение
capistrano устанавливает несколько полезных переменных, одна из которых называется latest_revision
, которые вы можете выгружать в файл.
task :mark_revision do
log = "#{deploy_to}/revisions.log"
run "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
"echo #{latest_revision} >> #{log};"
end
Другие советы
Нет встроенной функциональности, поэтому другой ответ будет работать отлично; Я мог бы сказать, что вы должны как-то присоединить его к цепочке выполнения по умолчанию, я бы порекомендовал что-то вроде
after :deploy, :mark_revision
еще лучше imho будет что-то вроде:
after :deploy do
log = "#{deploy_to}/revisions.log"
run "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
"echo #{latest_revision} >> #{log};"
end
Я открыл его как билет для обсуждения трекера ошибок Capistrano, возможно, мы внедрим что-то в ядре, чтобы вести лучшие журналы; это, безусловно, отличный вопрос, который мы упустили из виду!
Peritor Labs «Webistrano» делает нечто похожее, сохраняя веб-интерфейс, управляемый базой данных, это позволяет вам регистрировать все, что вам нравится, и перемещать зависимость для развертывания с машин разработчика в более центральное место; часто люди используют Webistrano на своем CI-сервере или хосте репозитория, если они являются хостингом. Больше информации об их Trac: http://labs.peritor.com/webistrano
Ошибка находится здесь: https: // capistrano. lighthouseapp.com/projects/8716-capistrano/tickets/98-log-deployments р>