Estoy intentando crear un script de canalización declarativo de Jenkins, pero tengo problemas con la declaración de variable simple.
Aquí está mi guión:
pipeline {
agent none
stages {
stage("first") {
def foo = "foo" // fails with "WorkflowScript: 5: Expected a step @ line 5, column 13."
sh "echo ${foo}"
}
}
}
Sin embargo, obtengo este error:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Expected a step @ line 5, column 13.
def foo = "foo"
^
Estoy en Jenkins 2.7.4 y Pipeline 2.4.
jenkins
groovy
jenkins-pipeline
Malcolm Crum
fuente
fuente
Creo que el error no proviene de la línea especificada sino de las primeras 3 líneas. Prueba esto en su lugar:
Creo que tenías algunas líneas extra que no son válidas ...
EDITAR
De la documentación del modelo de canalización declaractiva , parece que debe usar un
environment
bloque de declaración para declarar sus variables, por ejemplo:fuente
De acuerdo con @ Pom12, @abayer. Para completar la respuesta, debe agregar un bloque de script
Intente algo como esto:
fuente
En Jenkins 2.138.3 hay dos tipos diferentes de canalizaciones.
Pipelines declarativos y con script.
"Las canalizaciones declarativas son una nueva extensión del DSL de canalización (básicamente es una secuencia de comandos de canalización con un solo paso, un paso de canalización con argumentos (llamados directivas), estas directivas deben seguir una sintaxis específica. El objetivo de este nuevo formato es que es más estricto y, por lo tanto, debería ser más fácil para los nuevos en las canalizaciones, permitir la edición gráfica y mucho más. Las canalizaciones con secuencias de comandos son la alternativa para los requisitos avanzados ".
canalización de Jenkins: agente vs nodo?
A continuación, se muestra un ejemplo del uso de variables globales y de entorno en una canalización declarativa. Por lo que puedo decir, el entorno es estático después de que se configuran.
fuente
Está utilizando un canal declarativo que requiere un paso de guión para ejecutar el código Groovy. Esta es una gran diferencia en comparación con canal de secuencia de comandos donde esto no es necesario.
La documentación oficial dice lo siguiente:
fuente