gpt4 book ai didi

Jenkins 使用默认的 ruby​​ 但不是来自 RVM

转载 作者:行者123 更新时间:2023-12-05 09:19:17 30 4
gpt4 key购买 nike

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

我的机器有 2 个版本的 ruby:

  • 默认版本来自操作系统 /System/Library/Frameworks/...../usr/bin/ruby

  • ruby v2.3.3 安装 RVM

    在机器上,自动化运行一些带有一些命令的 Perl 脚本。 jenkins 的 whoami 提供 snaggs

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

$ 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 我安装了 ruby 版本 rvm:

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

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 下的其他版本?

[编辑]

以 super 用户身份运行脚本

最佳答案

我在尝试配置 Java 版本时遇到了类似的问题。

看看Jenkins wiki :

When the SSH slaves plugin connects to a slave, it does not run an interactive shell. Instead, it does the equivalent of your running "ssh slavehost command..."

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

On machine the automation runs some Perl script with some commands.

您可以尝试创建一些自定义 .bash_profile_CUSTOM 等于您的原始 .bash_profile 您需要调用 .bash_profile_CUSTOM 因为 Jenkins 使用 < em>拥有 .bash_profile 默认情况下。运行您的 perl 脚本,如:

ssh snaggs@1.1.1.1 "source ~/.bash_profile_CUSTOM && perl some_perl_script.pl"

请记住,每次 Jenkins 连接到您的构建机器时,您都需要绑定(bind) bash_profile_CUSTOM 文件。所以从 Jenkins 命令可执行文件应该是这样的:

source ~/.bash_profile_CUSTOM && perl some_perl_script.pl

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


编辑:(25/12/2016)

如果您不想为 Jenkins 安装插件(例如 EnvInject Plugin 用于 Prefix Start Slave Command),您可以使用 bash 脚本包装 Perl 脚本,例如:

#!/bin/bash

source ~/. bash_profile_CUSTOM;

perl some_perl_script.pl;

因此 Perl 脚本将从您使用 .bash_profile_CUSTOM 定义的配置文件开始。

关于Jenkins 使用默认的 ruby​​ 但不是来自 RVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41285869/

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