CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
import os
|
|
import sys
|
|
import yaml
|
|
import requests
|
|
|
|
|
|
def get_existing_labels(repo, token):
|
|
headers = {"Authorization": f"token {token}"}
|
|
labels = {}
|
|
page = 1
|
|
while True:
|
|
url = f"https://api.github.com/repos/{repo}/labels?page={page}&per_page=100"
|
|
resp = requests.get(url, headers=headers)
|
|
if resp.status_code != 200:
|
|
raise Exception(f"Failed to fetch existing labels: {resp.text}")
|
|
data = resp.json()
|
|
if not data:
|
|
break
|
|
for label in data:
|
|
labels[label["name"]] = {
|
|
"color": label["color"],
|
|
"description": label.get("description", ""),
|
|
}
|
|
page += 1
|
|
return labels
|
|
|
|
|
|
def create_or_update_label(repo, token, label, existing):
|
|
headers = {
|
|
"Authorization": f"token {token}",
|
|
"Accept": "application/vnd.github+json",
|
|
}
|
|
|
|
if label["name"] not in existing:
|
|
# Create label
|
|
print(f"Creating label: {label['name']}")
|
|
url = f"https://api.github.com/repos/{repo}/labels"
|
|
resp = requests.post(url, json=label, headers=headers)
|
|
else:
|
|
# Update if different
|
|
current = existing[label["name"]]
|
|
if label["color"].lower() != current["color"].lower() or label.get(
|
|
"description", ""
|
|
) != current.get("description", ""):
|
|
print(f"Updating label: {label['name']}")
|
|
url = f"https://api.github.com/repos/{repo}/labels/{label['name']}"
|
|
resp = requests.patch(url, json=label, headers=headers)
|
|
else:
|
|
print(f"Label '{label['name']}' already up to date. Skipping.")
|
|
return
|
|
|
|
if not resp.ok:
|
|
print(f"Failed to apply label {label['name']}: {resp.status_code} {resp.text}")
|
|
|
|
|
|
def main(label_file):
|
|
token = os.environ["GH_TOKEN"]
|
|
repo = os.environ["GITHUB_REPO"]
|
|
existing = get_existing_labels(repo, token)
|
|
|
|
with open(label_file, "r") as f:
|
|
labels = yaml.safe_load(f)
|
|
|
|
for label in labels:
|
|
create_or_update_label(repo, token, label, existing)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv[1])
|