[CI] Make PR workflows Gitea-compatible #3

Open
karylab_agents wants to merge 1 commits from karylab_agents/vllm:ci/gitea-pr-search-compat into karylab/gb10
2 changed files with 46 additions and 11 deletions
+24 -6
View File
@@ -6,6 +6,7 @@ on:
permissions:
pull-requests: write
issues: write
jobs:
update-description:
@@ -61,12 +62,29 @@ jobs:
const { owner, repo } = context.repo;
const prAuthor = context.payload.pull_request.user.login;
const { data: searchResults } = await github.rest.search.issuesAndPullRequests({
q: `repo:${owner}/${repo} type:pr is:merged author:${prAuthor}`,
per_page: 1,
});
const mergedPRCount = searchResults.total_count;
// Gitea does not implement GitHub's /search/issues endpoint.
// Walk closed PRs until we find one merged PR by this author.
let mergedPRCount = 0;
let page = 1;
while (mergedPRCount === 0) {
const { data: pulls } = await github.request(
'GET /repos/{owner}/{repo}/pulls',
{
owner,
repo,
state: 'closed',
page,
limit: 50,
},
);
mergedPRCount += pulls.filter(
pr => pr.merged && pr.user?.login === prAuthor,
).length;
if (pulls.length < 50) {
break;
}
page += 1;
}
console.log(`Found ${mergedPRCount} merged PRs by ${prAuthor}`);
if (mergedPRCount === 0) {
+22 -5
View File
@@ -32,11 +32,28 @@ jobs:
const hasReadyLabel = pr.labels.some(l => readyLabels.includes(l.name));
const hasVerifiedLabel = pr.labels.some(l => l.name === 'verified');
const { data: mergedPRs } = await github.rest.search.issuesAndPullRequests({
q: `repo:${context.repo.owner}/${context.repo.repo} is:pr is:merged author:${pr.user.login}`,
per_page: 4,
});
const mergedCount = mergedPRs.total_count;
// Gitea does not implement GitHub's /search/issues endpoint.
// Walk closed PRs until four merged PRs by this author are found.
let mergedCount = 0;
let page = 1;
while (mergedCount < 4) {
const { data: pulls } = await github.request(
'GET /repos/{owner}/{repo}/pulls',
{
...context.repo,
state: 'closed',
page,
limit: 50,
},
);
mergedCount += pulls.filter(
item => item.merged && item.user?.login === pr.user.login,
).length;
if (pulls.length < 50) {
break;
}
page += 1;
}
if (hasReadyLabel || hasVerifiedLabel || mergedCount >= 4) {
core.info(`Check passed: verified label=${hasVerifiedLabel}, ready label=${hasReadyLabel}, 4+ merged PRs=${mergedCount >= 4}`);