Ruby на Rails: использование частного репозитория (пакет Yarn) и развертывание с Chef Server - PullRequest
1 голос
/ 18 марта 2020

Мое приложение 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? Мне это не кажется правильным, но сейчас это может быть приемлемым обходным путем.

...