123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #!/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))
|