2016-07-04 4 views
0

Я использую Capistrano (v3.5.0) для развертывания небольшого приложения Rails с моей локальной машины разработки на VPS, размещенном на Linode, с помощью ключа развертывания, установленного на Bitbucket. Уже на прошлой неделе он работал как шарм.Почему вдруг Capistrano не может прочитать из моего хранилища Bitbucket Git во время развертывания?

Сегодня, однако, когда я запускаю обычную cap deploy команды, он терпит неудачу на третьем этапе, когда он пытался читать из моего Bitbucket Git репозитория:

DEBUG [6906a62c] Command: (export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.2.1" 
    GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/app/git-ssh.sh" ; /usr/bin/env git 
    ls-remote --heads [email protected]:klenwell/app.git) 

Это ошибка:

DEBUG [6906a62c]  conq: repository access denied. 
DEBUG [6906a62c]  fatal: The remote end hung up unexpectedly 

Я сделал очевидное устранение неполадок: искал сообщения об ошибках, подтвердил, что VPS работает, проверено, доступен ли репозиторий, дважды проверены ключи SSH, подтвержден запуск агента SSH. Если все остальное не удастся, я попробую создать новый ключ на моем VPS-хосте.

Эти точки, в частности, у меня смущенный:

  • Там было (насколько я могу сказать) нет изменений в Capistrano или конфигурации VPS, поскольку она последней успешной. Я вижу ту же самую команду, которая успешно работает в моих журналах Capistrano на прошлой неделе.
  • Когда я нахожу ssh на свой сервер VPS в качестве пользователя развертывания, я могу запустить ssh -T [email protected] и ту же самую команду git вручную без проблем.
  • Сервер Jenkins на моем локальном компьютере может успешно читать из одного репозитория Bitbucket с помощью его ключа развертывания.

Что мне не хватает?

+0

Capistrano использует SSH форвардинг агента. Эффективно это означает, что он будет использовать ваш * локальный * SSH-ключ для авторизации с помощью BitBucket. Изменен ли ваш локальный ключ или нет доступа BitBucket? –

+0

@MattBrictson Ты прибил его. У меня есть несколько пользователей Bitbucket в моей локальной системе, и я думаю, что по умолчанию был сброшен между развертываниями. Во всяком случае, исправление заключалось в том, чтобы добавить эту строку в мой файл 'deploy.rb':' set: ssh_options, {forward_agent: false} '. Преобразуйте свой комментарий в ответ, и я его выберу. Благодаря! – klenwell

ответ

1

По умолчанию Capistrano использует пересылку агента SSH. Эффективно это означает, что он будет использовать ваш локальный ключ SSH для авторизации с помощью BitBucket.

Возможно, ваш локальный ключ изменился или больше не имеет доступа к BitBucket, что объясняет, почему развертывание больше не работает.

Вы можете отключить перенаправление SSH агент Capistrano (в тем самым позволяя Git использовать ключ развертывания вы установили на сервере), как это:

set :ssh_options, { forward_agent: false } 

 Смежные вопросы

  • Нет связанных вопросов^_^