2012-04-18 17 views
17

Ben Jenkins CI için yeni. Uzak Jenkins'imde ve kabuk altında çalıştırdığımda RVM kuruyorum. Aşağıdaki hataları alıyorum:RVM ve Jenkins kurulum

#!/bin/bash -x 
source ~/.bashrc 
rvm use [email protected] 

+ source /var/lib/jenkins/.bashrc 
++ PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/var/lib/jenkins/.rvm/bin:/var/lib/jenkins/.rvm/bin 
+ rvm use [email protected] 

RVM is not a function, selecting rubies with 'rvm use ...' will not work. 
You need to change your terminal settings to allow shell login. 
Please visit https://rvm.io/workflow/screen/ for example. 

Bu ne anlama geliyor? Benim hiçbir fikrim yok. Lütfen bana yardım et.

GÜNCELLEME

: Senaryonun altında çalıştı ama ben hala hatalar alıyorum:

#!/bin/bash -x 
source /home/zeck/.bashrc 
[[ -s ".rvmrc" ]] && source .rvmrc 
export RAILS_ENV=test 
bundle install 

hatalar:

/tmp/hudson457106939700368111.sh: line 5: bundle: command not found 
Build step 'Execute shell' marked build as failure 
Finished: FAILURE 

Jenkins inşa kabuk RVM, gemsets ve mücevher algılayamaz. Ne yapmalıyım?

GÜNCELLEME 2: Bu nedenle jenkins yakut algılamıyor. Ben herhangi bir Jenkins'i kullanmıyorum

+ ruby -v 
/tmp/hudson2505951775163045158.sh: line 5: ruby: command not found 
Build step 'Execute shell' marked build as failure 
Finished: FAILUR 

plugn ve sadece kabuk kısmını Yürütme> Üzerine Yapma gelen komut dosyasını çalıştırın ediyorum.

+0

Zeck, Ben de bu sorunu çözerek deliriyorum, nasıl düzelttiniz ??? – Farooq

cevap

11

deneyin:

. $(/home/RVM_USER/.rvm/bin/rvm env [email protected] --path) 

istikrarlı RVM çalıştırmak emin olun:

rvm get stable 

NOT: Son Jenkins versiyonu daima "kaynak" kabul değil, "". RVM_USER, RVM'yi yükleyen kullanıcıdır. Alternatif olarak, ana yoldaki RVM komutunu da dışa aktarabilirsiniz.

+0

İlk yardım için çok teşekkür ederim. Ama ben 'rvm: komutu bulunamadı' alıyorum. Lütfen benim güncellemelerim – Zeck

+0

'a bakın, çünkü bir rvm kurulumu için farklı kullanıcılar kullanıyorsunuz, ikinci kullanıcın zeck'in aynı RVM'yi kullandığından emin olun -/home/zeck/.bashrc' içinde ekleyin: 'export PATH = $ PATH:/var/lib/jenkins/.rvm/bin' – mpapis

27

Hata mesajının da belirttiği gibi, RVM bir oturum açma kabuğu bekler. Hastabaşı hattını #!/bin/bash -xl olarak değiştirmek bunu çözmelidir.

+5

Bu arada, kaynak .rvmrc terminaline çok baskı yapabilir. Bunun yerine bir # #!/Bin/bash -l 'kullanmak isteyebilirsiniz, daha sonra .rvmrc kaynağından sonra -x' yi ayarlayınız. – disrupt

+0

-l ve -x'nin ne için kullanıldığıyla ilgili herhangi bir açıklama var mı? –

+0

-l seçeneği size bir giriş kabuğu verir ve -x hata ayıklama modunda bash başlatır. Sadece kullanabildim, böylece Jenkins çıktısı çok ayrıntılı değildi. – bruz

9

Evet, PATH ürününüzde $HOME/.rvm/bin modelini kaçırıyorsunuz. Mac OS X'te Hudson'dan rvm'yi başarıyla kullanıyorum. Dikkat edilmesi gereken ilk şey, BASH_ENV ortam değişkenini (sh için ENV) tanımladığınız sürece, .bashrc otomatik olarak yalnızca etkileşimli oturum açma dışı kabukla çağrılır. Eğer komut #!/bin/bash kullandığınızda, .bashrc

$ /bin/bash 

denilen olmayacak: - örneğin - komut satırından aşağıdaki bunu yaptığında Böyle bir kabuk başlatılır.

Hudson ile rvm çalışması için, ben benim .bash_profile aşağıdaki adres: [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" için

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting 
export PATH 

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

teşekkürler ben rvm yeni terminal penceresi (interaktif, giriş kabuğu) her başlattığınızda etkindir.

.bashrc adresime hiçbir şey koymuyorum, özellikle burada rvm komut dosyalarını kullanmıyorum. Bununla ilgili yanlış bir şey yok, ancak başka bir komut dosyası, dışa aktarma BASH_ENV = $ HOME /.bashrc 've sonra etkileşimli olmayan kabuğu çağırırsanız, ne olabileceğini görürsünüz - aslında unutulması kolaydır. Bu nedenle, .bashrc'nize bir şeyler yüklemek yerine, komut dosyanızı herhangi bir kabuk başlangıç ​​dosyasından bağımsız olarak tutmak ve komut dosyasının içinde doğru ortamın kurulduğundan emin olmanız daha iyidir. Hala benim .bash_profile yılında $HOME/.rvm/bin tutmak, ama sonra Senaryomun başında şunlardır:

#!/bin/bash 

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

rvm use [email protected] 

set -ex 
cucumber # just an example 

Bildirimi herhangi bir komut set -ex Aşağıdaki işe yaramazsa hata kodu vererek çıkmasına senaryoyu zorlar -e seçeneği. Bu, senaryoyu Hudson'la birlikte kullanırken isteyebileceğiniz davranış. RVM'nin bir giriş kabuğu beklediğini söylemek yanlış. Komut dosyanızda #!/bin/bash -l kullanılmasına rağmen, en iyi yaklaşım gibi görünmüyor.

+0

Evet, bu yardımcı oldu. RVM'nin yeri değişebilir, benim durumumda, '[[-s”/usr/local/rvm/scripts/rvm "]] && kaynak"/usr/local/rvm/scripts/rvm "' çalıştı, rvm kullanımı ile birlikte ruby_name @ gemset_name' – 0x4a6f4672

1

#!/usr/bin/env bash 

    rvm use 2.0.0 
    bundle install 
    rake test 
    ... 
+0

Siz efendim, benim günümüzü yaptım :) – ncuesta

3

Sadece kabuk komut dosyası bu kodu eklemek benim için bu sabit jenkins içinde inşa komutlarına bir shebang ekleyerek ben başka işe PATH ihracat gerektiğinde böylece rvm Kaynağınızdaki yükleniyor düşünüyorum değişken

#!/bin/bash -l 
source ~/.bashrc 
rvm use [email protected] 

l Eğer x eklerseniz o zaman çok hata ayıklama olurdu, giriş Shel içindir.

0

Jenkins düğümleri yolları aynı şekilde yüklemez, bu nedenle rvm'nin ruby ​​sürümünü bulmak için uygun yolu kullanmaz. Belirli bir aracın yolunu belirleyebilirsiniz. yakut RVM versiyonu which ruby

  • çalıştırarak bulunduğu

    1. düzgün RVM kurdum varsayarsak echo $PATH
    2. yaparak anki yolunu bulun, ajanın Yapılandırma bir ayar var bulmak nerede çevresel değişkenleri ayarlayabilir. PATH değerini 1 ve 2 olacak şekilde ayarlayın.