RVM et Jenkins setup

Je suis nouveau à Jenkins CI. J'installe RVM dans mon Jenkins distant et quand j'exécute sous shell.

#!/bin/bash -x
source ~/.bashrc
rvm use 1.9.3@rails-3.2.3

j'obtiens les erreurs suivantes.

+ 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 1.9.3@rails-3.2.3

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.

ça veut dire Quoi? Je n'ai pas la moindre idée. S'il vous plaît aider moi.

mise à jour: j'ai essayé le script ci-dessous mais j'ai quand même des erreurs:

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

les Erreurs suivantes:

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

Jenkins build shell ne peut pas détecter RVM, gemmes et gemmes. Que dois-je faire?

mise à jour 2: par conséquent jenkins ne peut pas détecter ruby.

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

Je n'utilise pas de jenkins plugn et je ne fais qu'Exécuter script depuis la section Build - > Execute shell.

18
demandé sur Zeck 2012-04-18 16:19:15

6 réponses

essaie:

. $(/home/RVM_USER/.rvm/bin/rvm env 1.9.3@rails-3.2.3 --path)

assurez-vous d'exécuter le RVM stable:

rvm get stable

NOTE: La dernière version de Jenkins n'accepte pas toujours" source", mais".". RVM_USER est l'utilisateur qui a installé RVM. Vous pouvez aussi exporter la commande RVM dans le chemin principal.

11
répondu mpapis 2017-07-25 09:39:47

comme le suggère le message d'erreur, RVM attend un shell de connexion. Changer la ligne hashbang en #!/bin/bash -xl devrait résoudre ce problème.

27
répondu disrupt 2012-05-09 15:35:17

Oui, apparemment, vous manquez l' $HOME/.rvm/bin dans votre PATH. J'utilise RVM avec succès à partir de Hudson sur Mac OS X. La première chose à noter est que, sauf si vous définissez BASH_ENV variable d'environnement (ENV pour sh), .bashrc est appelé automatiquement seulement avec l'interpréteur de commandes interactif non-login. Un tel shell est démarré quand vous faites-par exemple-ce qui suit depuis la ligne de commande:

$ /bin/bash

quand vous utilisez #!/bin/bash dans votre script, .bashrc ne sera pas appelé.

à faites fonctionner RVM avec Hudson, j'ai les suivants dans mon .bash_profile:

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

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

Grâce à [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" j'ai activé rvm chaque fois que je démarre une nouvelle fenêtre de terminal (interactive, login shell).

je n'ai rien mis dans mon .bashrc, surtout que je ne cherche pas de scripts rvm là-bas. Rien de mal à cela, mais si d'Autres scripts rendent quelque chose stupide comme définir `exporter BASH_ENV=$HOME/.bashrc ' puis invoquer shell non-interactif, vous voyez ce qui peut arriver - il est facile à oublier.

Donc, au lieu de charger choses .bashrc, il est préférable de garder votre script indépendant de tout fichier de démarrage shell et de s'assurer que l'environnement correct est configuré dans le script. Je suis toujours $HOME/.rvm/bin dans mon .bash_profile, mais puis-je inclure ce qui suit au début de mon script:

#!/bin/bash

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

rvm use 1.9.3-head@MyGemSet

set -ex
cucumber # just an example

Notez le -e option qui force le script à sortir avec un code d'erreur si une commande suit set -ex échoue. Ce est un comportement que vous pouvez vouloir en utilisant le script avec Hudson. Il est incorrect de dire que RVM attend un shell de connexion. Bien que l'utilisation de #!/bin/bash -l dans ton script fonctionne, il ne semble pas être la meilleure approche.

9
répondu everyday productive 2012-06-03 17:20:41

il suffit d'ajouter ce code dans votre script shell, je pense que rvm se charge à partir de votre source donc il devrait fonctionner autrement besoin d'exporter la variable PATH

#!/bin/bash -l
source ~/.bashrc
rvm use 1.9.3@rails-3.2.3

l est pour login shel, si vous incluez x alors ce serait pour le débogage aussi.

3
répondu Mahattam 2014-08-27 12:24:48

ajout d'un shebang aux commandes de compilation dans jenkins corrigé cela pour moi

    #!/usr/bin/env bash

    rvm use 2.0.0
    bundle install
    rake test
    ...
1
répondu Gregory Ostermayr 2013-08-01 12:13:14

les noeuds Jenkins ne chargent pas les chemins de la même façon, donc ils n'utilisent pas le bon chemin pour trouver la version de ruby de rvm. Vous pouvez définir le chemin pour un agent donné.

  1. Trouvez votre chemin actuel en faisant echo $PATH
  2. en supposant que vous avez mis en place rvm correctement, trouvez où la version de ruby de RVM est localisée en exécutant which ruby
  3. il y a un paramètre dans la Configuration de votre agent où vous pouvez définir des variables environnementales. Définir le CHEMIN d'accès à 1 et 2 concaténées.
0
répondu Ethan 2017-06-23 19:09:36