Мое приложение rails развернуто через Chef, и у меня возникают проблемы при клонировании частного репозитория пакета Yarn в мой проект после развертывания. Привязка к частному репо прекрасно работает локально. Репозиторий размещен на внутреннем URL GitHub моей компании (github.mycompany.com). Приложение также использует частный репо для драгоценного камня, и этот поиск работает просто отлично. Проблема возникает, когда Chef пытается запустить rails:assets:precompile
на рабочем сервере:
Error executing action `run` on resource 'ruby_execute[rake assets:precompile]'
================================================================================
Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of ["/opt/ruby_build/builds/system/bin/ruby", "/opt/ruby_build/builds/system/bin/bundle", "exec", "/opt/ruby_build/builds/system/bin/ruby", "/var/www/app_name/releases/latest/vendor/bundle/ruby/2.5.0/bin/rake", "assets:precompile"] ----
STDOUT: yarn install v1.21.1
[1/4] Resolving packages...
[2/4] Fetching packages...
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
STDERR: error Command failed.
Exit code: 128
Command: git
Arguments: ls-remote --tags --heads git@<repo_location>.git
Directory: /var/www/app_name/releases/latest
Output:
Load key "/home/ubuntu/.ssh/id_rsa": Permission denied
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Я впервые использую Yarn. Я читал некоторые вопросы о репозитории Yarn о клонировании частных репозиториев, но я думаю, что эта ситуация немного отличается. Эта настройка также отлично работает для всех наших других приложений Rails, которые не используют частные репозитории пряжи.
1) Почему в моем ключе S SH было бы отказано в разрешении? Он создан из deploy_key в пакете данных, и, как я уже говорил, прекрасно работает для установки частного репозитория gem (у нас есть пользователь Chef GitHub, который добавляется в качестве соавтора как для репозитория gem, так и для репозитория пряжи).
2) Есть ли способ полностью упаковать это репо в мой проект, предварительно скомпилировать ресурсы, а затем заставить наш производственный сервер обслуживать предварительно скомпилированные активы из папки / publi c? Мне это не кажется правильным, но сейчас это может быть приемлемым обходным путем.