2016-06-05 3 views
0

TL; DR Travis에 Ruby가 아닌 프로젝트 (주로 Python) 프로젝트에 Ruby gem을 설치하면 어떻게 실행 파일을 사용할 수 있습니까? 빌드 시스템의 일부로 제공됩니다.Travis에서 python 프로젝트를 빌드하는 도구로 사용할 수있는 도구를 설치하십시오.

테스트 후 및 배포 전에 python project에 몇 가지 추가 작업을 빌드하는 데 사용할 Ruby gem을 설치하려고합니다. 특히, github-changelog-generator을 사용하여 나를위한 변경 로그를 자동 생성합니다.

트래비스의 새로운 컨테이너 빌드가 sudo을 허용하지 않기 때문에 루트에 설치할 수없는 것처럼 보입니다.

gem install --user-install github_changelog_generator을 사용하여 설치를 시도했습니다. 처음에는 github_changelog_generator을 실행할 때 command not found 오류가 발생했습니다.

export PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" 전에 다음 github_changelog_generator 결과를 실행하려고 : 나에게 제안이 종류의 그것을 발견했지만 확실히 뭔가를 이해하지 못하는

/home/travis/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:315:in `to_specs': Could not find 'github_changelog_generator' (>= 0) among 14 total gem(s) (Gem::LoadError) 
Checked in 'GEM_PATH=/home/travis/.rvm/gems/ruby-1.9.3-p551:/home/travis/.rvm/gems/[email protected]', execute `gem env` for more information 
    from /home/travis/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:324:in `to_spec' 
    from /home/travis/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:64:in `gem' 
    from /home/travis/.gem/ruby/1.9.1/bin/github_changelog_generator:22:in `<main>' 
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/ruby_executable_hooks:15:in `eval' 
    from /home/travis/.rvm/gems/ruby-1.9.3-p551/bin/ruby_executable_hooks:15:in `<main>' 

.

내가 가진 것보다 Ruby의 경험이 많은 사람에게는 분명히 알 수 있습니다. 다음과 같이

현재 트래비스의 YAML 조각은 다음과 같습니다

after_success: 
    - gem install --user-install github_changelog_generator 
    - export PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"  
    - github_changelog_generator -u pyFFTW -p pyFFTW 

답변

1

UPDATE :

내가 RVM을 깨닫지 못했다는 파이썬 프로젝트를 초기화하므로 수정 RVM 설치를하도록하는 것입니다되지 않았습니다 환경, 예. 기본 RVM 루비 버전하려는 경우

before_install: 
    - rvm get stable --auto-dotfiles 
    - rvm install 2.3.1 

이상을 : (컨테이너 대신 기본 1.9.3의) 루비 버전을 설치하여

before_install: 
    - rvm default 

또는, 당신이 원한다면 빌드가 성공한 경우에만 RVM을 설치 (예를 들어, 당신은 더 자주 못하는 것보다 트래비스 실패를 예상) :

after_success: 
    - rvm default 

RVM 것 설치 GEM_HOME 당신을 위해 GEM_PATH, 그래서 012과 같은 명령이및 bundler은 올바른 Ruby 및 경로를 사용합니다.

는 (이전 대답은 다음과 - 여전히 디버깅에 유용)

당신이 보석을 설치하는 경우는, PATH는 찾아 보석을로드 할 수있는 유일한 중요한 변수가 아닙니다. 또한 GEM_HOME 및 GEM_PATH를 올바르게 설정해야합니다.

확실하지 않은 경우 gem install을 실행하기 전에 gem env을 실행하십시오. 그러면 현재의 모든 보석 환경 (보석이 설치되어있는 위치, PATH 위치 등)이 표시됩니다. gem list을 실행하여 보석이 제대로 설치되어 사용 가능한지 확인할 수도 있습니다. gem contents github_changelog_generator은 파일이 설치된 위치를 정확히 보여줍니다.

출력을 붙여 넣으면 변경해야 할 것이 명확 해집니다.

트래비스는 보석을로드하는 데에도 번들러를 사용하므로 Gemfile 인 경우 해당 보석이 Gemfile에 없으면 일부 경우 무시 될 수 있습니다.

다시 말하지만, gem env에서 나온 것은 Ruby 환경이 파이썬 프로젝트/컨테이너에서 어떻게 보이는지에 대한 단서를 제공해야합니다.

그런데 나머지 .travis.yml 파일은 어떻게 생겼습니까? language 세트가 있습니까? sudo: false 세트가 있습니까?

+0

예,'language : python'과'sudo : false'가 설정되어 있습니다. 다른 출력을 살펴 보겠습니다. 감사! –

+0

네, 도와 줘서 고마워. 해결책은 'rvm default'를 수행하는 것처럼 쉬운 '관련 rvm'을 활성화 한 다음 '--user-install' 인수를 제거하는 것이 었습니다. 그래서'rvm default' 다음에'gem install github_changelog_generator'가옵니다. 완성도에 대한 답변을 추가 할 수 있다면 좋을 것입니다. –

관련 문제