I have created a Jenkins pipeline shared library to retrieve a pod IP connecting to a kubernetes cluster which fails throwing an error below. Any pointers for fixing this would be great:
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 during the pipeline execution -
70: illegal string body character after dollar sign;
16:18:23 solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 70, column 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)