首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jenkins使用默认的ruby,但不使用RVM。

Jenkins使用默认的ruby,但不使用RVM。
EN

Stack Overflow用户
提问于 2016-12-22 14:53:08
回答 1查看 2.8K关注 0票数 2

我有Jenkins自动化服务器,它通过ssh与用户snaggs连接到我的机器。

我的机器有两个版本的ruby

  • 默认版本来自OS /System/Library/Frameworks/ ..... /usr/bin/ruby
  • ruby v2.3.3安装了RVM 在机器上,自动化使用一些命令运行一些Perl脚本。詹金斯的whoami给了snaggs

当Perl脚本运行命令gem env时,输出是:

代码语言:javascript
运行
复制
$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14.1
  - RUBY VERSION: 2.0.0 (2015-12-16 patchlevel 648) [universal.x86_64-darwin16]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-16
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/snaggs/.gem/ruby/2.0.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org"]
  - REMOTE SOURCES:
     - http://rubygems.org

然而,当我使用ssh 进入同一台计算机时,与相同的用户使用 snaggs ,则安装了 rvm**:**的 ruby 版本。

当我运行$ gem env时,会得到输出:

代码语言:javascript
运行
复制
RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.8
  - RUBY VERSION: 2.3.3 (2016-11-21 patchlevel 222) [x86_64-darwin16]
  - INSTALLATION DIRECTORY: /Users/snaggs/.rvm/gems/ruby-2.3.3
  - USER INSTALLATION DIRECTORY: /Users/snaggs/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /Users/snaggs/.rvm/rubies/ruby-2.3.3/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/snaggs/.rvm/gems/ruby-2.3.3/bin
  - SPEC CACHE DIRECTORY: /Users/snaggs/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/snaggs/.rvm/rubies/ruby-2.3.3/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-16
  - GEM PATHS:
     - /Users/snaggs/.rvm/gems/ruby-2.3.3
     - /Users/snaggs/.rvm/gems/ruby-2.3.3@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org"]
  - REMOTE SOURCES:
     - http://rubygems.org
  - SHELL PATH:
     - /Users/snaggs/.rvm/gems/ruby-2.3.3/bin
     - /Users/snaggs/.rvm/gems/ruby-2.3.3@global/bin
     - /Users/snaggs/.rvm/rubies/ruby-2.3.3/bin
     - /usr/local/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Users/snaggs/.rvm/bin

如何告诉Jenkins使用位于/Users/snaggs/.rvm/gems/ruby-2.3.3下的其他版本

编辑

I不以超级用户身份运行脚本

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-25 09:34:34

当我试图配置Java版本时,我也遇到了类似的问题。

看看詹金斯维基

当SSH从插件连接到从插件时,它不会运行交互式shell。相反,它执行相当于运行"ssh slavehost命令.“的操作。

因此,假设当您从ssh运行gem env时,您应该得到与Jenkins:ssh snaggs@1.1.1.1 "gem env"相同的结果

在机器上,自动化使用一些命令运行一些Perl脚本。

您可以尝试创建一些与您需要调用的原始.bash_profile_CUSTOM相等的自定义.bash_profile,因为Jenkins默认使用自己的.bash_profile .Run,您的perl脚本类似于:

代码语言:javascript
运行
复制
ssh snaggs@1.1.1.1 "source ~/.bash_profile_CUSTOM && perl some_perl_script.pl"

请记住,每次Jenkins连接到构建机器时,都需要绑定bash_profile_CUSTOM文件。因此,在Jenkins中,命令可执行文件应该如下所示:

代码语言:javascript
运行
复制
source ~/.bash_profile_CUSTOM && perl some_perl_script.pl

让我知道它是否有效,或者给你不同的输出。

编辑:(2016年12月25日)

如果您不想为Jenkins安装插件(比如EnvInject插件前缀启动从命令),可以用bash脚本包装Perl脚本,如下所示:

代码语言:javascript
运行
复制
#!/bin/bash

source ~/. bash_profile_CUSTOM;

perl some_perl_script.pl;

所以Perl脚本将从您用.bash_profile_CUSTOM定义的概要文件开始。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41285869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档