Capistrano - очистка старых версий

Обычно при использовании capistrano я удаляю и удаляю старые версии из развернутого приложения. Я понимаю, что вы можете запустить cap deploy:cleanup, но все еще оставляете 5 выпусков. Это намеченная цель? Есть ли другой способ очистки старых версий до только одного предыдущего развертывания?

Ответ 1

Вы можете использовать переменную :keep_releases, чтобы переопределить значение по умолчанию 5. Проверьте этот вне.

Ответ 2

Вы можете сделать это автоматически, установив это в свой deploy.rb

set :keep_releases, 1
after "deploy:update", "deploy:cleanup" 

В прошлом (я точно не знаю, какая версия) этот обратный вызов был по умолчанию, но позже разработчик решил оставить его пользователю, чтобы решить. В capistrano 3 он был добавлен обратно к потоку развертывания по умолчанию.

Ответ 3

Если вы хотите удалить все релизы, за исключением последних 3, например, вы можете запустить:

cap deploy:cleanup -s keep_releases=3

Ответ 4

У меня была аналогичная проблема. Я хотел сохранить 5 выпусков для нормального развертывания, но для определенных ситуаций вам необходимо было удалить все предыдущие версии.

Я смог сделать это с помощью настраиваемой задачи. Создайте файл lib/capistrano/tasks/cleanup.rake и добавьте следующий код.

desc "Remove all but the last release"
task :cleanup_all do
    set :keep_releases, 1
    invoke "deploy:cleanup"
end

Для запуска используйте bundle exec cap staging cleanup_all или cap staging cleanup_all