Capistrano 오류 tar : 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      

나는 두 가지에 대해 혼란스러워합니다.

  1. Capistrano가 git archive여기에서 실행되는 이유 :
    git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

  2. tar실패합니까?

답변:


321

나는 git에서 존재하지 않는 지점을 가져오고 있다는 것을 깨달을 때까지 동일한 문제가 발생했습니다.


53
그런 이마 찰싹 때리기.
Grant Birchmeier 2014

20
나는 또한 바보입니다
notaceo

12
두 번째로 당신의 대답을 만났을 때, 두 번째로 이런 일이 일어났습니다.
Fabian de Pabian 2015 년

11
이 질문에 찬성표가 너무 많아서 기쁩니다. 적어도 나는 외로워서 실패하지 않습니다.
파쇄

6
진심으로, 이것은 내가 같은 구글 검색을 수행하고이 응답의 xD을 읽고 있어요 42 시간 아마
시릴 Duchon - 도리스

19

app_name / repo를 삭제하면이 문제도 해결되었습니다.


1
이것은 cap deploy에 대한 repo 문제가있을 때마다 가끔씩 효과가 있었지만 항상 그런 것은 아닙니다.
Jorge Orpinel 2015

15

이는 배포 할 서버의 저장소가 엉망이 될 때 발생합니다. 우리는 Capistrano가 기본적으로 넣을 git repo에 대해 이야기하고 있습니다 /var/www/$application/repo(다른 사람들의 참조를 위해).

귀하의 경우에는 로컬 기능 / Capistrano 분기가 없으므로 실행할 때 git archive feature/Capistrano아무것도 해당 |파이프에 출력되지 않습니다 . 확인하려면 ssh를 서버에 입력하고 / home / rails / rails-capistrano / repo로 cd 한 다음을 실행 git branch합니다.

  1. 선택한 브랜치의 트리를 내보내는 방법으로 git 아카이브 를 실행 하고 있습니다. git 아카이브는 "표준 출력에 기록"하므로 Capistrano 는 아카이브를 새 릴리스 디렉토리에 즉시 압축 해제하기 위해 tar 로 리디렉션합니다 . (Capistrano가 git checkout 대신 이것을 선택한 이유는 나를 패배시킵니다.)

  2. 아무것도 수신하지 않기 때문에 tar 가 실패합니다. d :

문제 해결을위한 두 가지 가능한 솔루션 / 방법을 생각할 수 있습니다.

  • ssh를 서버에 넣고 @lugolabs에서 언급 한대로 repo 폴더 (예 : 귀하의 경우 / home / rails / rails-capistrano / repo)를 수동으로 삭제합니다.
  • 서버의 리포지토리가 예상하는 원격지 (ssh in, cd into repo / 및 run git remote -v)를 사용하고 있는지 확인하십시오 :repo_url. deploy.rb에서 업데이트 하고 repo / dir을 삭제하면됩니다.

현재 저장소를 삭제하는 대신 다른 방법이 있습니까?
hainguyen

4

폴더는 git pull을 통해 채워 지므로 비어 있으면 안됩니다. 비어있는 경우 문제는 tarball이 아닌 git에서 온 것입니다.

내가 가진 문제는 내 capistrano deploy.rb 저장소 URL이 내가 작업중인 프로젝트와 다른 URL로 설정되었다는 것입니다.이 문제를 해결하기 위해 서버에 로그온하고 app_name / repo 폴더를 삭제해야했습니다. 원래의 잘못된 원격 URL을 캐싱했습니다.


4
인터넷 검색을 위해 : 기존 브랜치를 설정했는지 확인하세요 !!! ... 저를 위해 일했습니다 :)
equivalent8

4

이 오류가 발생할 때마다 내 deploy / environment .rb 파일에 지정된 분기 가 git에 체크인되지 않았기 때문 입니다. 추가 / 커밋 / git push origin branch_name을 수행하면 일이 작동 할 가능성이 있습니다.


0

개발에는 Bedrock Roots (wordpress)를 사용하고 배포에는 capistrano를 사용하고 있습니다. 핫픽스 / xxx 분기에서 로컬로 배포하려고 할 때이 오류가 발생했습니다. 그래서 현재 (지점 개발을위한 변경 사항 병합)을 완료하고 성공적으로 배포했습니다.


개발로 병합하여 문제가 해결 된 이유를 이해하십니까?
에릭 프랜시스

다른 브랜치를 배포해도 작동 할 수 있지만 배포하려는 특정 브랜치가 작동하지 않는 이유는 무엇입니까? 대답이있을 수 있습니다.
Jorge Orpinel 2015

(가) 응답 상태를 투표로 @EricFrancis 사실, 난) 지금, 핫픽스 (원격에 존재하지 않는 경우)에서 카피 스트라 노 전개함에
세르게이 Dubovik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.