43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
#!/usr/bin/python
|
|
|
|
import os
|
|
import sys
|
|
import urllib2
|
|
import json
|
|
|
|
# This is pretty constant, but allow it to be overriden via env-var
|
|
url = os.getenv('TRAVIS_API_URL', 'https://api.travis-ci.org')
|
|
|
|
if (not url.lower().startswith("https://")):
|
|
print (0)
|
|
sys.exit(0)
|
|
|
|
ci_token = os.getenv('TRAVIS_API_TOKEN')
|
|
build_id = os.getenv('TRAVIS_BUILD_ID')
|
|
|
|
headers = {
|
|
'Content-Type': 'application/json',
|
|
'Accept': 'application/json',
|
|
'Travis-API-Version': "3",
|
|
'Authorization': "token {0}".format(ci_token)
|
|
}
|
|
|
|
# Codacy's bandit linter may complain that we haven't validated
|
|
# this URL for permitted schemes; we have validated this a few lines above
|
|
req = urllib2.Request("{0}/build/{1}/jobs".format(url, build_id),
|
|
headers=headers)
|
|
|
|
response = urllib2.urlopen(req).read()
|
|
json_r = json.loads(response.decode('utf-8'))
|
|
|
|
jobs_running = 0
|
|
for job in json_r['jobs']:
|
|
# bump number of jobs higher, so nothing triggers
|
|
if (job['state'] in [ 'canceled', 'failed' ]):
|
|
jobs_running += 99
|
|
break
|
|
if (job['state'] in [ 'started', 'created', 'queued', 'received' ]):
|
|
jobs_running += 1
|
|
|
|
print (jobs_running)
|