[英]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.