2011-11-23 17 views
11

Po uruchomieniu cap deploy Capistrano podejmie próbę utworzenia folderu, takiego jak $HOME/sites/MY_APP/releases/TIMESTAMP. Widzę polecenie, które próbuje uruchomić, ale w rzeczywistości nie utworzy folderu.Capistrano nie tworzy wersji

Mogę skopiować polecenie bezpośrednio z wyjścia Capistrano i uruchomić polecenie przez SSH i działa świetnie bez żadnych problemów.

Komenda wygląda coś tak:

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) 

Dlaczego komenda nie przez Kapistrana, ale sukces poprzez terminal SSH?

+0

Capistrano wycofuje się, jeśli coś innego zawiedzie. Czy możesz opublikować dane wyjściowe capistrano, a podczas gdy jesteś na nim, wyjście cap wdrożyć: sprawdzić? – HectorMalot

+0

Cap zwraca 'Wygląda na to, że masz zainstalowane wszystkie niezbędne zależności' od cap 'deploy: check' – RyanScottLewis

+0

Wiele rzeczy może być wyłączonych: Czy folder jest zapisywany przez użytkownika, którego używasz do zalogowania się na serwerze? Czy coś innego zawodzi w skrypcie wdrażania? – HectorMalot

Odpowiedz

22

ja nadal nie jestem pewien, skąd rozciąga się od problemu, ale usunięcie wiersz:

set :deploy_via, :remote_cache 

rozwiązany rzeczy dla mnie. Wygląda jak błąd, w którym katalog wydania nie jest tworzony, więc usunięcie tej linii pomija ten krok. Lepszym rozwiązaniem, jeśli chcesz zachować remote_cache jest prawdopodobnie dodać kolejny krok, aby ustawić tak:

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' nie pomógł .. Właśnie utworzyłem katalog 'run' mkdir -p # {fetch: releases_path} "" w ten sposób. – poorva

0

Ignoruj ​​część poniżej zielonej lineline, ale będę je zachować tylko dla odniesienia dla innych.

Wspomniany problem miał miejsce podczas używania wersji Capistrano 3.9.x. Po obniżeniu wersji do wersji 3.4.0 wszystko działało.


Druga część odpowiedzi:

Gdy to się stało dla mnie było, gdy klawisze GitHub nie zostały utworzone w ~/.ssh/.

Powinieneś wygenerować klucz ssh na serwerze. Po wygenerowaniu pliku .pub w ~/.ssh powinieneś przejść do strony github.com (lub dowolnej innej usługi) i dodać nowo wygenerowany klucz ssh na stronie internetowej (powinien on znaleźć się na stronie ustawień lub podobnej). Również na serwerze dodać odpowiedni zapis w ~/.ssh/config pliku, który pasuje do identyfikacji w skrypcie capistrano deploy:

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

Więc plik config powinna wyglądać następująco:

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

w moim przypadku była kwestia dodania tej linii do pliku deploy.rb.

set :scm, :git 
Powiązane problemy