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
Ich bin verwirrt über zwei Dinge:
Warum läuft Capistrano
git archive
hier:
git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157
Warum
tar
scheitert?
capistrano
rvm-capistrano
capistrano3
Eric Francis
quelle
quelle
Das Löschen von app_name / repo hat dieses Problem auch für mich behoben.
quelle
Dies passiert, wenn das Repo auf dem zu implementierenden Server durcheinander ist. Wir sprechen über das Bare-Git-Repo, das Capistrano standardmäßig einfügt
/var/www/$application/repo
(als Referenz für andere Leute).In Ihrem Fall hat es keine lokale Funktion / Capistrano- Verzweigung, sodass beim Ausführen
git archive feature/Capistrano
nichts an diese|
Pipe ausgegeben wird . Zur Bestätigung ssh in den Server, cd in / home / Rails / Rails-Capistrano / Repo und ausführengit branch
.Es wird das Git-Archiv ausgeführt , um den Baum des ausgewählten Zweigs zu exportieren. Das Git-Archiv "schreibt es in die Standardausgabe aus", so dass Capistrano es an tar weiterleitet, um das Archiv sofort in Ihr neues Release-Verzeichnis zu dekomprimieren. (Warum Capistrano dies anstelle von Git Checkout gewählt hat, besiegt mich.)
Teer schlägt fehl, weil er nichts empfängt. d:
Ich kann mir zwei mögliche Lösungen / Möglichkeiten zur Fehlerbehebung vorstellen:
git remote -v
). Möglicherweise müssen Sie nur Ihre:repo_url
in deploy.rb aktualisieren (und das Repo / Verzeichnis löschen).quelle
Ich denke, dass der Ordner über einen Git-Pull gefüllt wird, also sollte er nicht leer sein. Wenn Sie es leer sehen, ist das Problem vom Git, nicht vom Tarball.
Das Problem, das ich hatte, war, dass die URL meines capistrano deploy.rb-Repositorys auf eine andere URL als das Projekt festgelegt wurde, in dem ich gearbeitet habe. Um dieses Problem zu beheben, musste ich mich auch beim Server anmelden und den Ordner app_name / repo löschen, der benötigt wird habe die ursprüngliche fehlerhafte Remote-URL zwischengespeichert.
quelle
Immer wenn ich auf diesen Fehler gestoßen bin, wurde der in meiner .rb-Datei für die Bereitstellung / Umgebung angegebene Zweig nicht in git eingecheckt. Führen Sie einen add / commit / git-Push-Ursprungszweig aus, und das wird wahrscheinlich dazu führen, dass die Dinge funktionieren.
quelle
Ich verwende Bedrock Roots (WordPress) für die Entwicklung, Capistrano für Bereitstellungen und Git Flow. Stolperte über diesen Fehler, als versucht wurde, ihn bereitzustellen, während er sich lokal im Hotfix / xxx-Zweig befand. Also beendete ich die aktuelle (zusammengeführte Änderungen, um den Zweig zu entwickeln) und stellte sie dann erfolgreich bereit.
quelle