[CI] Fix /rerun-stage command by using requests for workflow dispatch (#15447)

This commit is contained in:
Alison Shao
2025-12-20 19:50:56 -08:00
committed by GitHub
parent 96740d6983
commit 43b7c17474
+15 -5
View File
@@ -2,6 +2,7 @@ import json
import os import os
import sys import sys
import requests
from github import Auth, Github from github import Auth, Github
# Configuration # Configuration
@@ -118,7 +119,7 @@ def handle_rerun_failed_ci(gh_repo, pr, comment, user_perms, react_on_success=Tr
def handle_rerun_stage( def handle_rerun_stage(
gh_repo, pr, comment, user_perms, stage_name, react_on_success=True gh_repo, pr, comment, user_perms, stage_name, token, react_on_success=True
): ):
""" """
Handles the /rerun-stage <stage-name> command. Handles the /rerun-stage <stage-name> command.
@@ -221,10 +222,19 @@ def handle_rerun_stage(
else: else:
inputs = {"version": "release", "target_stage": stage_name} inputs = {"version": "release", "target_stage": stage_name}
success = target_workflow.create_dispatch( # Use requests directly as PyGithub's create_dispatch only accepts HTTP 204
ref=ref, dispatch_url = f"https://api.github.com/repos/{gh_repo.full_name}/actions/workflows/{target_workflow.id}/dispatches"
inputs=inputs, dispatch_resp = requests.post(
dispatch_url,
json={"ref": ref, "inputs": inputs},
headers={
"Authorization": f"Bearer {token}",
"Accept": "application/vnd.github+json",
},
) )
success = dispatch_resp.status_code in (200, 204)
if not success:
print(f"Dispatch failed: {dispatch_resp.status_code} {dispatch_resp.text}")
if success: if success:
print(f"Successfully triggered workflow for stage '{stage_name}'") print(f"Successfully triggered workflow for stage '{stage_name}'")
@@ -304,7 +314,7 @@ def main():
# Extract stage name from command # Extract stage name from command
parts = first_line.split(maxsplit=1) parts = first_line.split(maxsplit=1)
stage_name = parts[1].strip() if len(parts) > 1 else None stage_name = parts[1].strip() if len(parts) > 1 else None
handle_rerun_stage(repo, pr, comment, user_perms, stage_name) handle_rerun_stage(repo, pr, comment, user_perms, stage_name, token)
else: else:
print(f"Unknown or ignored command: {first_line}") print(f"Unknown or ignored command: {first_line}")