Skip to content

Instantly share code, notes, and snippets.

@grafuls
Last active August 24, 2017 15:31
Show Gist options
  • Save grafuls/a9de69395b6efcb78a2abf65d616e89f to your computer and use it in GitHub Desktop.
Save grafuls/a9de69395b6efcb78a2abf65d616e89f to your computer and use it in GitHub Desktop.
Script for retrieving Jenkins job art_test_runner logs timestamps
#! /usr/bin/python
from __future__ import print_function
from ast import literal_eval
from argparse import ArgumentParser
import urllib2
BASE_URL = "https://{jenkins}/job/%s/%s"
ART_URI = BASE_URL + "/api/python?tree=artifacts[fileName]"
LOG_URI = BASE_URL + "/artifact/logs/%s/*view*/"
LOG = "art_test_runner.log"
def _request(job, build, log):
url_q = LOG_URI % (job, build, log)
req = urllib2.Request(url_q)
req.headers['Range'] = 'bytes=0-18'
resp = urllib2.urlopen(req)
timestamp = resp.read()
print("%s starts at: %s" % (log, timestamp))
return url_q
if __name__ == "__main__":
ap = ArgumentParser()
ap.add_argument("-j", "--job", help="jenkins job name", required=True)
ap.add_argument(
"-b", "--build",
type=int,
help="jenkins job build number",
required=True
)
ap.add_argument(
"-l", "--log",
type=int,
help="log number to retrieve link for"
)
args = vars(ap.parse_args())
_job = args.get("job")
_build = args.get("build")
_log = args.get("log")
info = urllib2.urlopen(ART_URI % (_job, _build))
resp = info.read()
artifacts = literal_eval(resp)
logs = [
log["fileName"]
for log in artifacts["artifacts"]
if LOG in log["fileName"]
]
if _log is None:
for log in logs:
_request(_job, _build, log)
else:
if _log > 0:
log = LOG + ".%s" % str(_log)
else:
log = LOG
url_q = _request(_job, _build, log)
print(url_q)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment