web-dev-qa-db-fra.com

Comment utiliser les paramètres Jenkins dans un script Shell

Je souhaite utiliser les paramètres définis dans le travail Jenkins comme arguments des commandes Shell du même travail.

J'ai créé une construction paramétrée avec les paramètres suivants:

high.version: 234
low.version: 220

Je souhaite utiliser ces variables comme arguments du script Shell de la construction:

/bin/bash /hai/mycode/scripts/run_script.sh high.version

Comment puis-je ces paramètres dans le même travail?

17
IMRAN SHAIK

Ce qui m'a vraiment aidé, c’est Hudson: Comment passer des paramètres au script Shell

Solution: les variables sont en majuscule même si vous les définissez en minuscule!

13
Florian Straub

Jenkins créera des variables d'environnement avec les noms des paramètres.

La mise en garde ici est que Jenkins va aussi faire cela pour les paramètres qui ne représentent pas des noms de variables valides - ceux-ci sont difficiles d'accès dans bash. C'est le cas dans votre exemple, car les noms de variable bash ne doivent pas contenir le caractère ..

La solution la plus simple est que vous

  • renommez vos paramètres , par exemple. à high_version et low_version (qui sont des noms de variable bash valides)
  • utilisez ensuite les noms de variable correspondants lorsque vous appelez votre script

Exemple:

/bin/bash /hai/mycode/scripts/run_script.sh "$high_version"

Si vous ne pouvez pas renommer les paramètres pour représenter les noms de variable bash valides (par exemple, pour des raisons de convivialité: Jenkins présente les noms de variable aux utilisateurs finaux dans le formulaire Web pour démarrer une construction): vous pouvez toujours accéder à ces paramètres avec grepping le nom du paramètre dans la sortie de la commande env.

10
Alex O

Avez-vous essayé cela?

echo "function hello() {   " > gg.sh
echo "echo \$1">> gg.sh
echo "}" >> gg.sh
echo "hello \$1"  >> gg.sh
chmod 777 gg.sh

./gg.sh $hello_version

Faites attention au nom de la variable, le point n'est pas très bien supporté, pour plus de détails, vous pouvez le faire. https://issues.jenkins-ci.org/browse/JENKINS-7180 ​​

0
Tim