web-dev-qa-db-fra.com

Obtention du statut de génération d'un travail en tant que variable post-génération

Existe-t-il un moyen d'obtenir l'état du travail Jenkins dans une variable lors d'un script Shell post-build?

Je souhaite imprimer le message Build Status is $BUILD_URL :: $BUILD_STATUS, où $BUILD_STATUS est le statut de la construction terminée actuelle (par exemple ABORTED, SUCCESS ou FAILURE).

13
Jose

Dans mon cas, j'ai dû inclure l'API TOKEN voici ce qui a fonctionné pour moi:

BUILD_STATUS=$(curl --user USER:TOKEN_VALUE --silent $BUILD_URLapi/json | jq -r '.result')

ce qui pour moi était:

BUILD_STATUS=$(curl --user robert:valueofmysecrettoken --silent $BUILD_URLapi/json | jq -r '.result')
6
Robert Misior

Si vous pouvez invoquer un script python comme étape de post-construction, vous pouvez essayer quelque chose comme ceci:

import os, sys, json, codecs, urllib2

def main():
    url = "http://localhost:8080/job/jobName/lastBuild/api/json"
    try:
        fRead = urllib2.urlopen(url, None, 30); # 30 second timeout
    except:
        raise
    jsonResponse = json.loads(fRead.read());
    fRead.close();
    jobStatus = jsonResponse["result"]

main();

J'ai testé l'url sur mon Jenkins et cela fonctionne, mais je n'ai pas testé le script lui-même, alors méfiez-vous. De toute évidence, remplacez le numéro de port et le nom de travail selon le cas.

5
user3352495

Identique à la réponse de user3352495 mais n'utilisez aucune dépendance python.

J'utilise la propre API de jenkins pour obtenir l'état de la construction pendant l'exécution du travail, ce qui fonctionne comme un charme. Sachez que j'utilise JQ pour analyser la réponse json.

Pour que cela fonctionne, ajoutez simplement un script Shell et exécutez la commande suivante: BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result')

Execute Shell step

Ce qui se traduit par ce qui suit:

Job console

5
MrSpock