Назад | Перейти на главную страницу

capistrano 3 «не похоже на репозиторий git»

У меня проблема, когда я пытаюсь развернуть приложение rails через capistrano. Ниже приведены мои текущие файлы конфигурации с отредактированными именами серверов:

config / deploy.rb

  lock '3.2.1'

  set :application, "my_app"
  set :repo_url, "my.server.example.com:/path/to/my_app.git"
  set :branch, 'master'
  set :use_sudo, false
  set :deploy_to, "/srv/#{fetch(:application)}"

конфигурация / развертывание / production.rb

role :app, "my.server.example.com"
role :web, "my.server.example.com"
role :db,  "my.server.example.com", :primary => true

server 'my.server.example.com',
  user: 'root',
  roles: %w{web app},
  ssh_options: {
    user: 'me', # overrides user setting above
    keys: %w(/home/me/.ssh/id_rsa),
    forward_agent: false,
    auth_methods: %w(publickey),
    verbose: :debug
}

В основном задействованы три компьютера:

  1. localhost, моя рабочая станция
  2. my.server.example.com, размещает приложение rails
  3. my.git.example.com, размещает git-репозитории.

Когда я пытаюсь развернуть, я получаю следующую ошибку:

[me@localhost my_app]$ cap production deploy
 INFO [d2263887] Running /usr/bin/env mkdir -p /tmp/my_app/ on my.server.example.com
DEBUG [d2263887] Command: /usr/bin/env mkdir -p /tmp/my_app/
 INFO [d2263887] Finished in 0.713 seconds with exit status 0 (successful).
DEBUG Uploading /tmp/my_app/git-ssh.sh 0.0%
 INFO Uploading /tmp/my_app/git-ssh.sh 100.0%
 INFO [acbfa48d] Running /usr/bin/env chmod +x /tmp/my_app/git-ssh.sh on my.server.example.com
DEBUG [acbfa48d] Command: /usr/bin/env chmod +x /tmp/my_app/git-ssh.sh
 INFO [acbfa48d] Finished in 0.005 seconds with exit status 0 (successful).
DEBUG [b2d0392c] Running /usr/bin/env git ls-remote -h my.git.example.com:/path/to/repos/my_app.git on my.server.example.com
DEBUG [b2d0392c] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/my_app/git-ssh.sh /usr/bin/env git ls-remote -h my.git.example.com:/path/to/repos/my_app.git )
DEBUG [b2d0392c]    fatal: '/path/to/repos/my_app.git' does not appear to be a git repository
DEBUG [b2d0392c]    fatal: The remote end hung up unexpectedly
DEBUG [b2d0392c] Finished in 1.025 seconds with exit status 128 (failed).

Дальнейшее расследование привело меня к выводу, что линия

git ls-remote -h my.git.example.com:/path/to/repos/my_app.git

выдает ошибку, поскольку дает мне то же самое сообщение об ошибке, когда я пытаюсь выполнить ее на my.server.example.com. Он работает, если я изменю его на:

git ls-remote -h меня@my.git.example.com:/path/to/repos/my_app.git

Поэтому у меня есть сильное чувство, что мой пользователь каким-то образом настроен неправильно и был бы признателен за любые указатели в правильном направлении.

Исправить проблему на самом деле было довольно просто. В config / deploy.rb мне пришлось установить forward_agent установка на правда.


      ssh_options: {
        user: 'me', # overrides user setting above
        keys: %w(/home/me/.ssh/id_rsa),
        forward_agent: истина,
        auth_methods: %w(publickey),
        verbose: :debug
    }