Some checks failed
Self-hosted runner (nightly-past-ci-caller) / Get number (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.11 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.10 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.9 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.8 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.7 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.6 (push) Has been cancelled
Self-hosted runner (nightly-past-ci-caller) / TensorFlow 2.5 (push) Has been cancelled
Self-hosted runner (benchmark) / Benchmark (aws-g5-4xlarge-cache) (push) Has been cancelled
Build documentation / build (push) Has been cancelled
Build documentation / build_other_lang (push) Has been cancelled
CodeQL Security Analysis / CodeQL Analysis (push) Has been cancelled
New model PR merged notification / Notify new model (push) Has been cancelled
PR CI / pr-ci (push) Has been cancelled
Slow tests on important models (on Push - A10) / Get all modified files (push) Has been cancelled
Secret Leaks / trufflehog (push) Has been cancelled
Update Transformers metadata / build_and_package (push) Has been cancelled
Slow tests on important models (on Push - A10) / Model CI (push) Has been cancelled
Check Tiny Models / Check tiny models (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Model CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Pipeline CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Example CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / DeepSpeed CI (push) Has been cancelled
Self-hosted runner (Intel Gaudi3 scheduled CI caller) / Trainer/FSDP CI (push) Has been cancelled
Nvidia CI - Flash Attn / Setup (push) Has been cancelled
Nvidia CI - Flash Attn / Model CI (push) Has been cancelled
Nvidia CI / Setup (push) Has been cancelled
Nvidia CI / Model CI (push) Has been cancelled
Nvidia CI / Torch pipeline CI (push) Has been cancelled
Nvidia CI / Example CI (push) Has been cancelled
Nvidia CI / Trainer/FSDP CI (push) Has been cancelled
Nvidia CI / DeepSpeed CI (push) Has been cancelled
Nvidia CI / Quantization CI (push) Has been cancelled
Nvidia CI / Kernels CI (push) Has been cancelled
Doctests / Setup (push) Has been cancelled
Doctests / Call doctest jobs (push) Has been cancelled
Doctests / Send results to webhook (push) Has been cancelled
Extras Smoke Test / Get supported Python versions (push) Has been cancelled
Extras Smoke Test / Test extras on Python ${{ matrix.python-version }} (push) Has been cancelled
Extras Smoke Test / Check Slack token availability (push) Has been cancelled
Extras Smoke Test / Notify failures to Slack (push) Has been cancelled
Self-hosted runner (AMD scheduled CI caller) / Trigger Scheduled AMD CI (push) Has been cancelled
Stale Bot / Close Stale Issues (push) Has been cancelled
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
import argparse
|
|
import json
|
|
import subprocess
|
|
|
|
|
|
def get_runner_status(target_runners, token):
|
|
offline_runners = []
|
|
|
|
cmd = [
|
|
"curl",
|
|
"-H",
|
|
"Accept: application/vnd.github+json",
|
|
"-H",
|
|
f"Authorization: Bearer {token}",
|
|
"https://api.github.com/repos/huggingface/transformers/actions/runners",
|
|
]
|
|
|
|
output = subprocess.run(cmd, check=False, shell=True, stdout=subprocess.PIPE)
|
|
o = output.stdout.decode("utf-8")
|
|
status = json.loads(o)
|
|
|
|
runners = status["runners"]
|
|
for runner in runners:
|
|
if runner["name"] in target_runners:
|
|
if runner["status"] == "offline":
|
|
offline_runners.append(runner)
|
|
|
|
# save the result so we can report them on Slack
|
|
with open("offline_runners.txt", "w") as fp:
|
|
fp.write(json.dumps(offline_runners))
|
|
|
|
if len(offline_runners) > 0:
|
|
failed = "\n".join([x["name"] for x in offline_runners])
|
|
raise ValueError(f"The following runners are offline:\n{failed}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
def list_str(values):
|
|
return values.split(",")
|
|
|
|
parser = argparse.ArgumentParser()
|
|
# Required parameters
|
|
parser.add_argument(
|
|
"--target_runners",
|
|
default=None,
|
|
type=list_str,
|
|
required=True,
|
|
help="Comma-separated list of runners to check status.",
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--token", default=None, type=str, required=True, help="A token that has actions:read permission."
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
get_runner_status(args.target_runners, args.token)
|