54 votes

Comment vérifier l'état d'une construction Jenkins à partir de la ligne de commande ?

Comment vérifier l'état de la construction Jenkins sans passer par le navigateur ?

Si nécessaire, je peux créer un script en utilisant l'API JSON, mais je me demandais s'il existait déjà quelque chose de ce type intégré.

5voto

tworec Points 163

Vous pouvez utiliser un script Groovy :

  1. Via jenkins-cli

    echo 'println(jenkins.model.Jenkins.instance'\
    '.getItem("<JOB-NAME>").lastBuild.building)' \
        | java -jar jenkins-cli.jar -s <JENKINS-URL> groovy =

    = signifie norme en. Vous pouvez vous authentifier avec --username <USER> --password <PASS> ou avec -i <SSH-PRIVATE-KEY> .

  2. Via jenkins-cli via SSH

    echo -e 'println(jenkins.getItem("JOB-NAME").lastBuild.building)\nexit' \
    | ssh -p <JENKINS-SSH-PORT> <JENKINS-HOST> groovysh

2voto

Andrew M. Points 10852

Heureusement, il existe une jenkins-cli que vous pouvez utiliser pour obtenir des informations de Jenkins. Malheureusement, vous ne pouvez pas récupérer le statut d'un build en utilisant le CLI - ce qui signifie que votre solution d'utiliser l'API JSON n'est pas seulement correcte - c'est la seule façon programmatique de le faire.

En outre, bien qu'il semble que get-job peut faire ce que vous voulez, mais elle ne renvoie pas le résultat, elle renvoie seulement la configuration du travail.

2voto

joniale Points 21

Vous pouvez utiliser le descripteur symbolique lastBuild :

http://localhost/jenkins/job/<jobName>/lastBuild/api/xml

En result de la réponse contient une chaîne de caractères décrivant le résultat de la construction.

1voto

Roberto Ramos Points 111

Un autre script pour CMD (Windows) :

:loop
ping 127.0.0.1 -n 6  1>nul
curl --silent http://localhost:8080/job/JOB_NAME/lastBuild/api/xml | FINDSTR "SUCCESS FAILURE" >nul & IF ERRORLEVEL 1 (goto :loop)
echo "BUILD FINISH!!"

0voto

lakshmikandan Points 121

Vous pouvez essayer avec ceci,

JOB_URL=http://localhost:8080/view/TestTab/job/JobWait
JOB_STATUS_URL=${JOB_URL}/lastBuild/api/json

GREP_RETURN_CODE=0

# Start the build
curl --user "username:password" $JOB_URL/build?delay=0sec

# Poll every 10 second  until the build is finished
while [ $GREP_RETURN_CODE -eq 0 ]
do
    sleep 10
    # Grep will return 0 while the build is running:
    curl --user "username:password" --silent $JOB_STATUS_URL | grep result\":null > /dev/null || if [ "$?" == "1" ]; then
      exit 0
    fi

    GREP_RETURN_CODE=$?
done
echo Build finished

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X