【问题标题】:Jenkins Slave Doesn't Use Same Ruby Version As On Local TerminalJenkins Slave 不使用与本地终端相同的 Ruby 版本
【发布时间】:2016-03-20 08:15:36
【问题描述】:

我正在使用 OSX Jenkins slave 来为 Xcode 运行一些构建命令。当我在本地终端运行 gem 环境时,这就是我得到的。

RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.8
  - RUBY VERSION: 2.2.0 (2014-12-25 patchlevel 0) [x86_64-darwin15]
  - INSTALLATION DIRECTORY: /Users/nvitas/.rvm/gems/ruby-2.2.0
  - RUBY EXECUTABLE: /Users/nvitas/.rvm/rubies/ruby-2.2.0/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/nvitas/.rvm/gems/ruby-2.2.0/bin
  - SPEC CACHE DIRECTORY: /Users/nvitas/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/nvitas/.rvm/rubies/ruby-2.2.0/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-15
  - GEM PATHS:
     - /Users/nvitas/.rvm/gems/ruby-2.2.0
     - /Users/nvitas/.rvm/gems/ruby-2.2.0@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/nvitas/.rvm/gems/ruby-2.2.0/bin
     - /Users/nvitas/.rvm/gems/ruby-2.2.0@global/bin
     - /Users/nvitas/.rvm/rubies/ruby-2.2.0/bin
     - /Users/nvitas/.rvm/bin
     - /usr/local/opt/ruby/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

这是我所期望的。现在,当我通过 Jenkins 运行完全相同的命令时,我得到了这个

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0 (2015-04-13 patchlevel 645) [universal.x86_64-darwin15]
  - INSTALLATION DIRECTORY: /Users/nvitas/.rvm/gems/ruby-1.9.2-p320
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/nvitas/.rvm/gems/ruby-1.9.2-p320/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-15
  - GEM PATHS:
     - /Users/nvitas/.rvm/gems/ruby-1.9.2-p320
     - /Users/nvitas/.rvm/gems/ruby-1.9.2-p320@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/

我在同一个目录中运行所有东西,同一个用户,没有什么不同,那么为什么 ruby​​ 版本和目录是错误的?我的 Jenkins Slave 中唯一的配置设置是 PATH 变量,其值为

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/nvitas/.rvm/gems/ruby-2.2.0/bin:/Users/nvitas/.rvm/bin:/Users/nvitas/.rvm/gems/ruby-2.2.0

除此之外,一切都是安装的。

【问题讨论】:

  • 您能否发布有关您的 jenkins 配置和 gemfile 的更多信息

标签: ruby macos jenkins gem


【解决方案1】:

当 jenkins 执行您的脚本时,它不会访问您的本地 ~/.bash_profile 或 ~/.zhrc,它们将设置或引用您的 ruby​​ 包管理器设置。

将 ~/.bash_profile 或 ~/.zhrc 中的任何内容添加到 Jenkins 项目配置中的构建脚本中。

在我的情况下,我使用的是 chruby,这是我的经验中最简单的一个 - 所以我在 jenkins 脚本中的 #!/bin/zsh -l 下面添加了这个。您的第一行可能会说 #!/bin/bash...

source /usr/local/opt/chruby/share/chruby/auto.sh

source /usr/local/share/chruby/chruby.sh
source /usr/local/share/chruby/auto.sh
chruby ruby-2.7.2

如果您使用的是 rbenv,您可能会改为包含以下内容:

~/.rbenv/bin/rbenv init

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-05
    • 2020-07-16
    • 2021-08-30
    • 2012-09-28
    • 1970-01-01
    • 2020-07-05
    • 2020-12-10
    • 2020-11-24
    相关资源
    最近更新 更多