Как исправить проблему «s3_website» при продвижении сайта Jekyll на CloudFront через Gitlab CI / CD? - PullRequest
0 голосов
/ 14 января 2019

Я создал Pipeline в GitLabs и использую docker в качестве gitlab-runner. Я хочу разместить сайт Джекилла на сайте s3. И для этого я использую гем s3_website. У меня есть 4 этапа, определенные в моем конвейере. Там, где я собираю Jekyll, создаю артефакты с использованием Gulp, выполняю тестирование на моем сайте jekyll и затем внедряю.

Все шаги работают нормально, но при развертывании я получаю следующую ошибку. И я не мог понять, как это решить.

[fail] Could not load the site: Failed to parse ERB in /builds/myproject/s3_website.yml:
       (SyntaxError) /usr/local/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_warn.rb:15: syntax error, unexpected tLABEL
           module_function define_method(:warn) {|*messages, uplevel: nil|

Он отлично работает на моей локальной машине, когда я не на Docker. Но когда я пытаюсь сделать то же самое, используя докер. Это дает мне ошибку выше.

Я пробовал это с ruby ​​2.3, 2.4, 2.5, 2.6 на моем докере. Однако не повезло.

bundle exec s3_website push

Я ожидаю, что это развернет сайт в сегменте S3 и соответствующем облачном фронте.

Любая подсказка будет оценена.

Ответы [ 2 ]

0 голосов
/ 31 июля 2019

То же сообщение об ошибке, но другое решение.

Корень моей проблемы был в том, что S3_ACCESS_KEY_ID не был установлен правильно. Я отправил мой .env файл

source .env

И это загрузило переменную ключа доступа, и развертывание сработало.

0 голосов
/ 18 января 2019

Мы столкнулись с этой же ошибкой на CircleCI. Если я правильно понимаю, гем s3_website обертывает Java .jar, использующий JRuby 1.7, и что-то должно было измениться в одном из образов Docker или гемах Ruby, что заставляет его начать наследовать системный путь Ruby 2+. В результате его JRuby 1.7 пытается загрузить гемы Ruby, которые работают только в Ruby 2.0 и выше, поэтому он сталкивается с ошибками.

В качестве обходного пути, вместо того, чтобы позволить гему s3_website вызывать сам файл .jar, я приказываю гему s3_website загружать только файл .jar, затем я вызываю его вручную:

bundle exec s3_website install
java -cp $(bundle show s3_website)/*.jar s3.website.Push

I сообщил об этом на странице GitHub проекта s3_website.

...