Conserva il registro delle distribuzioni di capistrano
-
22-07-2019 - |
Domanda
Esiste un modo per mantenere un registro (locale o memorizzato su un server remoto) ogni volta che viene eseguita una distribuzione tramite capistrano? Sarebbe molto utile tenere traccia di quale revisione era in corso in un dato momento nel passato.
So che il processo di distribuzione lascia dietro di sé i file distribuiti per le ultime 10 distribuzioni nella directory dei rilasci, ma sarebbe bello conservare più cronologia e renderla accessibile sotto forma di file flat.
Soluzione
capistrano imposta alcune utili variabili, una chiamata latest_revision
che puoi scaricare in un file.
task :mark_revision do
log = "#{deploy_to}/revisions.log"
run "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
"echo #{latest_revision} >> #{log};"
end
Altri suggerimenti
Non ci sono funzionalità integrate, quindi l'altra risposta funzionerebbe perfettamente; Potrei dire che dovresti collegarlo alla catena di esecuzione predefinita in qualche modo, consiglierei qualcosa come
after :deploy, :mark_revision
di Imho ancora meglio sarebbe qualcosa di simile:
after :deploy do
log = "#{deploy_to}/revisions.log"
run "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
"echo #{latest_revision} >> #{log};"
end
L'ho aperto come ticket di discussione sul bug tracker di Capistrano, forse implementeremo qualcosa nel core per mantenere registri migliori; è certamente una grande domanda che abbiamo duramente trascurato!
Peritor Labs "Webistrano" fa qualcosa di simile, mantenendo un front-end web-based basato su database, questo ti permette di registrare quello che vuoi e spostare la dipendenza per la distribuzione dai computer degli sviluppatori in un posto più centrale; spesso le persone usano Webistrano sul proprio server CI o host repository se sono self-hosting. Maggiori informazioni sul loro Trac: http://labs.peritor.com/webistrano
Il bug risiede qui: https: // capistrano. lighthouseapp.com/projects/8716-capistrano/tickets/98-log-deployments