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
나는 두 가지에 대해 혼란스러워합니다.
-
Capistrano가
git archive
여기에서 실행되는 이유 :
git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157
-
왜
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
합니다.
-
선택한 브랜치의 트리를 내보내는 방법으로 git 아카이브 를 실행 하고 있습니다. git 아카이브는 “표준 출력에 기록”하므로 Capistrano 는 아카이브를 새 릴리스 디렉토리에 즉시 압축 해제하기 위해 tar 로 리디렉션합니다 . (Capistrano가 git checkout 대신 이것을 선택한 이유는 나를 패배시킵니다.)
-
아무것도 수신하지 않기 때문에 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 분기에서 로컬로 배포하려고 할 때이 오류가 발생했습니다. 그래서 현재 (지점 개발을위한 변경 사항 병합)을 완료하고 성공적으로 배포했습니다.