Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions scripts/pkg_in_pipe/pkg_in_pipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ def find_pull_requests(repo, start_sha, end_sha):
"""Find the pull requests for the commits in the [start_sha,end_sha[ range."""
prs = set()
for commit in find_commits(GITHUB, repo, start_sha, end_sha):
cache_key = f'commit-prs-4-{commit.sha}'
cache_key = f'commit-prs-6-{commit.sha}'
if not args.re_cache and cache_key in CACHE:
prs.update(cast(list[PullRequest], CACHE[cache_key]))
elif GITHUB:
Expand All @@ -258,9 +258,12 @@ def find_pull_requests(repo, start_sha, end_sha):
if group:
pr = GITHUB.get_repo(repo).get_pull(int(group[1]))
prs.add(pr)
# github sometimes return a PR which doesn't match the given commit, so we check if the commit
# is actually in the PR
commit_prs = [pr for pr in commit_prs if commit in pr.get_commits()]
# github sometimes returns a PR which is only related to the commit through its branch
# history, e.g. a PR whose branch was created from this commit, so we check that the
# commit is actually part of the PR: it must be one of its commits, or its merge
# commit. The latter is needed for the PRs merged by rebase or squash, whose merge
# commit on the base branch is not one of the PR commits.
commit_prs = [pr for pr in commit_prs if commit in pr.get_commits() or commit.sha == pr.merge_commit_sha]
CACHE.set(cache_key, commit_prs, expire=RETENTION_TIME)
prs.update(commit_prs)
return sorted(prs, key=lambda p: p.number, reverse=True)
Expand Down
108 changes: 108 additions & 0 deletions scripts/pkg_in_pipe/report.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
{
"generated_at": "2026-08-26T14:54:16.276502",
"generated_info": null,
"warnings": {
"plane": false,
"github": false
},
"error": null,
"tags": [
{
"tag": "v8.3-testing",
"builds": [
{
"nvr": "sm-3.2.12-23.5.xcpng8.3",
"previous_nvr": "sm-3.2.12-23.4.xcpng8.3",
"package": "sm",
"url": "https://koji.xcp-ng.org/buildinfo?buildID=6089",
"built_by": "gaetan.lehmann",
"maintained_by": "Storage",
"issues": [
{
"sequence_id": 3706,
"url": "https://project.vates.tech/vates-global/browse/XCPNG-3706/",
"milestones": [
"8.3-next"
]
},
{
"sequence_id": 3675,
"url": "https://project.vates.tech/vates-global/browse/XCPNG-3675/",
"milestones": [
"8.3-next"
]
},
{
"sequence_id": 3674,
"url": "https://project.vates.tech/vates-global/browse/XCPNG-3674/",
"milestones": [
"8.3-next"
]
}
],
"pull_requests": [
{
"number": 104,
"title": "Release 3.2.12-23.5",
"url": "https://github.com/xcp-ng-rpms/sm/pull/104",
"linked": true
}
],
"build_linked": true
},
{
"nvr": "xapi-26.1.16-1.2.xcpng8.3",
"previous_nvr": "xapi-26.1.16-1.1.xcpng8.3",
"package": "xapi",
"url": "https://koji.xcp-ng.org/buildinfo?buildID=6088",
"built_by": "asultanov",
"maintained_by": "XAPI & Network",
"issues": [
{
"sequence_id": 3671,
"url": "https://project.vates.tech/vates-global/browse/XCPNG-3671/",
"milestones": [
"8.3-next"
]
}
],
"pull_requests": [
{
"number": 142,
"title": "Optimize migration from QCOW2-backed VDIs + preserve VDI tags on migration",
"url": "https://github.com/xcp-ng-rpms/xapi/pull/142",
"linked": true
}
],
"build_linked": true
},
{
"nvr": "blktap-3.55.5-9.4.xcpng8.3",
"previous_nvr": "blktap-3.55.5-9.3.xcpng8.3",
"package": "blktap",
"url": "https://koji.xcp-ng.org/buildinfo?buildID=6091",
"built_by": "abourgeois",
"maintained_by": "Storage",
"issues": [
{
"sequence_id": 3669,
"url": "https://project.vates.tech/vates-global/browse/XCPNG-3669/",
"milestones": [
"8.3-next"
]
}
],
"pull_requests": [
{
"number": 28,
"title": "Release 3.55.5-9.4",
"url": "https://github.com/xcp-ng-rpms/blktap/pull/28",
"linked": true
}
],
"build_linked": true
}
]
}
]
}
Loading