Erreur de Capistrano tar: Cela ne ressemble pas à une archive tar


102
 INFO [050fe961] Running mkdir -p /home/rails/rails-
capistrano/releases/20140114234157 on staging-rails
DEBUG [050fe961] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh mkdir -p /home/rails/rails-capistrano/releases/20140114234157 )
 INFO [050fe961] Finished in 0.142 seconds with exit status 0 (successful).
 INFO [2dea2fe5] Running git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 on staging-rails
DEBUG [2dea2fe5] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 )
DEBUG [2dea2fe5]    fatal: Not a valid object name
DEBUG [2dea2fe5]    tar: This does not look like a tar archive
DEBUG [2dea2fe5]    tar: 
DEBUG [2dea2fe5]    Exiting with failure status due to previous errors      

Je suis confus sur deux choses:

  1. Pourquoi Capistrano fonctionne-t-il git archiveici:
    git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

  2. Pourquoi taréchoue?

Réponses:


321

J'ai eu le même problème, jusqu'à ce que je réalise que je retirais la branche inexistante de git.


53
Un tel front claquant.
Grant Birchmeier

20
Je suis aussi le stupide
notaceo

12
La deuxième fois que je rencontre votre réponse, la deuxième fois que cela se produit, je me sens stupide!
Fabian de Pabian

11
Je suis heureux que cette question ait autant de votes positifs. Au moins, je n'échoue pas seul.
déchiquetage du

6
Sérieusement, c'est probablement la 42e fois que je fais la même recherche google et que je lis cette réponse xD
Cyril Duchon-Doris

19

La suppression de app_name / repo a également résolu ce problème pour moi.


1
Cela a fonctionné pour moi à plusieurs reprises chaque fois qu'il y a des problèmes de repo avec le déploiement de plafond, mais pas toujours.
Jorge Orpinel

15

Cela se produit lorsque le dépôt sur le serveur à déployer est en panne. Nous parlons du dépôt git nu que Capistrano placerait par défaut /var/www/$application/repo(pour référence d'autres personnes).

Dans votre cas, il n'a pas de fonction locale / branche Capistrano , donc lors de l'exécution, git archive feature/Capistranorien n'est envoyé vers ce |tube. Pour confirmer, ssh dans le serveur, cd dans / home / rails / rails-capistrano / repo et exécutez git branch.

  1. Il exécute git archive comme moyen d'exporter l'arborescence de la branche sélectionnée. git archive "l'écrit dans la sortie standard" donc Capistrano la redirige vers tar afin de décompresser l'archive immédiatement dans votre nouveau répertoire de version. (Pourquoi Capistrano a choisi cela au lieu de git checkout me bat.)

  2. tar échoue car il ne reçoit rien d:

Je peux penser à deux solutions / moyens de dépanner:

  • ssh dans le serveur et supprimez manuellement le dossier repo (par exemple dans votre cas / home / rails / rails-capistrano / repo) comme mentionné par @lugolabs
  • assurez-vous que le dépôt du serveur utilise la télécommande que vous attendez (ssh dans, cd dans repo / et exécutez git remote -v) - vous devrez peut-être simplement mettre à jour votre :repo_urldans deploy.rb (et supprimer le repo / dir).

Avons-nous un autre moyen au lieu de supprimer le dépôt actuel?
hainguyen

4

Je pense que ce dossier est rempli via un git pull, donc il ne devrait pas être vide. Si vous le voyez vide, le problème vient du git et non de l'archive tar.

Le problème que j'ai eu était que mon URL de référentiel capistrano deploy.rb était définie sur une valeur différente de celle du projet dans lequel je travaillais. Pour résoudre ce problème, j'ai également dû me connecter au serveur et supprimer le dossier app_name / repo qui doit ont mis en cache la mauvaise URL distante d'origine.


4
pour les googleurs: vérifiez également si vous définissez une branche existante !!! ... a travaillé pour moi :)
équivalent8

4

Chaque fois que j'ai rencontré cette erreur, c'était parce que la branche spécifiée dans mon fichier deploy / environment .rb n'était pas archivée dans git. Faites un add / commit / git push origin nom_branche et cela fera probablement fonctionner les choses.


0

J'utilise Bedrock Roots (wordpress) pour le développement, capistrano pour les déploiements et git flow. Je suis tombé sur cette erreur lors de la tentative de déploiement, alors que sur la branche hotfix / xxx localement. J'ai donc terminé le courant (modifications fusionnées pour développer la branche), puis déployé avec succès.


Comprenez-vous pourquoi la fusion avec Develop a résolu votre problème?
Eric Francis

Le déploiement d'autres branches peut fonctionner, mais la question demeure: pourquoi celle que vous essayez de déployer ne fonctionne pas? J'ai peut-être une réponse.
Jorge Orpinel

@EricFrancis En fait, je le fais maintenant) Comme l'indique la réponse votée, le correctif n'existait pas sur la télécommande (d'où capistrano se déploie)
Sergey Dubovik
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.