Jenkins从站不使用与本地终端相同的Ruby版本

cx6n0qe3  于 2023-01-16  发布在  Jenkins
关注(0)|答案(2)|浏览(163)

我正在使用OSX Jenkins从机为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

除此之外,一切都是什么来安装。

93ze6v8z

93ze6v8z1#

当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
jhiyze9q

jhiyze9q2#

如果您使用的是RVM,请使用以下脚本

export PATH="$PATH:$HOME/.rvm/bin"

现在可以运行所有rvm命令

相关问题