[capistrano] Capistrano 오류 tar : tar 아카이브처럼 보이지 않습니다.

 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실패합니까?



답변

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


답변

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


답변

이는 배포 할 서버의 저장소가 엉망이 될 때 발생합니다. 우리는 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을 삭제하면됩니다.

답변

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

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


답변

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


답변

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


답변