submodules de capistrano git-ssh.sh: No existe ningún file o directory

Un nuevo error ha comenzado a borking nuestra secuencia de commands de implementación con capistrano y estoy perdido sobre lo que salió mal. Recientemente cambiamos al uso de un submodule, pero no importa lo que intente, la implementación sigue asfixiándose con este post para 2 de nuestras API.

¿Alguien puede señalarme en la dirección correcta?

DEBUG [b65195b3] Running [ ! -d /opt/rbenv/versions/2.0.0-p247 ] on 208.94.36.62 DEBUG [b65195b3] Command: [ ! -d /opt/rbenv/versions/2.0.0-p247 ] DEBUG [b65195b3] Finished in 1.014 seconds with exit status 1 (failed). INFO [c62b9ae7] Running mkdir -p /tmp/digest/digest/ on 208.94.36.62 DEBUG [c62b9ae7] Command: mkdir -p /tmp/digest/digest/ INFO [c62b9ae7] Finished in 0.866 seconds with exit status 0 (successful). DEBUG Uploading /tmp/digest/digest/git-ssh.sh 0.0% INFO Uploading /tmp/digest/digest/git-ssh.sh 100.0% INFO [30b87a02] Running chmod +x /tmp/digest/digest/git-ssh.sh on 208.94.36.62 DEBUG [30b87a02] Command: chmod +x /tmp/digest/digest/git-ssh.sh INFO [30b87a02] Finished in 0.116 seconds with exit status 0 (successful). DEBUG [7e5c34f1] Running git ls-remote git@github.com:PlacewiseMedia/ApiDigest.git on 208.94.36.62 DEBUG [7e5c34f1] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/digest/digest/git-ssh.sh git ls-remote git@github.com:PlacewiseMedia/ApiDigest.git ) zlib(finalizer): the stream was freed prematurely. zlib(finalizer): the stream was freed prematurely. DEBUG [7e5c34f1] a7f25a5de1a108403eab4b31bd1561c384759852 HEAD DEBUG [7e5c34f1] a7f25a5de1a108403eab4b31bd1561c384759852 refs/heads/master DEBUG [7e5c34f1] 49374f21b1b53662b17de471924d7cab5bfac088 refs/heads/staging DEBUG [7e5c34f1] Finished in 2.326 seconds with exit status 0 (successful). INFO [e4be4222] Running mkdir -pv /home/apps/digest/shanetworking /home/apps/digest/releases on 208.94.36.62 DEBUG [e4be4222] Command: mkdir -pv /home/apps/digest/shanetworking /home/apps/digest/releases INFO [e4be4222] Finished in 0.905 seconds with exit status 0 (successful). DEBUG [a618ff97] Running [ -f /home/apps/digest/repo/HEAD ] on 208.94.36.62 DEBUG [a618ff97] Command: [ -f /home/apps/digest/repo/HEAD ] DEBUG [a618ff97] Finished in 0.916 seconds with exit status 0 (successful). INFO The repository mirror is at /home/apps/digest/repo DEBUG [6c948acf] Running if test ! -d /home/apps/digest/repo; then echo "Directory does not exist '/home/apps/digest/repo'" 1>&2; false; fi on 208.94.36.62 DEBUG [6c948acf] Command: if test ! -d /home/apps/digest/repo; then echo "Directory does not exist '/home/apps/digest/repo'" 1>&2; false; fi zlib(finalizer): the stream was freed prematurely. zlib(finalizer): the stream was freed prematurely. zlib(finalizer): the stream was freed prematurely. DEBUG [6c948acf] Finished in 0.863 seconds with exit status 0 (successful). INFO [2d21a5e9] Running git remote update on 208.94.36.62 DEBUG [2d21a5e9] Command: cd /home/apps/digest/repo && git remote update DEBUG [2d21a5e9] Fetching origin DEBUG [2d21a5e9] Fetching origin DEBUG [2d21a5e9] From github.com:PlacewiseMedia/ApiDigest DEBUG [2d21a5e9] 9695797..a7f25a5 master -> master INFO [2d21a5e9] Finished in 1.443 seconds with exit status 0 (successful). DEBUG [68db389a] Running if test ! -d /home/apps/digest/repo; then echo "Directory does not exist '/home/apps/digest/repo'" 1>&2; false; fi on 208.94.36.62 DEBUG [68db389a] Command: if test ! -d /home/apps/digest/repo; then echo "Directory does not exist '/home/apps/digest/repo'" 1>&2; false; fi DEBUG [68db389a] Finished in 0.881 seconds with exit status 0 (successful). INFO [c9703c18] Running git clone -b master --single-branch --recursive . /home/apps/digest/releases/20131118222409 on 208.94.36.62 DEBUG [c9703c18] Command: cd /home/apps/digest/repo && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/digest/git-ssh.sh git clone -b master --single-branch --recursive . /home/apps/digest/releases/20131118222409 ) DEBUG [c9703c18] Cloning into '/home/apps/digest/releases/20131118222409'... DEBUG [c9703c18] done. DEBUG [c9703c18] Submodule 'lib/api_client' (git@github.com:PlacewiseMedia/ApiClient.git) registenetworking for path 'lib/api_client' DEBUG [c9703c18] done. DEBUG [c9703c18] Submodule 'lib/api_client' (git@github.com:PlacewiseMedia/ApiClient.git) registenetworking for path 'lib/api_client' DEBUG [c9703c18] Cloning into 'lib/api_client'... DEBUG [c9703c18] Submodule 'lib/api_client' (git@github.com:PlacewiseMedia/ApiClient.git) registenetworking for path 'lib/api_client' DEBUG [c9703c18] error: DEBUG [c9703c18] Submodule 'lib/api_client' (git@github.com:PlacewiseMedia/ApiClient.git) registenetworking for path 'lib/api_client' DEBUG [c9703c18] cannot run /tmp/digest/git-ssh.sh: No such file or directory DEBUG [c9703c18] Submodule 'lib/api_client' (git@github.com:PlacewiseMedia/ApiClient.git) registenetworking for path 'lib/api_client' DEBUG [c9703c18] DEBUG [c9703c18] Submodule 'lib/api_client' (git@github.com:PlacewiseMedia/ApiClient.git) registenetworking for path 'lib/api_client' DEBUG [c9703c18] fatal: unable to fork DEBUG [c9703c18] Submodule 'lib/api_client' (git@github.com:PlacewiseMedia/ApiClient.git) registenetworking for path 'lib/api_client' DEBUG [c9703c18] Clone of 'git@github.com:PlacewiseMedia/ApiClient.git' into submodule path 'lib/api_client' failed cap aborted! git stdout: Nothing written git stderr: Nothing written /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/command.rb:94:in `exit_status=' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:125:in `block (4 levels) in _execute' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:551:in `call' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:551:in `do_request' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:561:in `channel_request' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:221:in `preprocess' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:269:in `wait' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:147:in `block (2 levels) in _execute' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:514:in `call' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/channel.rb:514:in `do_open_confirmation' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:545:in `channel_open_confirmation' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:465:in `dispatch_incoming_packets' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:221:in `preprocess' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:205:in `process' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `block in loop' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/net-ssh-2.7.0/lib/net/ssh/connection/session.rb:169:in `loop' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:149:in `block in _execute' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:106:in `tap' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:106:in `_execute' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:54:in `execute' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/capistrano-scm-gitsubmodules-1.0.0/lib/capistrano/tasks/gitsubmodules.cap:19:in `block (5 levels) in <top (requinetworking)>' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/abstract.rb:81:in `within' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/capistrano-scm-gitsubmodules-1.0.0/lib/capistrano/tasks/gitsubmodules.cap:18:in `block (4 levels) in <top (requinetworking)>' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/abstract.rb:89:in `with' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/capistrano-scm-gitsubmodules-1.0.0/lib/capistrano/tasks/gitsubmodules.cap:17:in `block (3 levels) in <top (requinetworking)>' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:42:in `instance_exec' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/backends/netssh.rb:42:in `run' /Users/chrishough/Placewise/code/ApiDigest/.bundle/ruby/2.0.0/gems/sshkit-1.1.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute' Tasks: TOP => gitsubmodules:create_release (See full trace by running task with --trace) zlib(finalizer): the stream was freed prematurely. zlib(finalizer): the stream was freed prematurely. 

Creo que este podría ser el problema:

 DEBUG Uploading /tmp/digest/digest/git-ssh.sh 0.0% INFO Uploading /tmp/digest/digest/git-ssh.sh 100.0% 

… tenga en count el digest duplicado en la ruta. Esto se llama con éxito en la primera ronda de cajas:

 DEBUG [7e5c34f1] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/digest/digest/git-ssh.sh git ls-remote git@github.com:PlacewiseMedia/ApiDigest.git ) 

… pero falla un poco más en la stack:

 DEBUG [c9703c18] Command: cd /home/apps/digest/repo && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/digest/git-ssh.sh git clone -b master --single-branch --recursive . /home/apps/digest/releases/20131118222409 ) 

La variable de entorno GIT_SSH se establece en /tmp/digest/git-ssh.sh

 DEBUG [c9703c18] cannot run /tmp/digest/git-ssh.sh: No such file or directory 

No estoy seguro de en qué parte de su configuration debe solucionarse, pero espero que esto lo coloque en el path correcto.

¿Es este path correcto?

 GIT_SSH=/tmp/digest/digest/git-ssh.sh 

digerir dos veces?