2016-12-22 1 views
2

사용자 snaggs이있는 ssh을 통해 내 컴퓨터에 연결하는 Jenkins 자동화 서버가 있습니다.젠킨스는 기본 루비를 사용하지만 RVM에서는 사용하지 않습니다.

내 기계가 ruby의 2 개 버전있다

:

  • 기본 버전이 OS에서 유래가 /System/Library/Frameworks/ ..... /usr/bin/ruby
  • ruby v2.3.3이 시스템에서 RVM

    와 함께 설치된 자동화 일부 명령과 약간의 펄 스크립트를 실행 . 젠킨스에서 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 

내가 가지고있는 동일한 사용자 snaggsssh와 동일한 시스템에 입력 할 때 ruby 버전은 rvm과 함께 설치됩니다.

내가 $ gem env을 실행하면3210

내가 얻을 출력 :

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/[email protected] 
    - 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/[email protected]/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 

어떻게 /Users/snaggs/.rvm/gems/ruby-2.3.3 아래에있는 다른 버전을 사용 젠킨스에게 전하고?

[편집]

내가 자바 버전을 구성하려고 할 때 나는 비슷한 문제가 있었다

+0

PATH가 예상대로 설정되지 않은 것 같습니다. [rvm plugin] (https://wiki.jenkins-ci.org/display/JENKINS/RVM+Plugin) 사용 방법은 어떻습니까? –

답변

4

수퍼 유저로하지 실행 스크립트를 할 .

Jenkins wiki에 살펴 보자 : SSH를 노예 플러그인은 슬레이브에 연결하면

, 그것은 대화 형 쉘을 실행하지 않습니다. ssh [email protected] "gem env"

대신 당신이 SSH에서 gem env을 실행할 때

그래서 젠킨스 가져처럼 같은 결과를 얻을해야 가정 "... ssh를 slavehost 명령의"실행하는 것과 동일을한다 기계에서 자동화는 몇 가지 명령으로 일부 Perl 스크립트를 실행합니다. 젠킨스는 기본적으로 자신의.bash_profile를 사용하기 때문에 당신은 .bash_profile 원래 같음 일부 사용자 지정 .bash_profile_CUSTOM을 만들려고 할 수 있습니다

당신은 .bash_profile_CUSTOM를 호출해야합니다.그냥 당신이 바인드bash_profile_CUSTOM 파일에 젠킨스는 빌드 컴퓨터에 연결될 때마다이 필요하다는 것을 기억

ssh [email protected] "source ~/.bash_profile_CUSTOM && perl some_perl_script.pl" 

:처럼 펄 스크립트를 실행합니다.

source ~/.bash_profile_CUSTOM && perl some_perl_script.pl 

작동 또는 다른 출력 당신에게


편집을 주면 알려 : 그래서 젠킨스에서 명령 실행 파일 같은 것을해야한다 (25/12/2016)

Jenkins 용 플러그인 (예 : Prefix Start Slave Command의 경우 EnvInject Plugin)을 설치하지 않으려면 다음과 같이 bash 스크립트로 Perl 스크립트를 래핑 할 수 있습니다.

#!/bin/bash 

source ~/.bash_profile_ORIG; 

perl some_perl_script.pl; 

Perl 스크립트는 .bash_profile_CUSTOM으로 정의한 프로필로 시작됩니다.

+0

는 (bash 스크립트로) 당신의 솔루션처럼 보이는데, 나는'.bash_profile_CUSTOM'을 만들었고 ssh에서 작동합니다. 예 :). 나는 또한'perl'에 대한 전체 경로를 작성해야합니다. 임씨는 이제 bash에서 Perl에서 종료 코드를 가져와야합니다. 당신은 며칠을 구해주었습니다. 감사합니다. – snaggs

+0

아직도 젠킨스와 관련된 몇 가지 문제가 있지만 그 내면 – snaggs

+0

@snaggs, 오케이, 나는 숙제를 할 수 있도록 자신의 환경을 가지고 있지 않습니다. 나는 나를 위해 일한 개념을 게시했다. 행운을 빕니다 –

관련 문제