Runs travis in the present directory for the present project, checks all recent builds, finds failed/errored jobs, and restarts them.
You will need to install the travis cli first and do travis login.
Runs travis in the present directory for the present project, checks all recent builds, finds failed/errored jobs, and restarts them.
You will need to install the travis cli first and do travis login.
| #!/usr/bin/env python | |
| import commands, re | |
| builds = commands.getoutput('travis history --limit 25') | |
| builds = map(lambda x: x.split(), builds.split('\n')) | |
| builds = filter((lambda x: x[1] in ['started:', 'failed:', 'errored:', 'created:']), builds) | |
| for build in builds: | |
| print ' '.join(build), '...' | |
| build_num = build[0][1:] | |
| jobs = commands.getoutput('travis show %s' % build_num) | |
| jobs = map((lambda x: x.split()), jobs.split('\n')) | |
| jobs = filter((lambda x: len(x) > 1 and x[1] in ['failed:', 'errored:']), jobs) | |
| for job in jobs: | |
| print '', ' '.join(job), '...' | |
| job_num = job[0][1:] | |
| job_details = commands.getoutput('travis show %s' % job_num) | |
| if re.search('Allow Failure:\\s+true', job_details): | |
| print '', '', 'job is allowed failure' | |
| else: | |
| print '', '', 'restarting...' | |
| restart_output = commands.getoutput('travis restart %s' % job_num) | |
| restart_output = ' '.join(filter((lambda x: 'warning' not in x), restart_output.split('\n'))) | |
| print '', '', restart_output |