我有一个PHP Web应用程序,我正在使用Capistrano进行部署。我的公司从使用本地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
直接工作正常,但在deploy.rb中它失败了。如果我手动输入用户的用户名和密码到这个https://rouser:password@github.com/mycompany/app.git
这样的URL,Capistrano脚本就可以正常工作。
如果可以避免,我不想在文件中对用户名和密码进行硬编码,但如果必须这样做,我必须这样做。
提前感谢您提出的任何建议。
答案 0 :(得分:1)
使用capistrano转到之前部署过的服务器,并在共享的capistrano目录中编辑缓存的git配置文件。
共享/高速缓存拷贝/的.git /配置
删除原始部分中的任何左侧用户名,以便您的网址如下:https://github.com/mycompany/app.git