1

因此,我已经使用 Capistrano 进行了相当长的一段时间的部署。一切都很好。最近我遇到了一些问题。

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

为了让事情变得更加混乱,我查看了这个过程,它在第二个密码提示之后从github请求一个 repo ......而不是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

4

1 回答 1

1

在我的猜测中,如果远程服务器上已经存在 repo ,capistrano 会做 agit pull origin <branch>而不是。git clone <repo url>因此,它仍在尝试访问 github url。

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

于 2013-10-02T16:55:15.433 回答