Reviewing Buildkite CI logs
Julia's CI runs on Buildkite (pipeline julialang/julia-master). The public web
UI requires sign-in to download raw_log, but the Buildkite frontend's JSON log
endpoint is anonymously accessible for public pipelines. Recipe:
List failing jobs and their UUIDs (the fragment after
#in the URL):gh pr checks <PR-number> | grep -E "fail|pending"Fetch the log JSON (replace
<BUILD>and<JOB-UUID>):curl -sS -H "Accept: application/json" \ "https://buildkite.com/organizations/julialang/pipelines/julia-master/builds/<BUILD>/jobs/<JOB-UUID>/log" \ -o /tmp/bk.jsonThe log text lives under the JSON
outputfield, with embedded HTML (<time>timestamps, ANSI-as-<span>colour) and entity-encoded shell output. Strip with e.g.:python3 -c "import json,re,html; s=json.load(open('/tmp/bk.json'))['output']; \ s=re.sub(r'<[^>]+>','',s); print(html.unescape(s))" | tail -200
The same JSON endpoint also serves still-running jobs (partial output). Note that the top-level Build/Check/Test jobs on a PR are pipeline launchers — the actual per-platform builds are spawned as child jobs whose UUIDs only appear once they start.