Distribuire da Git utilizzando Capistrano senza un hard reset?
-
21-08-2019 - |
Domanda
Ho un problema nel momento in cui stiamo correndo un CMS all'interno di un sito (browsercms) che consente caricare i file dell'utente. Tuttavia, ogni volta che fare un deploy Capistrano gestisce un reset hardware così bombardare qualsiasi caricato file.
Qualcuno ha qualche suggerimento su come evitare che l'hard reset, e basta fare un tiro, o un modo di spostare i file caricati altrove, senza dover modificare il codice dell'applicazione?
Soluzione
Questo potrebbe non essere l'approccio giusto.
È necessario includere cartella 'immagini' nel vostro .gitignore e link simbolico alla cartella $ current_release / immagini per $ condiviso / immagini.
Questo può essere fatto automaticamente su ogni schieramento, se si mette in deploy.rb:
task :link_imgs do
run "ln -s #{shared_path}/photos #{release_path}/photos"
end
after "deploy:update_code", :link_imgs
Ho fatto la stessa cosa con il mio CMS e funziona come un fascino
Altri suggerimenti
Questo non soddisfa i tuoi criteri di "senza dover modificare il codice dell'applicazione".
Tuttavia dopo l'esecuzione in un problema simile ho spostato la mia immagine caricata da /public/images
al /public/system/images
il /public/system
directory non è 'di versione' da ogni schieramento Capistrano in modo che le immagini sopravvivere.
Potrebbe essere il Capistrano 'versioni' la causa del problema (invece di un reset git)
cap deploy chiamate distribuire: update e distribuire: restart
distribuire: update rende il controllo delle versioni, la copia di roba
distribuire: restart fa il vero riavvio, sovraccaricarlo al vostro convenince, di solito in config / deploy.rb file
namespace :deploy do
desc "Softly restart the server"
task :restart, :roles => :app, :except => { :no_release => true } do
my_own.restart_recipe
end
end