Me gustaría poder hacer algo como:
AOEU=$(echo aoeu)
y tener a Jenkins listo AOEU=aoeu
.
La sección de Variables de entorno en Jenkins no hace eso. En cambio, se establece AOEU='$(echo aoeu)'
.
¿Cómo puedo hacer que Jenkins evalúe un comando de shell y asigne la salida a una variable de entorno?
Eventualmente, quiero poder asignar al ejecutor de un trabajo a una variable de entorno que otros scripts pueden pasar o utilizar.
Respuestas:
Esto se puede hacer a través del complemento EnvInject de la siguiente manera:
Cree un paso de compilación "Ejecutar shell" que se ejecute:
Cree un paso de compilación de variables de entorno Inject y establezca "Ruta del archivo de propiedades" en
propsfile
.Nota : este complemento (en su mayoría) no es compatible con el complemento Pipeline.
fuente
sh
en el camino.foo
se exportará en esa acción de shell específica pero no en otras acciones.La forma más simple
Puede usar el complemento EnvInject para inyectar variables de entorno al inicio de la compilación. Por ejemplo:
¿Cómo sabes que está funcionando?
fuente
key=value
. En mi caso de uso, genero la línea completamente:cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[\d+\.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'
BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S"
yBUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S")
yBUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"`
no funcionó para míEn mi caso, necesitaba agregar la
JMETER_HOME
variable de entorno para estar disponible a través de mis scripts de compilación Ant en todos los proyectos en mi servidor Jenkins (Linux), de manera que no interfiriera con mi entorno de compilación local (Windows y Mac) en elbuild.xml
script . Establecer la variable de entorno a través de Administrar Jenkins - Configurar sistema - Las propiedades globales fue la forma más fácil y menos intrusiva de lograr esto. No se necesitan complementos.La variable de entorno está disponible en Ant a través de:
Esto puede verificarse para que funcione agregando:
Que produce:
fuente
git
/path/to/my/git
yPATH+git
/path/to/my/git
. Sin embargo, si estoy intentando accedergit
desde la unaJenkins pipeline script
, me sale:/bin/sh: git: command not found
.Puede usar el complemento Inyector de entorno para establecer variables de entorno en Jenkins en los niveles de trabajo y nodo. A continuación, mostraré cómo configurarlos a nivel de trabajo.
Manage Jenkins > Manage Plugins
e instale el complemento.Configure
pantalla deAdd build step
en laBuild
sección y seleccionaInject environment variables
Si necesita definir una nueva variable de entorno dependiendo de algunas condiciones (por ejemplo, parámetros del trabajo), puede consultar esta respuesta .
fuente
Puedes probar algo como esto
fuente
Jenkinsfile
tubería (no trabajo)! Eso es genial, gracias por eso!EnvInject Plugin también conocido como ( Environment Injector Plugin ) le ofrece varias opciones para establecer variables de entorno desde la configuración de Jenkins.
Al seleccionar
Inject environment variables to the build process
obtendrá:Properties File Path
Properties Content
Script File Path
Script Content
y finalmente
Evaluated Groovy script
.Evaluated Groovy script
le brinda la posibilidad de establecer una variable de entorno basada en el resultado del comando ejecutado :execute
método:Groovy
código explícito :(Se pueden encontrar más detalles sobre cada método en la ayuda integrada (?))
Lamentablemente no puedes hacer lo mismo
Script Content
como dice:fuente
Hay Build Env Propagator Plugin que le permite agregar nuevas variables de entorno de compilación, p. Ej.
fuente
En mi caso, configuré variables de entorno usando la siguiente opción y funcionó:
fuente
Normalmente, puede configurar variables de entorno en propiedades globales en Configurar sistema .
Sin embargo, para las variables dinámicas con sustitución de shell, es posible que desee crear un archivo de secuencia de comandos en el directorio HOME de Jenkins y ejecutarlo durante la compilación. Se requiere el acceso SSH. Por ejemplo.
sudo su - jenkins
osudo su - jenkins -s /bin/bash
Cree un script de shell, por ejemplo:
En Jenkins Build ( Ejecutar shell ), invoque el script y sus variables antes que cualquier otra cosa, p. Ej.
fuente
sudo su - jenkins
, aunecho $USER
me daroot
.su -l
parámetro para hacerlo, de lo contrario haga una pregunta por separado.Nota: El valor de la variable de entorno viene como una cadena. Si desea usarlo como booleano, debe analizarlo usando Boolean.parse (env.DISABLE_SQL).
fuente
Pruebe Environment Script Plugin ( GitHub ), que es muy similar a EnvInject . Le permite ejecutar un script antes de la compilación (después del pago de SCM) que genera variables de entorno para él. P.ej
y en su guión, puede imprimir, por ejemplo
FOO=bar
a la salida estándar para establecer esa variable.Ejemplo para agregar a una
PATH
variable de estilo existente :Por lo tanto, puede hacer lo que necesite en el script, ya sea
cat
un archivo o ejecutar un script en otro idioma desde el árbol fuente de su proyecto, etc.fuente
Puede utilizar cualquiera de las siguientes formas enumeradas a continuación:
Administrar Jenkins -> Configurar sistema -> Propiedades globales -> Variables de entorno -> Agregar
fuente
Por alguna razón
sudo su - jenkins
no me registra aljenkins
usuario , terminé usando un enfoque diferente.Tuve éxito al configurar las variables globales env usando jenkins
config.xml
en/var/lib/jenkins/config.xml
(instalado en Linux / RHEL), sin usar complementos externos.Simplemente tuve que detener jenkins add, luego add
globalNodeProperties
y luego reiniciar.Ejemplo, estoy definiendo variables
APPLICATION_ENVIRONMENT
ySPRING_PROFILES_ACTIVE
acontinious_integration
continuación,fuente
Usamos un archivo de trabajo maravilloso:
fuente