shell - scripts bash ejemplos
Cómo usar los parámetros de Jenkins en un script de shell (3)
Quiero usar los parámetros que definimos en el trabajo de Jenkins como argumentos para los comandos de shell en el mismo trabajo.
He creado una construcción parametrizada con los siguientes parámetros:
high.version: 234
low.version: 220
Quiero usar estas variables como argumentos para el script de shell de la compilación:
/bin/bash /hai/mycode/scripts/run_script.sh high.version
¿Cómo hago estos parámetros en el mismo trabajo?
¿Has probado esto?
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
Tenga cuidado con el nombre de la variable, el punto no está tan bien soportado, para detalles, puede refinar esto. https://issues.jenkins-ci.org/browse/JENKINS-7180
Jenkins creará variables de entorno con los nombres de los parámetros.
La advertencia aquí es que Jenkins también lo hará para los parámetros que no representan nombres de variables válidos, ya que son difíciles de acceder en bash
. Este es el caso en su ejemplo, ya que los nombres de variables bash
no deben contener el .
personaje.
La solución más fácil es que tu
- renombra tus parámetros , por ejemplo, a
high_version
ylow_version
(que son nombres de variablesbash
válidos) - luego use los nombres de las variables correspondientes al llamar a su script
Ejemplo:
/bin/bash /hai/mycode/scripts/run_script.sh "$high_version"
Si no puede cambiar el nombre de los parámetros para representar nombres de variables de bash
válidos (p. Ej., Por razones de usabilidad: Jenkins presenta los nombres de las variables a los usuarios finales en el formulario web para iniciar una compilación): aún puede acceder a dichos parámetros al obtener el nombre del parámetro en la salida del comando env
.
Lo que realmente me ayudó fue Hudson: cómo pasar parámetros a shell script
Solución: las variables son MAYÚSCULAS incluso si las define en minúsculas.