jenkins pipeline: plusieurs lignes de commandes du shell avec tuyau

Je suis en train de créer un Jenkins pipeline où j'ai besoin d'exécuter plusieurs commandes shell et d'utiliser le résultat d'une commande dans la commande suivante ou ainsi. J'ai trouvé que l'emballage des commandes dans une paire de trois apostrophes ''' pouvez faire la même chose. Cependant, je suis confronté à des problèmes lors de l'utilisation de tuyaux d'alimentation de sortie d'une commande vers une autre commande. Par exemple

   stage('Test') {
      sh '''
         echo "Executing Tests"
         URL=`curl -s "http://localhost:4040/api/tunnels/command_line" | jq -r '.public_url'`
         echo $URL
         RESULT=`curl -sPOST "https://api.ghostinspector.com/v1/suites/[redacted]/execute/?apiKey=[redacted]&startUrl=$URL" | jq -r '.code'`
         echo $RESULT
      '''
   }

Commandes avec tuyau d'aspiration ne fonctionne pas correctement. Voici le jenkins sortie de la console:

+ echo Executing Tests
Executing Tests
+ curl -s http://localhost:4040/api/tunnels/command_line
+ jq -r .public_url
+ URL=null
+ echo null
null
+ curl -sPOST https://api.ghostinspector.com/v1/suites/[redacted]/execute/?apiKey=[redacted]&startUrl=null
Je sais qu'il est tard mais ça peut aider quelqu'un d'autre. Il suffit d'ajouter un ; après les commandes. Suivant votre exemple, à l'étape('Test') { sh "' echo "Exécution de Tests"; URL=curl -s "http://localhost:4040/api/tunnels/command_line" | jq -r '.public_url'; echo $URL; RÉSULTAT=curl -sPOST "https://api.ghostinspector.com/v1/suites/[redacted]/execute/?apiKey=[redacted]&startUrl=$URL" | jq -r '.code'; echo $RESULT; "' } je fais beaucoup de jenkins et ce n'ont jamais manqué. Bien que je viens de faire une liners (condenseur ici) pas plusieurs jolies lignes 😛

OriginalL'auteur Mandeep Singh | 2017-04-17