La tubería de Jenkins sh no parece respetar la tubería en el comando de shell

Estoy usando un archivo Jenkins en una tubería en la versión 2.32.2.

Por varias razones, quiero extraer la cadena de versión del pom. Esperaba no tener que agregar el complemento de ayuda de Maven y usar evaluación.

Rápidamente se me ocurrió una pequeña expresión sed para sacarlo del pom que usa tuberías y funciona en la línea de comandos en el espacio de trabajo jenkins en el ejecutor.

$ sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g' 1.0.0-SNAPSHOT

Probablemente podría optimizarse, pero quiero entender por qué la tubería parece fallar en los comandos sh canalizados. He jugado con varios formatos de cadena y actualmente estoy usando una cadena de dólares.

El paso de canalización tiene el siguiente aspecto para permitir una salida fácil de la cadena de comando:

script {
    def ver_script = $/sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g'/$
    echo "${ver_script}"
    POM_VERSION = sh(script: "${ver_script}", returnStdout: true)
    echo "${POM_VERSION}"
}

Cuando se ejecuta en la tubería jenkins, obtengo el siguiente resultado de la consola donde parece estar separando los comandos canalizados en comandos separados:

[Pipeline] script
[Pipeline] {
[Pipeline] echo
sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g'
[Pipeline] sh
[FRA-198-versioned-artifacts-44SD6DBQOGOI54UEF7NYE4ECARE7RMF7VQYXDPBVFOHS5CMSTFLA] Running shell script
+ sed -n /<version>/,/<version/p pom.xml
+ head -1
+ sed s/[[:blank:]]*<\/*version>//g
sed: couldn't write 89 items to stdout: Broken pipe
[Pipeline] }
[Pipeline] // script

¿Alguna guía sobre cómo usar correctamente los comandos canalizados en un archivo jenkins?

Respuestas a la pregunta(4)

Su respuesta a la pregunta