所以我已经和卡皮斯特拉诺一起部署了很长一段时间。一切都很好。最近我遇到了一些问题。
这个过程很简单。我有一个 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
时出现密码提示
答案 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
命令以确保它正常工作