[英]Capistrano deploy failing on git:check
Trying to deploy a Rails app on an EC2 instance with Puma/Nginx/Capistrano. 尝试使用Puma / Nginx / Capistrano在EC2实例上部署Rails应用程序。 I was following this tutorial.
我正在学习本教程。
This is my first deploy, not sure what exactly is going on. 这是我的第一次部署,不确定到底发生了什么。 Seems like there is an issue with my ssh configuration, judging from the console output, but what exactly I'm really not sure any help would be greatly appreciated.
从控制台输出来看,似乎我的ssh配置存在问题,但究竟是什么我真的不确定任何帮助将不胜感激。
Here's the deploy.rb 这是deploy.rb
server '52.206.222.73', roles: %w{web app db}, primary: true
set :repo_url, 'git@example.com:username/myapp.git'
set :application, 'myapp'
set :user, 'deploy'
set :puma_threads, [4, 16]
set :puma_workers, 0
# Don't change these unless you know what you're doing
set :pty, true
set :use_sudo, false
set :stage, :production
set :deploy_via, :remote_cache
set :deploy_to, "/home/#{fetch(:user)}/#{fetch(:application)}"
set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
set :puma_state, "#{shared_path}/tmp/pids/puma.state"
set :puma_pid, "#{shared_path}/tmp/pids/puma.pid"
set :puma_access_log, "#{release_path}/log/puma.error.log"
set :puma_error_log, "#{release_path}/log/puma.access.log"
set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) }
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, true # Change to false when not using ActiveRecord
## Defaults:
# set :scm, :git
# set :branch, :master
# set :format, :pretty
# set :log_level, :debug
# set :keep_releases, 5
## Linked Files & Directories (Default None):
# set :linked_files, %w{config/database.yml}
# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
namespace :puma do
desc 'Create Directories for Puma Pids and Socket'
task :make_dirs do
on roles(:app) do
execute "mkdir #{shared_path}/tmp/sockets -p"
execute "mkdir #{shared_path}/tmp/pids -p"
end
end
And output from cap production deploy --trace 从cap生产部署输出--trace
** Execute git:wrapper
00:00 git:wrapper
01 mkdir -p /tmp
✔ 01 deploy@52.206.222.73 0.695s
Uploading /tmp/git-ssh-myapp-production-adam.sh 100.0%
02 chmod 700 /tmp/git-ssh-myapp-production-adam.sh
✔ 02 deploy@52.206.222.73 0.921s
** Execute git:check
00:04 git:check
01 git ls-remote --heads git@example.com:username/amharic-web.git
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@52.206.222.73: git exit status: 128
git stdout: Nothing written
git stderr: Nothing written
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
SSHKit::Command::Failed: git exit status: 128
git stdout: Nothing written
git stderr: Nothing written
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/command.rb:100:in `exit_status='
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/netssh.rb:148:in `execute_command'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `block in create_command_and_execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `tap'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:141:in `create_command_and_execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:74:in `execute'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/git.rb:10:in `git'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/git.rb:20:in `check'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/tasks/git.rake:34:in `block (4 levels) in <top (required)>'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:93:in `with'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/capistrano-3.6.0/lib/capistrano/tasks/git.rake:33:in `block (3 levels) in <top (required)>'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:29:in `instance_exec'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/backends/abstract.rb:29:in `run'
/Users/adam/.rvm/gems/ruby-2.3.0/gems/sshkit-1.11.1/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
Tasks: TOP => git:check
The deploy has failed with an error: Exception while executing as deploy@52.206.222.73: git exit status: 128
git stdout: Nothing written
git stderr: Nothing written
** Invoke deploy:failed (first_time)
** Execute deploy:failed
** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:
DEBUG [34726536] -
DEBUG [34726536] .
DEBUG [34726536] |
DEBUG [34726536] /
DEBUG [34726536] -
DEBUG [34726536] \
DEBUG [34726536] .\
DEBUG [34726536] .
DEBUG [34726536] ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
DEBUG [34726536] Finished in 1.755 seconds with exit status 0 (successful).
INFO [2219decf] Running /usr/bin/env mkdir -p /tmp as deploy@52.206.222.73
DEBUG [2219decf] Command: /usr/bin/env mkdir -p /tmp
INFO [2219decf] Finished in 0.695 seconds with exit status 0 (successful).
DEBUG Uploading /tmp/git-ssh-myapp-production-adam.sh 0.0%
INFO Uploading /tmp/git-ssh-myapp-production-adam.sh 100.0%
INFO [38c56cdb] Running /usr/bin/env chmod 700 /tmp/git-ssh-myapp-production-adam.sh as deploy@52.206.222.73
DEBUG [38c56cdb] Command: /usr/bin/env chmod 700 /tmp/git-ssh-myapp-production-adam.sh
INFO [38c56cdb] Finished in 0.921 seconds with exit status 0 (successful).
INFO [4ce4f406] Running /usr/bin/env git ls-remote --heads git@example.com:username/amharic-web.git as deploy@52.206.222.73
DEBUG [4ce4f406] Command: ( export GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/git-ssh-myapp-production-adam.sh" ; /usr/bin/env git ls-remote --heads git@example.com:username/amharic-web.git )*
Run these 2 commands to grant git access via your system 运行这两个命令以通过您的系统授予git访问权限
eval ssh-agent
ssh-add ~/.ssh/id_rsa
These commands are assuming that you have ssh key over the remote git server(bitbucket/github/other) 这些命令假设您在远程git服务器上有ssh密钥(bitbucket / github / other)
I'm surprised there isn't a more descriptive error message from Git. 我很惊讶Git没有更具描述性的错误信息。 However, the
git ls-remote
command is failing for some reason. 但是,由于某种原因,
git ls-remote
命令失败。 In absence of any error message, the best guess is that Git cannot access the remote repository. 在没有任何错误消息的情况下,最好的猜测是Git无法访问远程存储库。
This could be because: 这可能是因为:
On your local machine (ie where you ran the cap
command), try manually running the same Git command via SSH and see what happens: 在本地计算机上(即运行
cap
命令的位置),尝试通过SSH手动运行相同的Git命令,看看会发生什么:
ssh -A -i ~/.ssh/id_rsa.pub deploy@52.206.222.73 git ls-remote --heads git@example.com:username/amharic-web.git
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.