2011-11-23 18 views
11

Quando corro cap deploy, Capistrano tenterà di creare una cartella come $HOME/sites/MY_APP/releases/TIMESTAMP. Riesco a vedere il comando che tenta di eseguire, ma in realtà non creerà la cartella.Capistrano non creerà le versioni

Posso copiare il comando direttamente dall'output di Capistrano ed eseguire il comando su SSH e funziona perfettamente senza problemi.

Il comando è una cosa così:

cp -RPp /home/some_user/sites/my_cool_app/shared/cached-copy /home/some_user/sites/my_cool_app/releases/20111123164239 && (echo 59bf115868c2430cd0475ca1596998f1cfa3c084 > /home/some_user/sites/my_cool_app/releases/20111123164239/REVISION) 

Perché il comando di non riuscire attraverso Capistrano, ma avere successo attraverso un terminale SSH?

+0

Capistrano rotola indietro se qualcosa il resto fallisce. Puoi pubblicare l'output di capistrano e, mentre ci sei, l'output di cap si distribuisce: check? – HectorMalot

+0

Cap restituisce 'Sembra che tutte le dipendenze necessarie siano installate da cap' deploy: check' – RyanScottLewis

+0

Alcune cose potrebbero essere disattivate: la cartella è scrivibile dall'utente che si sta utilizzando per accedere al server? Qualcos'altro sta fallendo nello script di distribuzione? – HectorMalot

risposta

22

io non sono ancora sicuro dove il problema si estende dalla rimozione, ma la linea:

set :deploy_via, :remote_cache 

cose risolta per me. Sembra un bug in cui la directory releases non viene creata e quindi la rimozione di tale linea salta tale passaggio. Un approccio migliore se si desidera mantenere la remote_cache è probabilmente quello di aggiungere un altro passo per l'installazione in questo modo:

after "deploy:setup", "deploy:create_release_dir" 
namespace :deploy do 
    task :create_release_dir, :except => {:no_release => true} do 
    run "mkdir -p #{fetch :releases_path}" 
    end 
end 
+0

'set: deploy_via,: remote_cache' non ha aiutato .. ho appena creato una dir 'run "mkdir -p # {fetch: releases_path}"' come questo. – poorva

0

Ignora parte al di sotto del lineline verde, ma io li conservare, appena per riferimento per gli altri.

Il problema menzionato stava accadendo per me quando stavo usando la versione Capistrano 3.9.x. Quando ho effettuato il downgrade alla versione 3.4.0, tutto funzionava.


Seconda parte della risposta:

Una volta che questo è successo a me è stato quando le chiavi GitHub non sono stati istituiti in ~/.ssh/.

È necessario generare una chiave ssh sul server. Una volta generato il file .pub in ~/.ssh, si dovrebbe andare su github.com (o qualsiasi altro servizio) e aggiungere la chiave ssh appena generata sul sito web (dovrebbe essere trovata nella pagina delle impostazioni o simile). Inoltre, sul server di aggiungere record di corretta in ~/.ssh/config file che corrisponde l'identificazione nello script capistrano deploy:

set :repo_url, proc { "[email protected]:your_git_name/#{fetch(:application)}.git" } 

Quindi il file config dovrebbe essere simile a questo:

Host github.com 
    HostName github.com 
    User git 
     IdentityFile ~/.ssh/id_rsa_my_new_key_on_the_server 
0

Nel mio caso era una questione di aggiungere questa linea nel file di deploy.rb

set :scm, :git 
Problemi correlati