2011-11-23 19 views
11

Cuando ejecuto cap deploy, Capistrano intentará crear una carpeta como $HOME/sites/MY_APP/releases/TIMESTAMP. Puedo ver el comando que intenta ejecutar, pero en realidad no creará la carpeta.Capistrano no creará versiones

Puedo copiar el comando directamente de la salida de Capistrano y ejecutar el comando a través de SSH y funciona muy bien sin problemas.

El comando se ve algo así:

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) 

¿Por qué el comando fallará a través de Capistrano, pero tener éxito a través de un terminal SSH?

+0

Capistrano retrocede si algo falla. ¿Puedes publicar la salida de capistrano y, mientras estás en ella, la salida del despliegue de la tapa: verificar? – HectorMalot

+0

Cap returns 'Parece que tiene todas las dependencias necesarias instaladas' desde cap 'deploy: check' – RyanScottLewis

+0

Varias cosas podrían estar apagadas: ¿la carpeta puede ser escrita por el usuario que está utilizando para iniciar sesión en el servidor? ¿Hay algo más que falla en el script de despliegue? – HectorMalot

Respuesta

22

Todavía no estoy seguro de que el problema se extiende desde pero la eliminación de la línea:

set :deploy_via, :remote_cache 

cosas resueltas para mí. Parece un error en el que el directorio de versiones no se está creando y, por lo tanto, al eliminar esa línea se salta ese paso. Un mejor enfoque si se quiere mantener el remote_cache es probablemente añadir otro paso para la configuración de este 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' no ayudó ... acabo de crear un dir 'ejecutar' mkdir -p # {fetch: releases_path} "'de esta manera. – poorva

0

Ignorar parte por debajo de la lineline verde, pero los mantendrá, apenas para la referencia para los demás.

El problema mencionado me estaba sucediendo cuando estaba usando la versión Capistrano 3.9.x. Cuando bajé a la versión 3.4.0 todo estaba funcionando.


Segunda parte de la respuesta:

Una vez que esto sucedió a mí fue cuando las teclas de GitHub no se establecieron en ~/.ssh/.

Debe generar una clave ssh en el servidor. Una vez que se genere el archivo .pub en ~/.ssh, debe dirigirse a github.com (o a cualquier otro servicio) y agregar la nueva clave ssh generada en el sitio web (debe encontrarse en la página de configuración o similar). Además, en el servidor agrega un registro adecuado en ~/.ssh/config archivo que coincide con la identificación de la secuencia de comandos Capistrano despliegue:

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

Así que el archivo config debería tener este aspecto:

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

En mi caso era una cuestión de agregar esta línea en el archivo deploy.rb

set :scm, :git 
Cuestiones relacionadas