1

我有一个使用 Capistrano 部署的 PHP Web 应用程序。我的公司从使用本地 git 存储库转移到将我们的代码存储在 Github 上。

由于一些我们无法控制的问题,我们无法使用 SSH 克隆我们的 Github 存储库。相反,我们必须使用 https。我们已经在我们的 Github 帐户上设置了一个只读用户,这样我们就可以使用 netrc 文件通过 HTTPS 从 Github 中提取,而无需提示输入用户名和密码。

这在命令行上可以正常工作,但是,从 Capistrano 脚本中,它仍然提示输入用户名和密码。这是我的 Capistrano 脚本的 deploy.rb:

require 'capistrano/php'

set :application, "app"
set :repository,  "https://github.com/mycompany/app.git"
set :deploy_to, "/var/www/html/app"

set :scm, :git
set :deploy_via, :remote_cache
set :copy_exclude, %w(.git)
set :git_enable_submodules, true
default_run_options[:pty] = true
set :use_sudo, true

role :web, "webbox01"
role :app, "webbox01"

同样,git clone https://github.com/mycompany/app.git直接从命令行执行 a 可以正常工作,但在 deploy.rb 中它会失败。如果我像这样在 URL 中手动输入用户的用户名和密码,https://rouser:password@github.com/mycompany/app.gitCapistrano 脚本就可以正常工作。

如果可以避免的话,我不想在文件中硬编码用户名和密码,但如果我必须这样做,我必须这样做。

提前感谢您提供的任何建议。

4

1 回答 1

1

转到您之前使用 capistrano 部署的服务器,并在共享 capistrano 目录中编辑缓存的 git 配置文件。

共享/缓存复制/.git/config

删除原始部分中的任何剩余用户名,以便您的 url 看起来像:https ://github.com/mycompany/app.git

于 2012-06-09T14:48:41.927 回答