2010-09-30 4 views
9

Je reçois l'erreur suivante lorsque j'essaie de faire un déploiement via un compte d'utilisateur "déploiement".Capistrano déploiement cauchemar

1782001..ae10d1b master -> master 
** transaction: start 
    * executing `deploy:update_code' 
    updating the cached checkout on all servers 
    executing locally: "git ls-remote [email protected]:username/app_name.git master" 
    * executing "if [ -d /var/www/app_name/shared/cached-copy ]; then cd /var/www/app_name/shared/cached-copy && git fetch -q origin && git reset -q --hard ae10d1bfe43820d8d69bbc92761a3f666cf56765 && git clean -q -d -x -f; else git clone -q [email protected]:username/app_name.git /var/www/app_name/shared/cached-copy && cd /var/www/app_name/shared/cached-copy && git checkout -q -b deploy ae10d1bfe43820d8d69bbc92761a3f666cf56765; fi" 
    servers: ["173.230.158.13"] 
    [173.230.158.13] executing command 
** [173.230.158.13 :: out] error: cannot open .git/FETCH_HEAD: Permission denied 
** 
    command finished 
*** [deploy:update_code] rolling back 
    * executing "rm -rf /var/www/app_name/releases/20100930022459; true" 
    servers: ["173.230.158.13"] 
    [173.230.158.13] executing command 
    command finished 
failed: "sh -c 'if [ -d /var/www/app_name/shared/cached-copy ]; then cd /var/www/app_name/shared/cached-copy && git fetch -q origin && git reset -q --hard ae10d1bfe43820d8d69bbc92761a3f666cf56765 && git clean -q -d -x -f; else git clone -q [email protected]:username/app_name.git /var/www/app_name/shared/cached-copy && cd /var/www/app_name/shared/cached-copy && git checkout -q -b deploy ae10d1bfe43820d8d69bbc92761a3f666cf56765; fi'" on 173.230.158.13 

Je peux vérifier que je peux faire un « clone git » en utilisant le compte de déploiement sur le serveur et ssh à [email protected]

La même recette fonctionne très bien si je spécifie « root » en tant que: variable utilisateur.

Voici mon deploy.rb

http://pastie.org/1189919

Aussi, je ne suis pas sûr de ce que fait exactement la: variable groupe ne dans cette recette.

drwxr-xr-x 14 deploy www-data 4096 2010-09-29 20:38 . 
drwxr-xr-x 10 deploy www-data 4096 2010-09-29 20:38 .. 
drwxr-xr-x 7 deploy www-data 4096 2010-09-29 13:13 app 
-rwxr-xr-x 1 deploy www-data 240 2010-09-29 20:38 Capfile 
drwxr-xr-x 5 deploy www-data 4096 2010-09-29 20:38 config 
drwxr-xr-x 4 deploy www-data 4096 2010-09-29 20:38 db 
drwxr-xr-x 2 deploy www-data 4096 2010-09-29 20:38 doc 
drwxr-xr-x 9 deploy www-data 4096 2010-09-29 20:38 generate 
drwxr-xr-x 8 deploy www-data 4096 2010-09-29 20:38 .git 
-rwxr-xr-x 1 deploy www-data 156 2010-09-29 20:38 .gitignore 
-rwxr-xr-x 1 deploy www-data 145 2010-09-29 20:38 .gitignore~ 
drwxr-xr-x 3 deploy www-data 4096 2010-09-29 20:38 lib 
lrwxrwxrwx 1 deploy www-data  28 2010-09-29 20:38 log -> /var/www/voteable/shared/log 
drwxr-xr-x 5 deploy www-data 4096 2010-09-29 20:38 public 
-rwxr-xr-x 1 deploy www-data 457 2010-09-29 20:38 Rakefile 
-rwxr-xr-x 1 deploy www-data 10011 2010-09-29 20:38 README 
-rwxr-xr-x 1 deploy www-data  41 2010-09-29 20:38 REVISION 
drwxr-xr-x 3 deploy www-data 4096 2010-09-29 20:38 script 
drwxr-xr-x 6 deploy www-data 4096 2010-09-29 20:38 test 
drwxr-xr-x 2 deploy www-data 4096 2010-09-29 20:38 tmp 
-rwxr-xr-x 1 deploy www-data 810605 2010-09-29 20:38 uninstall 
drwxr-xr-x 3 deploy www-data 4096 2010-09-29 13:13 vendor 

Répondre

11

Vous devez vous assurer que vous possédez .git de sorte que vous ne devriez jamais faire un achat en tant que root ou que vous allez courir dans ce problème.

chmod -R ug+rw .git va résoudre le problème cette fois, mais vous devez être diligent à garder vos collègues de faire git pull s manuel ou de travailler sur la configuration des autorisations de groupe correctement.

+0

Qui est "vous" dans votre propre .git. le compte de déploiement? S'il vous plaît voir cet autre poste du même problème/similaire .. peut être lié http://stackoverflow.com/questions/3827331/strange-ssh-issues-with-github – badnaam

+0

Vous êtes votre compte de déploiement. Si vous faites un 'ls -la' sur votre fichier .git/FETCH_HEAD, vous verrez qu'il appartient à root. Vous devrez donc soit le choyer à l'utilisateur de déploiement, soit le chmod afin que l'utilisateur de déploiement puisse le modifier. –

+0

yVous avez absolument raison. sur cette note..J'ai mis à jour l'OP avec l'autorisation sur mon répertoire/www/var/app. Est-ce à quoi cela devrait ressembler ou devrait-il appartenir à www-data? Je ne suis pas très clair sur qui devrait posséder ce répertoire www-data ou déployer – badnaam

Questions connexes