簡體   English   中英

Jenkins 從站不使用與本地終端相同的 Ruby 版本

[英]Jenkins Slave Doesn't Use Same Ruby Version As On Local Terminal

我正在使用 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 執行您的腳本時,它不會訪問您的本地 ~/.bash_profile 或 ~/.zhrc,它們將設置或引用您的 ruby package 管理器設置。

將 ~/.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

如果您使用的是 RVM,請使用以下腳本

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

現在你可以運行所有的 rvm 命令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM