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
Vous devez vous connecter pour publier un commentaire.
J'ai essayé d'entrer tous ces commandes dans le jenkins extrait de générateur pour le pipeline et il a donné le résultat suivant:
Avis d'échappement des apostrophes dans les commandes
jq -r \'.public_url\'
etjq -r \'.code\'
. En utilisant le code de cette façon de résoudre le problèmeMise à JOUR: : Après un certain temps, même qui a commencé à donner des problèmes. Il y avait certaines commandes avant l'exécution de ces commandes. L'un d'eux a été
grunt serve
et l'autre était./ngrok http 9000
. J'ai ajouté un peu de retard la suite de chacune de ces commandes et il a résolu le problème pour l'instant.OriginalL'auteur Mandeep Singh
J'ai divisé les commandes avec des &&
L'exemple des sorties:
- ls -a (les fichiers dans votre espace de travail
- ddt (lieu de travail)
- echo du monde
OriginalL'auteur Stefan van de Vooren