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
).
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')
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.
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')
Ce qui se traduit par ce qui suit: