使用capistrano部署失败 - 致命:HTTP请求失败。请求github,设置为bitbucket

时间:2013-10-02 16:20:04

标签: ruby-on-rails ruby-on-rails-3 git github capistrano

所以我已经和卡皮斯特拉诺一起部署了很长一段时间。一切都很好。最近我遇到了一些问题。

这个过程很简单。我有一个 bitbucket 帐户。我会推到那里,然后上限将采取远程仓库,然后将其推送到远程服务器。这样做,在使用cap deploy时,我会被提示两次输入密码;实际上,我甚至不知道为什么它要求我输入两次密码(所以也许这可能会有一些亮点)。尽管如此,它工作了很长时间,然后随机停止工作。在第二次请求密码时,它现在说 fatal: HTTP request failed

为了让事情更加令人困惑,我查看了整个过程,并在第二次密码提示后请求来自 github 的回购...而不是 bitbucket 。有一段时间我使用github,但那是在过去。所以,我在我的Capfile和deploy.rb中查找了对github repo的引用,没有找到任何对它的引用。

这是什么,为什么要求它? 我该如何解决这个问题?

作为参考,这是我的deploy.rb(当然还有敏感信息):

set :application, "Application"
set :deploy_to, "/home/user/apps/app"
set :password, "webhostpassword"
set :user, "webhostuser"
set :domain, "webhostip"
set :deploy_via, :remote_cache
set :use_sudo, false 
set :scm, :git
set :repository,  "https://username@bitbucket.org/account/app.git"
set :scm_username, "repousername"
set :scm_passphrase, "repopassword"

ssh_options[:forward_agent] = true

role :web, domain                           # Your HTTP server, Apache/etc
role :app, domain                           # This may be the same as your 'Web' server
role :db,  domain, :primary => true  

default_run_options[:pty] = true

namespace :deploy do
 task :start do ; end
 task :stop do ; end
 task :restart, :roles => :app, :except => { :no_release => true } do
  run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
 end
end

这里输出失败的地方:

servers: ["webhostip"]
[webhostip] executing command
** [webhostip :: out] Password:
Password:
** [webhostip :: out]
** [webhostip :: out] error: The requested URL returned error: 403 Forbidden
while accessing https://repo@github.com/repo/app.git/info/refs
**
** fatal: HTTP request failed
←[2;37mcommand finished in 18881ms←[0m

注意第6行和第7行,在它要求输入密码后访问github(这是第二次使用cap deploy时出现密码提示

1 个答案:

答案 0 :(得分:1)

在我的猜测中,如果远程服务器上已存在repo,capistrano将执行git pull origin <branch>而不是git clone <repo url>。因此,它仍然试图击中github网址。

您可以通过检查远程服务器上的.git/config文件来验证这一点。或者通过运行git remote -v命令。如果origin指向github,请将其更改为bitbucket。然后手动运行git pull origin master命令以确保它正常工作