捆绑软件:不支持在使​​用系统gem时使用自定义路径

时间:2019-07-12 11:09:07

标签: ruby-on-rails gitlab bundler gitlab-ci

我正在使用GitLab-CI/CD构建我的Rails应用程序。我注意到我的构建由于Using a custom path while using system gems is unsupported错误而失败,该错误以前运行得很好。

试图检查较新的更新版本,但未发现任何问题。对最近的更新或提到的问题有任何想法吗?

同胞是我的gitlab-ci.yml

variables:
  GIT_SUBMODULE_STRATEGY: recursive

cache:
  key: ${CI_JOB_NAME}
  paths:
    - vendor/ruby

before_script:
    - apt-get update -qq
    - ruby -v
    - which ruby
    - gem --version
    - git --version
    - gem update --system 2.7.6
    - gem install bundler -v 2.0.1
    - bundle -v
    - bundle config ${REPO_URL} ${BUNDLE_GITLAB__TOKEN}
    - bundle config --global disable_shared_gems true
    - bundle install --jobs $(nproc)  "${FLAGS[@]}" --path vendor 

rubocop:
  tags:
    - rubocop
  script:
    - bundle exec rubocop

# rspec:
#   stage: test
#   script:
#     - bundle exec rspec

下面是我得到的简短错误

$ apt-get update -qq
$ ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux]
$ which ruby
/usr/local/bin/ruby
$ gem --version
3.0.3
$ git --version
git version 2.20.1
$ gem update --system 2.7.6
Updating rubygems-update
Successfully installed rubygems-update-2.7.6
Installing RubyGems 2.7.6
Bundler 1.16.1 installed
RubyGems 2.7.6 installed
Regenerating binstubs



------------------------------------------------------------------------------

RubyGems installed the following executables:
    /usr/local/bin/gem
    /usr/local/bin/bundle

RubyGems system software updated
$ gem install bundler -v 2.0.1
Successfully installed bundler-2.0.1
1 gem installed
$ bundle -v
Bundler version 2.0.1
$ bundle config https://gitlab.com/dharshannn/test-star.git ${BUNDLE_GITLAB__TOKEN}
$ bundle config --global disable_shared_gems true
$ bundle install --jobs $(nproc)  "${FLAGS[@]}" --path vendor
Using a custom path while using system gems is unsupported.

path:
Set for your local app (/usr/local/bundle/config): "vendor"

path.system:
Set via BUNDLE_PATH__SYSTEM: true

disable_shared_gems:
Set for the current user (/root/.bundle/config): true
ERROR: Job failed: exit code 1

1 个答案:

答案 0 :(得分:9)

今天我也发生了同样的事情。我很确定没有对bundlergem进行任何更新。但是,Docker映像已更新(我正在使用ruby:2.6.3)。当这种情况开始发生时,我还添加了一个新的依赖项,因此我怀疑它依赖于已安装在系统路径中的gem,因此会出现错误消息。

您可以通过在.gitlab-ci.yml中指定以下配置变量来解决此问题:

variables:
  BUNDLE_DISABLE_SHARED_GEMS: "true"
  BUNDLE_PATH__SYSTEM: "false"

这会将Bundler配置为不使用共享的gem,并完全禁用系统gem。

请参见https://bundler.io/v2.0/bundle_config.html

  

disable_shared_gems(BUNDLE_DISABLE_SHARED_GEMS):阻止Bundler访问安装到RubyGems正常位置的宝石。

  

path.system(BUNDLE_PATH__SYSTEM):Bundler是否将gems安装到默认系统路径(Gem.dir)中。