es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La biblioteca compartida de Jenkins pipeline no pudo recuperar la dirección IP del pod

He creado una biblioteca compartida de Jenkins para recuperar una IP de pod conectándose a un clúster de Kubernetes, lo cual falla y muestra un error a continuación. Cualquier indicación para solucionar esto sería genial:

JSL:

docker.withRegistry('https://' + dockerRegistry, dockerCredentialsId) {
    docker.image(kubectlImage).inside("""--entrypoint=''"""){
      sh """
      #!/bin/sh
      set +x
      kubectl get pods -n ${namespace}  -o json > $WORKSPACE/pods.json
      podIP=$(jq -r '.items[] | select(.metadata.generateName | test("${appName}")).status.podIP' $WORKSPACE/pods.json)
      echo "Pod IP:$podIP"
      """
    }
  }

Error durante la ejecución del pipeline:

70: caracteres no válidos después del signo de dólar;
16:18:23     solución: escape un símbolo de dólar literal "\$5" o encierre la expresión de valor "${5}" @ linea 70, columna 14.
16:18:23           podIP=$(jq -r '.items[] | select(.metadata.generateName | test("${appName}")).status.podIP' $WORKSPACE/pods.json)
16:18:23                  ^
16:18:23
16:18:23  1 error
16:18:23
16:18:23    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
16:18:23    at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
16:18:23    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
16:18:23    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error es causado por un carácter ilegal en el cuerpo de la cadena después del signo de dólar en el comando jq. Para solucionar esto, puedes escapar el signo de dólar usando doble signo de dólar ($$), o utilizar la notación de corchetes para la expresión de valor (${valor}).

    En este caso, reemplazar la línea con el siguiente código debería solucionar el error:

    podIP=$(jq -r '.items[] | select(.metadata.generateName | test("'"${nombreApp}"'")).status.podIP' $WORKSPACE/pods.json)
    

    Esto utiliza la notación de corchetes para la expresión de valor ${nombreApp} e incluye comillas dobles alrededor de todo el comando jq, así como comillas simples alrededor de la expresión de prueba.

Comments are closed.