Capistrano игнорирует файл netrc
У меня есть веб-приложение PHP, которое я использую Capistrano для развертывания. Моя компания перешла от использования локального репозитория git к хранению нашего кода на Github.
Из-за некоторых не зависящих от нас проблем мы не можем использовать SSH для клонирования репозитория Github. Вместо этого мы должны использовать https. Мы настроили пользователя только для чтения в нашей учетной записи Github, чтобы мы могли использовать файл netrc для извлечения из Github через HTTPS без запроса имени пользователя и пароля.
Это работает так, как и ожидалось в командной строке, однако из скрипта Capistrano все равно запрашивает имя пользователя и пароль. Вот мой deploy.rb для моего скрипта Capistrano:
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 это не получается. Если я вручную введу имя пользователя и пароль пользователя в URL, как это https://rouser:password@github.com/mycompany/app.git
скрипт Capistrano работает отлично.
Я бы не хотел жестко кодировать имя пользователя и пароль в файле, если я могу избежать этого, но если я должен это сделать, я должен это сделать.
Заранее спасибо за любой совет, который вы можете предложить.
1 ответ
Перейдите на серверы, на которых вы ранее развернули, с помощью capistrano и отредактируйте кэшированный файл git config в общем каталоге capistrano.
общее / кэшируются копирование /.git / конфигурации
Удалите любое оставленное имя пользователя в исходной части, чтобы ваш URL выглядел следующим образом: https://github.com/mycompany/app.git