gpt4 book ai didi

ruby - Jenkins Slave 不使用与本地终端相同的 Ruby 版本

转载 作者:行者123 更新时间:2023-12-03 21:37:11 26 4
gpt4 key购买 nike

我正在使用 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​​ 包管理器设置。
将 ~/.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

关于ruby - Jenkins Slave 不使用与本地终端相同的 Ruby 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com