web-dev-qa-db-fra.com

Capistrano - nettoyer les anciennes versions

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?

124
Josh

Vous pouvez utiliser la variable :keep_releases pour remplacer la valeur par défaut de 5. Vérifiez this out.

153
jcrossley3

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.

130
Diego Plentz

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
41
jesse cai

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

0
grappler