Capistrano error tar: Este não parece ser um arquivo 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      

Estou confuso sobre duas coisas:

  1. Por que Capistrano está funcionando git archiveaqui:
    git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

  2. Por que está tarfalhando?

Respostas:


321

Eu tive o mesmo problema, até que percebi que estava puxando o branch inexistente do git.


53
Um tapa na testa.
— Grant Birchmeier

20
Eu também sou o burro
— notaceo

12
Na segunda vez que encontro sua resposta, na segunda vez que isso aconteceu, me sinto idiota!
— Fabian de Pabian,

11
Estou feliz que esta pergunta tenha tantos votos positivos. Pelo menos eu não falho sozinho.
— retalhamento de

6
Sério, esta é provavelmente a 42ª vez que estou fazendo a mesma pesquisa no Google e lendo esta resposta xD
— Cyril Duchon-Doris

19

Excluir app_name / repo também corrigiu esse problema para mim.


1
Isso funcionou para mim algumas vezes sempre que há problemas de repo com implantação de cap, mas nem sempre.
— Jorge Orpinel

15

Isso acontece quando o repo no servidor a ser implantado está bagunçado. Estamos falando sobre o repositório git que o Capistrano por padrão colocaria /var/www/$application/repo(para referência de outras pessoas).

No seu caso, ele não tem um recurso local / ramificação Capistrano , portanto, ao executar, git archive feature/Capistranonada é enviado para aquele |pipe. Para confirmar, ssh no servidor, cd em / home / rails / rails-capistrano / repo e execute git branch.

  1. Ele está executando o git archive como uma forma de exportar a árvore do branch selecionado. O arquivo git "grava na saída padrão", então Capistrano redireciona isso para tar , a fim de descompactar o arquivo imediatamente em seu novo diretório de lançamento. (Por que Capistrano escolheu isso em vez de checkout git me derrota.)

  2. tar falha porque não está recebendo nada d:

Posso pensar em duas soluções / maneiras possíveis de solucionar o problema:

  • ssh no servidor e exclua manualmente a pasta repo (por exemplo, no seu caso / home / rails / rails-capistrano / repo) como mencionado por @lugolabs
  • certifique-se de que o repo do servidor está usando o remoto que você espera (ssh in, cd em repo / e execute git remote -v) - você pode apenas precisar atualizar seu :repo_urlem deploy.rb (e excluir o repo / dir).

Temos outra maneira em vez de excluir o repositório atual?
— hainguyen

4

Acho que essa pasta é preenchida por meio de um pull git, então não deve estar vazia. Se você vê-lo vazio, o problema é do git e não do tarball.

O problema que tive foi que a URL do meu repositório capistrano deploy.rb foi configurada para um diferente do projeto em que eu estava trabalhando. Para corrigir esse problema, também tive que fazer logon no servidor e excluir a pasta app_name / repo que deve têm armazenado em cache o URL remoto incorreto original.


4
para pesquisar no Google: verifique também se você definiu o branch existente !!! ... funcionou para mim :)
— equivalente 8

4

Sempre que recebo esse erro, é porque o branch especificado em meu arquivo .rb de implantação / ambiente não foi verificado no git. Faça um add / commit / git push origin branch_name e isso provavelmente fará as coisas funcionarem.


0

Estou usando o Bedrock Roots (wordpress) para desenvolvimento, capistrano para deploys e git flow. Encontrei este erro quando tentei implantar, enquanto no ramo hotfix / xxx localmente. Então, terminei o atual (alterações mescladas para desenvolver o branch) e implantei com sucesso.


Você entende por que a fusão com o desenvolvimento corrigiu o seu problema?
— Eric Francis

A implantação de outros branches pode funcionar, mas a questão permanece: por que aquele em particular que você está tentando implantar não está funcionando? Posso ter uma resposta.
— Jorge Orpinel

@EricFrancis Na verdade, eu faço agora) Como afirma a resposta votada, o hotfix não existia no remoto (de onde capistrano é implantado)
— Sergey Dubovik
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.