Capistrano – Nettoyer les anciennes versions

Habituellement, lorsque j’utilise capistrano, je vais supprimer manuellement les anciennes versions d’une application déployée. Je comprends que vous pouvez exécuter cap deploy:cleanup mais qui laisse encore 5 versions. Est-ce que c’est l’intention? Existe-t-il un autre moyen de nettoyer les anciennes versions pour un seul déploiement précédent?

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

Vous pouvez le faire automatiquement en le paramétrant 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 la valeur par défaut, mais plus tard, le développeur a décidé de laisser le choix à l’utilisateur. Dans capistrano 3, il a été ajouté au stream de déploiement par défaut.

Si vous souhaitez supprimer toutes les versions sauf les 3 dernières, vous pouvez par exemple 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 pour que certaines situations puissent 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 le bundle exec cap staging cleanup_all ou cap staging cleanup_all