2010-01-23 25 views
123

Normalerweise, wenn ich capistrano verwende, werde ich alte Releases von einer bereitgestellten Anwendung manuell löschen. Ich verstehe, dass Sie cap deploy:cleanup ausführen können, aber das lässt noch 5 Versionen. Ist das der beabsichtigte Zweck? Gibt es eine andere Möglichkeit, alte Versionen auf nur eine vorherige Bereitstellung zu bereinigen?Capistrano - bereinigen alte Releases

+0

es ist immer eine gute Idee, einige frühere Versionen zu halten, dann ausführen, wenn Sie einen großen Fehler letzte deploy enthält, kann man schnell mit Capistrano Rollback (cap deploy: Rollback) auf die vorherige Version, bis Sie es beheben. – damoiser

Antwort

150

Sie können die :keep_releases Variable verwenden, um den Standardwert von 5 zu überschreiben. Überprüfen Sie this aus.

+0

Großartig. Genau das habe ich gesucht. Vielen Dank. – Josh

+4

Gern geschehen! Du hättest die Antwort einfach annehmen können! :-) – jcrossley3

+2

@Josh, definitiv, akzeptiere diese Antwort, wenn es dein Problem gelöst hat. Sie erhalten beide Rep-Punkte auf diese Weise. –

126

Sie könnten dies automatisch durch die

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

In der Vergangenheit in Ihrem deploy.rb Einstellung (ich weiß nicht genau, welche Version) dieser Rückruf war der Standard, aber später die Entwickler beschlossen, verlassen es dem Benutzer zu entscheiden. In capistrano 3 wurde es zum Standardbereitstellungsablauf hinzugefügt.

+1

Danke, Diego. Ihre Antwort funktioniert in Capistrano v2.14.1 korrekt. – scarver2

+1

Dank @diego das hat wirklich geholfen! – gouravtiwari21

+1

Sieht aus wie [Capistrano 3 ruft 'deploy: cleanup' als Teil des Deploy-Flusses auf] (https://github.com/capistrano/capistrano/blob/690afc0c5c3c43d2920b0bfdeb9323c286b12106/lib/capistrano/tasks/deploy.rake#L23). – Dennis

38

Wenn Sie alle Meldungen mit Ausnahme der letzten 3 zum Beispiel löschen möchten Sie ausführen können:

cap deploy:cleanup -s keep_releases=3 
+3

Funktioniert nicht. 'optionParser :: InvalidOption: ungültige Option: s' – Snowman

0

hatte ich ein ähnliches Problem. Ich wollte die 5 Releases für normale Bereitstellungen behalten, musste aber in bestimmten Situationen alle vorherigen Releases entfernen können.

Ich konnte dies mit einer benutzerdefinierten Aufgabe tun. Erstellen Sie eine Datei lib/capistrano/tasks/cleanup.rake und fügen Sie den folgenden Code hinzu.

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

Zur Verwendung bundle exec cap staging cleanup_all oder cap staging cleanup_all