Vérifier Jenkins statut du travail, après le déclenchement d'une build à distance
J'ai un script pour déclencher un job Jenkins à distance à l'aide d'un jeton. Voici mon script:
JENKINS_URL='http://jenkins.myserver.com/jenkins'
JOB_NAME='job/utilities/job/my_job'
JOB_TOKEN='my_token'
curl "${JENKINS_URL}/${JOB_NAME}/buildWithParameters?token=${JOB_TOKEN}"
Après je le lance, je reçois la réponse suivante:
* Hostname was NOT found in DNS cache
* Trying 10.5.187.225...
* Connected to jenkins.myserver.com (10.5.187.225) port 80 (#0)
> GET /jenkins/job/utilities/job/my_job/buildWithParameters?token=my_token HTTP/1.1
> User-Agent: curl/7.37.1
> Host: jenkins.myserver.com
> Accept: */*
>
< HTTP/1.1 201 Created
* Server nginx/1.6.2 is not blacklisted
< Server: nginx/1.6.2
< Date: Tue, 03 Feb 2015 23:40:47 GMT
< Content-Length: 0
< Location: http://jenkins.myserver.com/jenkins/queue/item/91/
< Connection: keep-alive
< Cache-Control: private
< Expires: Wed, 31 Dec 1969 16:00:00 PST
<
* Connection #0 to host jenkins.myserver.com left intact
J'ai remarqué qu'il retourne la file d'attente d'url dans l'en-tête: http://jenkins.myserver.com/jenkins/queue/item/91. Mais je ne sais pas comment je dois utiliser cette url de retour.
1) je me demandais si quelqu'un sait comment je peux vérifier le statut pour le travail que je viens de créer?
2) Depuis la réponse ne permet pas de retourner le numéro de tâche, je ne peux pas vraiment utiliser cet appel d'api:
curl http://jenkins.myserver.com/jenkins/job/utilities/job/my_job/8/api/json
pour vérifier leur état. Alors, où puis-je obtenir le nom de la tâche et le nombre d'emplois après je reçois l'emplacement de l'url à partir de la réponse précédente?
Grâce
OriginalL'auteur Nam Nguyen | 2015-02-03
Vous devez vous connecter pour publier un commentaire.
Lorsque vous déclenchez un travail, le travail est placé dans la file d'attente. Le réel est créé seulement quand il commence à courir et à ce moment la construire obtient un numéro de build. Si tous vos exécuteurs sont occupés, il peut parfois prendre du temps avant de le construire est créé et commence à courir.
La seule façon d'obtenir le numéro de version lors du déclenchement d'un emploi, est d'utiliser la "construction" de la commande de la Jenkins CLI. Si vous utilisez l'option-w, la commande ne sera pas de retour jusqu'à ce que la construction commence, et puis il s'imprimer "en route build #N"
Vous n'avez pas réellement besoin de la java cli.jar rien, juste un client ssh est assez. Voir https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+SSH
Autre que qu'il n'y a pas de solution connue. Vous pourriez être en mesure de rechercher à travers les générations et en trouver un qui a été déclenchée autour de l'heure à votre déclenché le travail, mais c'est beaucoup de travail.
cette limitation existe toujours? C'est un grand inconvénient à l'utilisation de l'api Rest où la CLI n'est pas une solution de rechange pratique
Très triste nouvelle pour moi.
OriginalL'auteur sti
J'ai résolu ce problème en utilisant l'interrogation du serveur Jenkins. Lorsqu'un travail est démarré à distance le retour des en-têtes de a la tâche de la file d'attente de l'URL. L'utilisation de ce l'on peut faire plus d'appels de l'API pour obtenir le statut.
Suit:
J'ai utilisé python, et les Demandes de module pour ce faire
De sortie:
JSON à partir d'un Jenkins file d'attente une fois son travail a commencé:
OriginalL'auteur P. Hawkins
J'ai eu le même problème à obtenir de l'état avec l'api rest.
c'était ma solution (c'est un faible et n'est pas stable solution!):
OriginalL'auteur ya_dimon
Vous pouvez utiliser Jenkins API pour cela. Un exemple de script Python:
Reportez-vous http://www.easyaslinux.com/tutorials/devops/how-to-check-build-status-of-jenkins-job-using-python-script/ pour une explication détaillée
OriginalL'auteur Nijil