variables de paso entre archivos maravillosos

9

Estoy gestionando muchos trabajos en Jenkins mediante el complemento DSL. Ese complemento está usando definiciones .groovy, así que creo que incluso si alguien no usa Jenkins, pero usar groovy puede ayudar.

En general, quiero crear un archivo adicional, que puede ser un archivo maravilloso, JSON o YAML, lo que sea. Es importante la posibilidad de conectar ese archivo con mi archivo .groovy.

En ese archivo, estoy definiendo variables (en lugar de solo cadenas) por ejemplo, dirección IP u otras cosas, por ejemplo.

ip_gitlab: 1.2.3.4
default_user: admin

En mis maravillosos archivos, quiero poder usar estas variables.

Ese enfoque es posible en groovy?

rafal1337
fuente
Por supuesto que es posible. Por ejemplo, hay groovy-lang.org/json.html .
Huele el
Si es posible definir classpath adicional en el complemento DSL. luego colóquelo en la carpeta que agregará a los archivos geniales classpath como class GLOBAL{ def a=111; def b=222; }. entonces en el código deberías poder acceder a élGLOBAL.a
daggett
@daggett Estaba intentando como escribiste y siempre tengo un error: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org.codehaus.groovy.runtime.InvokerHelper$1@641eff69' with class 'org.codehaus.groovy.runtime.InvokerHelper$1' to class 'javaposse.jobdsl.dsl.JobParent' este error ocurre durante el procesamiento de tu clase GLOBAL
rafal1337
olvidé . para cada variable definida debe haber un staticprefijo. class GLOBAL{ static def a=111; static def b=222; }. Pero el error que tienes es extraño. ¿podría mostrar la variable que ha declarado y cómo la usa en dsl?
daggett
1. Mi configuración de dsl postimg.cc/TLHK5k6h 2. error durante el procesamiento de dsl postimg.cc/21F37jDs
rafal1337

Respuestas:

3

Sugiero usar un archivo de propiedades como @JBaruch escribió

ip_gitlab=1.2.3.4
default_user=admin

Y cargarlo

Properties properties = new Properties()
File propertiesFile = new File('test.properties')
propertiesFile.withInputStream {
    properties.load(it)
}

Entonces puede usarlo, obtener ip por ejemplo:

def ipPropertyName= 'ip_gitlab'
properties."$ipPropertyName"
usuario7294900
fuente
2
Esta es una copia mínimamente atribuida de la otra publicación; al menos querrás seguir las pautas de referencia y nombrar al autor.
Martijn Pieters
Desafortunadamente, eso no funciona en Jenkins DSL, no puedo encontrar el archivo con propiedades, pero este archivo es la misma carpeta ...FATAL: test.properties (No such file or directory) java.io.FileNotFoundException: test.properties (No such file or directory)
rafal1337
@ rafal1337 ¿Intentó usar la ruta parcial / completa del archivo?
user7294900
@ user7294900 Sí, estaba intentando múltiples rutas pero sin efecto positivo.
rafal1337
@ rafal1337 pruebe readFile jenkins.io/doc/pipeline/steps/workflow-basic-steps
user7294900
2

Haga un archivo maravilloso y defina información general y uso load.

Por ejemplo, hello.conf (escrito por groovy)

build_name = 'hello'

build_config = [
    'git': 'your git repository',
    'build_job': ['bulid_a', 'build_b']
]

Y úsalo por load

load 'hello.conf'

println(build_name)
for (job in build_config['build_job']) {
    build job: job
}
Chan Lee
fuente
se ve bien pero en el complemento DSL en Jenkins no funciona:ERROR: (pipeline.groovy, line 1) No signature of method: pipeline.load() is applicable for argument types: (java.lang.String) values: [a_test.groovy]Possible solutions: job(java.lang.String), find(), folder(java.lang.String), job(java.lang.String, groovy.lang.Closure), find(groovy.lang.Closure), wait()
rafal1337
2

si desea una respuesta específica de Jenkins: Hay un complemento de proveedor de archivos de configuración para jenkins.

Puede almacenar archivos de configuración / propiedades a través de archivos administrados. Vaya a Administrar Jenkins> Archivos administrados y cree un nuevo archivo. Es compatible con .groovy, .json, .xml y muchos otros.

Una vez que tenga eso, puede cargar dicho archivo dentro de un trabajo utilizando la casilla de verificación Proporcionar archivo de configuración que cargará el archivo en una variable env automáticamente.

Kaus Untwale
fuente