Check for backports if pr has label
This commit is contained in:
@@ -5,6 +5,7 @@ DEFAULT_HEADERS = {
|
||||
"Accept": "application/vnd.github.text+json",
|
||||
}
|
||||
DEFAULT_BRANCHES = ["master", "nixos-unstable-small", "nixos-unstable", "nixos-24.05"]
|
||||
BACKPORT_LABEL = "backport release-24.05"
|
||||
|
||||
|
||||
class PRStatus(BaseModel):
|
||||
@@ -31,7 +32,9 @@ def commits_since(first_ref: str, last_ref: str) -> int:
|
||||
return commit_response.json()["behind_by"]
|
||||
|
||||
|
||||
def pr_merge_status(pr: int, branches: list[str] = DEFAULT_BRANCHES) -> PRStatus:
|
||||
def pr_merge_status(
|
||||
pr: int, branches: list[str] = DEFAULT_BRANCHES, check_backport: bool = True
|
||||
) -> PRStatus:
|
||||
url = f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{pr}"
|
||||
pr_response = requests.get(url, headers=DEFAULT_HEADERS)
|
||||
pr_response.raise_for_status()
|
||||
@@ -44,10 +47,41 @@ def pr_merge_status(pr: int, branches: list[str] = DEFAULT_BRANCHES) -> PRStatus
|
||||
|
||||
commit_sha = pr_data.get("merge_commit_sha")
|
||||
|
||||
# Check for backport label
|
||||
has_backport_label = BACKPORT_LABEL in [
|
||||
label.get("name") for label in pr_data["labels"]
|
||||
]
|
||||
|
||||
results = {}
|
||||
|
||||
for branch in branches:
|
||||
in_branch = commit_in_branch(commit_sha, branch)
|
||||
results[branch] = in_branch
|
||||
|
||||
if check_backport and has_backport_label and "nixos-24.05" in branches:
|
||||
# Check comments for message about backport
|
||||
comment_url = f"https://api.github.com/repos/NixOS/nixpkgs/issues/{pr}/comments"
|
||||
comment_response = requests.get(comment_url, headers=DEFAULT_HEADERS)
|
||||
comment_response.raise_for_status()
|
||||
|
||||
for comment in comment_response.json():
|
||||
body = comment.get("body_text", "")
|
||||
if "Successfully created backport PR" in body:
|
||||
backport_pr = body.split("\n")[-1].replace("#", "")
|
||||
|
||||
# Check if backport pr has been merged
|
||||
backport_url = (
|
||||
f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{backport_pr}"
|
||||
)
|
||||
backport_response = requests.get(backport_url, headers=DEFAULT_HEADERS)
|
||||
backport_sha = backport_response.json().get("merge_commit_sha")
|
||||
if backport_sha is None:
|
||||
results[f"nixos-24.05 (#{backport_pr})"] = False
|
||||
return PRStatus(merged=True, branches=results)
|
||||
|
||||
results.pop("nixos-24.05")
|
||||
results[f"nixos-24.05 (#{backport_pr})"] = commit_in_branch(
|
||||
backport_sha, "nixos-24.05"
|
||||
)
|
||||
|
||||
return PRStatus(merged=True, branches=results)
|
||||
|
||||
Reference in New Issue
Block a user