wake-up-neo.com

Verwendung von Jenkins-Parametern in einem Shell-Skript

Ich möchte die Parameter, die wir im Jenkins-Job definieren, als Argumente für die Shell-Befehle in demselben Job verwenden.

Ich habe einen parametrisierten Build mit den folgenden Parametern erstellt:

high.version: 234
low.version: 220

Ich möchte diese Variablen als Argumente für das Shell-Skript des Builds verwenden:

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

Wie führe ich diese Parameter im selben Job aus?

17
IMRAN SHAIK

Was mir wirklich geholfen hat, war Hudson: Wie man Parameter an das Shell-Skript übergibt

Lösung: Die Variablen sind GROSSBUCHEN, selbst wenn Sie sie in Kleinbuchstaben definieren!

13
Florian Straub

Jenkins erstellt Umgebungsvariablen mit den Parameternamen.

Der Nachteil dabei ist, dass Jenkins auch für Parameter tut, die keine gültigen Variablennamen darstellen - auf die in bash nur schwer zuzugreifen ist. Dies ist in Ihrem Beispiel der Fall, da Variablennamen bash das Zeichen . nicht enthalten dürfen.

Die einfachste Lösung ist das Sie

  • benennen Sie Ihre Parameter um , z. zu high_version und low_version (die gültigen Variablennamen bash sind)
  • verwenden Sie dann die entsprechenden Variablennamen, wenn Sie Ihr Skript aufrufen

Beispiel:

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

Wenn Sie die Parameter nicht umbenennen können, um gültige Variablennamen von bash darzustellen (z. B. aus Gründen der Benutzerfreundlichkeit: Jenkins stellt den Endbenutzern im Webformular Variablennamen zum Starten eines Builds zur Verfügung): Sie können auf diese Parameter weiterhin mit grepping für zugreifen der Parametername in der Ausgabe des env-Befehls .

10
Alex O

Hast du das probiert?

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

Seien Sie vorsichtig mit dem Variablennamen, Punkt wird nicht so gut unterstützt, für Details können Sie dies verweisen. https://issues.jenkins-ci.org/browse/JENKINS-7180 ​​

0
Tim