ray/ci/build/get_build_info.py

87 lines
2.4 KiB
Python
Executable file

#!/usr/bin/env python
"""
This script gathers build metadata from Travis environment variables and Travis
APIs.
Usage:
$ python get_build_info.py
{
"json": ["containing", "build", "metadata"]
}
"""
import os
import sys
import json
def gha_get_self_url():
import requests
# stringed together api call to get the current check's html url.
sha = os.environ["GITHUB_SHA"]
repo = os.environ["GITHUB_REPOSITORY"]
resp = requests.get(
"https://api.github.com/repos/{}/commits/{}/check-suites".format(repo, sha)
)
data = resp.json()
for check in data["check_suites"]:
slug = check["app"]["slug"]
if slug == "github-actions":
run_url = check["check_runs_url"]
html_url = requests.get(run_url).json()["check_runs"][0]["html_url"]
return html_url
# Return a fallback url
return "https://github.com/ray-project/ray/actions"
def get_build_env():
if os.environ.get("GITHUB_ACTION"):
return {
"TRAVIS_COMMIT": os.environ["GITHUB_SHA"],
"TRAVIS_JOB_WEB_URL": gha_get_self_url(),
"TRAVIS_OS_NAME": "windows",
}
if os.environ.get("BUILDKITE"):
return {
"TRAVIS_COMMIT": os.environ["BUILDKITE_COMMIT"],
"TRAVIS_JOB_WEB_URL": (
os.environ["BUILDKITE_BUILD_URL"] + "#" + os.environ["BUILDKITE_JOB_ID"]
),
"TRAVIS_OS_NAME": { # The map is used to stay consistent with Travis
"linux": "linux",
"darwin": "osx",
"win32": "windows",
}[sys.platform],
}
keys = [
"TRAVIS_COMMIT",
"TRAVIS_JOB_WEB_URL",
"TRAVIS_OS_NAME",
]
return {key: os.environ.get(key) for key in keys}
def get_build_config():
if os.environ.get("GITHUB_ACTION"):
return {"config": {"env": "Windows CI"}}
if os.environ.get("BUILDKITE"):
return {"config": {"env": "Buildkite " + os.environ["BUILDKITE_LABEL"]}}
import requests
url = "https://api.travis-ci.com/job/{job_id}?include=job.config"
url = url.format(job_id=os.environ["TRAVIS_JOB_ID"])
resp = requests.get(url, headers={"Travis-API-Version": "3"})
return resp.json()
if __name__ == "__main__":
build_env = get_build_env()
build_config = get_build_config()
print(json.dumps({"build_env": build_env, "build_config": build_config}, indent=2))