Reputation: 593
I am trying to use Jenkins python api to retrieve all the Job runs for a particular Job like, if the job is successful or if the job is failed I need to know at what stage it failed. Currently I am able to get, if the job is successful or failure. I am unable to get the stage at which job failed.
import jenkins
import re
from datetime import datetime
startDate = int(datetime(2019, 8, 18).strftime('%s'))
endDate = int(datetime(2019, 8, 21).strftime('%s'))
server = jenkins.Jenkins('jenkins_url', username='admin',
password='admin')
info = server.get_job_info(jobname)
TotalSuccess=0
TotalFailure=0
TotalAborted=0
TotalNone=0
TotalUNKNOW=0
TotalUnstable=0
builds = info['builds']
for build in builds:
BuildStatus=server.get_build_info(jobname, build['number'])
Result=BuildStatus['result']
BuildNumber=BuildStatus['number']
TimeStamp=BuildStatus['timestamp']
TimeStamp=TimeStamp/1000
build_date=datetime.utcfromtimestamp(TimeStamp).strftime('%Y-%m-%d %H:%M:%S')
if (TimeStamp > startDate) & (TimeStamp < endDate):
print ("Result=",Result,"BuildID=",BuildNumber,'Build Time: ',str(build_date))
if Result == "SUCCESS":
TotalSuccess += 1
elif Result == "UNSTABLE":
TotalUnstable += 1
elif Result == "FAILURE":
TotalFailure += 1
elif Result == "ABORTED":
TotalAborted += 1
elif Result == "None":
TotalNone += 1
else:
TotalUNKNOW += 1
else:
break
print ("Total Number of Success Builds=",TotalSuccess)
print ("Total Number of UnStable Builds=",TotalUnstable)
print ("Total Number of Failure Builds=",TotalFailure)
print ("Total Number of Aborted Builds=",TotalAborted)
print ("Total Number of Unknown Builds=",TotalUNKNOW)
print ("On Going Builds=",TotalNone)
Current Output
Result= None BuildID= 196 Build Time: 2019-08-26 23:14:50
Result= SUCCESS BuildID= 195 Build Time: 2019-08-26 17:16:20
Result= SUCCESS BuildID= 194 Build Time: 2019-08-24 22:00:13
Result= SUCCESS BuildID= 193 Build Time: 2019-08-24 12:53:26
Result= FAILURE BuildID= 192 Build Time: 2019-08-24 07:00:11
Total Number of Success Builds= 3
Total Number of UnStable Builds= 0
Total Number of Failure Builds= 1
Total Number of Aborted Builds= 0
Total Number of Unknown Builds= 1
On Going Builds= 0
Expected
Result= None BuildID= 196 Build Time: 2019-08-26 23:14:50 StageFailed= None
Result= SUCCESS BuildID= 195 Build Time: 2019-08-26 17:16:20 StageFailed= NONE
Result= SUCCESS BuildID= 194 Build Time: 2019-08-24 22:00:13 StageFailed= NONE
Result= SUCCESS BuildID= 193 Build Time: 2019-08-24 12:53:26 StageFailed= NONE
Result= FAILURE BuildID= 192 Build Time: 2019-08-24 07:00:11 StageFailed= deploy
Total Number of Success Builds= 3
Total Number of UnStable Builds= 0
Total Number of Failure Builds= 1
Total Number of Aborted Builds= 0
Total Number of Unknown Builds= 1
On Going Builds= 0
Upvotes: 1
Views: 2012
Reputation: 352
You can use wfapi to get stage names and build information.
import requests
url = "https://my-jenkins-url/job/<job-name>/lastBuild/wfapi/"
response = requests.request("GET", url)
data = response.json()
print (data['stages'])
print (data['id'])
print (data['status'])
Output:
id': '88', 'name': 'example_stage_name', 'execNode': '', 'status': 'SUCCESS', 'startTimeMillis': 1580767070144, 'durationMillis': 140011, 'pauseDurationMillis': 0},'SUCCESS', 'startTimeMillis': 1580795569817, 'durationMillis': 32985, 'pauseDurationMillis': 0},
386
FAILED
Upvotes: 2