gpt4 book ai didi

ruby - 通过 gitlab CI/CD 在 CloudFront 上推送 Jekyll 站点时如何解决 "s3_website"问题?

转载 作者:IT老高 更新时间:2023-10-28 21:25:48 26 4
gpt4 key购买 nike

我在 GitLabs 中创建了 Pipeline,我使用 docker 作为 gitlab-runner。我想在 s3 网站上推送 Jekyll 网站。为此,我正在使用 s3_website gem。我的管道中定义了 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 上时,它在我的本地机器上运行良好。但是当我尝试使用 docker 做同样的事情时。它给了我上述错误。

我在我的 docker 机器上使用 ruby​​ 2.3、2.4、2.5、2.6 进行了尝试。但是没有运气。

bundle exec s3_website push

我希望这会将站点部署在 S3 存储桶和相应的云端。

任何线索将不胜感激。

最佳答案

我们在 CircleCI 上遇到了同样的错误。如果我理解正确,s3_website gem 包装了一个使用 JRuby 1.7 的 Java .jar,并且在 Docker 镜像或 Ruby gem 之一中一定发生了一些变化,导致它开始继承系统的 Ruby 2+ 路径。结果,它的 JRuby 1.7 尝试加载只能在 Ruby 2.0 及更高版本中运行的 Ruby gem,因此会出错。

作为一种解决方法,我不让 s3_website gem 调用 .jar 文件本身,而是告诉 s3_website gem 只下载 .jar 文件,然后我手动调用它:

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

reported this在 s3_website 项目的 GitHub 页面上。

关于ruby - 通过 gitlab CI/CD 在 CloudFront 上推送 Jekyll 站点时如何解决 "s3_website"问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54175990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com