Habituellement, lorsque j'utilise capistrano, je supprime manuellement les anciennes versions d'une application déployée. Je comprends que vous pouvez exécuter cap deploy:cleanup
mais cela laisse encore 5 versions. Est-ce que c'est son but? Existe-t-il un autre moyen de nettoyer les anciennes versions avec seulement 1 déploiement précédent?
Vous pouvez utiliser la variable :keep_releases
pour remplacer la valeur par défaut de 5. Vérifiez this out.
Vous pouvez le faire automatiquement en le définissant dans votre deploy.rb
set :keep_releases, 1
after "deploy:update", "deploy:cleanup"
Dans le passé (je ne sais pas exactement quelle version), ce rappel était celui par défaut, mais plus tard, le développeur a décidé de laisser à l'utilisateur le soin de décider. Dans capistrano 3, il a été ajouté au flux de déploiement par défaut.
Si vous souhaitez supprimer toutes les versions sauf les 3 dernières, par exemple, vous pouvez exécuter:
cap deploy:cleanup -s keep_releases=3
J'avais un problème similaire. Je voulais conserver les 5 versions pour les déploiements normaux, mais nécessaire dans certaines situations pour pouvoir supprimer toutes les versions précédentes.
J'ai pu le faire avec une tâche personnalisée. Créez un fichier lib/capistrano/tasks/cleanup.rake
et ajoutez le code suivant.
desc "Remove all but the last release"
task :cleanup_all do
set :keep_releases, 1
invoke "deploy:cleanup"
end
Pour exécuter, utilisez bundle exec cap staging cleanup_all
ou cap staging cleanup_all