加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何通过gitlab CI / CD在CloudFront上推送Jekyll网站时

发布时间:2020-12-17 03:10:59 所属栏目:百科 来源:网络整理
导读:我在 GitLabs中创建了Pipeline,我使用docker作为gitlab-runner.我想在s3网站上推送Jekyll网站.为此,我使用的是s3_website gem.我的管道中定义了4个阶段.我正在构建Jekyll,使用Gulp创建工件,在我的jekyll网站上执行测试然后部署. 所有步骤都正常,但在进行部署
我在 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存储桶和相应的cloudfront上部署该站点.

任何线索将不胜感激.

解决方法

我们在CircleCI上遇到了同样的错误.如果我理解正确的话,s3_website gem包含了一个使用JRuby 1.7的Java .jar,并且其中一个必须在Docker镜像或Ruby gems中发生变化,导致它开始继承系统的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

我在s3_website项目的GitHub页面上的reported this.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读