Skip to content

Commit da02755

Browse files
paulo9mvmeeroslav
andauthored
fix: return correct NX_BASE SHA for merge_group event (#145)
* Update find-successful-workflow.ts * Update test-integration.yml * Update test-integration.yml * chore: fix format --------- Co-authored-by: Miroslav Jonas <[email protected]>
1 parent dca9685 commit da02755

File tree

2 files changed

+23
-88
lines changed

2 files changed

+23
-88
lines changed

dist/index.js

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -64894,18 +64894,16 @@ let BASE_SHA;
6489464894
encoding: 'utf-8',
6489564895
});
6489664896
let HEAD_SHA = headResult.stdout;
64897-
if ((['pull_request', 'pull_request_target'].includes(eventName) &&
64898-
!github.context.payload.pull_request.merged) ||
64899-
eventName == 'merge_group') {
64900-
try {
64901-
const mergeBaseRef = yield findMergeBaseRef();
64902-
const baseResult = (0, child_process_1.spawnSync)('git', ['merge-base', `origin/${mainBranchName}`, mergeBaseRef], { encoding: 'utf-8' });
64903-
BASE_SHA = baseResult.stdout;
64904-
}
64905-
catch (e) {
64906-
core.setFailed(e.message);
64907-
return;
64908-
}
64897+
if (['pull_request', 'pull_request_target'].includes(eventName) &&
64898+
!github.context.payload.pull_request.merged) {
64899+
const baseResult = (0, child_process_1.spawnSync)('git', ['merge-base', `origin/${mainBranchName}`, 'HEAD'], { encoding: 'utf-8' });
64900+
BASE_SHA = baseResult.stdout;
64901+
}
64902+
else if (eventName == 'merge_group') {
64903+
const baseResult = (0, child_process_1.spawnSync)('git', ['rev-parse', 'HEAD^1'], {
64904+
encoding: 'utf-8',
64905+
});
64906+
BASE_SHA = baseResult.stdout;
6490964907
}
6491064908
else {
6491164909
try {
@@ -65031,35 +65029,6 @@ function findSuccessfulCommit(workflow_id, run_id, owner, repo, branch, lastSucc
6503165029
return yield findExistingCommit(octokit, branch, shas);
6503265030
});
6503365031
}
65034-
function findMergeBaseRef() {
65035-
return __awaiter(this, void 0, void 0, function* () {
65036-
if (eventName == 'merge_group') {
65037-
const mergeQueueBranch = yield findMergeQueueBranch();
65038-
return `origin/${mergeQueueBranch}`;
65039-
}
65040-
else {
65041-
return 'HEAD';
65042-
}
65043-
});
65044-
}
65045-
function findMergeQueuePr() {
65046-
const { head_ref, base_sha } = github.context.payload.merge_group;
65047-
const result = new RegExp(`^refs/heads/gh-readonly-queue/${mainBranchName}/pr-(\\d+)-${base_sha}$`).exec(head_ref);
65048-
return result ? result.at(1) : undefined;
65049-
}
65050-
function findMergeQueueBranch() {
65051-
return __awaiter(this, void 0, void 0, function* () {
65052-
const pull_number = findMergeQueuePr();
65053-
if (!pull_number) {
65054-
throw new Error('Failed to determine PR number');
65055-
}
65056-
process.stdout.write('\n');
65057-
process.stdout.write(`Found PR #${pull_number} from merge queue branch\n`);
65058-
const octokit = new ProxifiedClient();
65059-
const result = yield octokit.request(`GET /repos/${owner}/${repo}/pulls/${pull_number}`, { owner, repo, pull_number: +pull_number });
65060-
return result.data.head.ref;
65061-
});
65062-
}
6506365032
/**
6506465033
* Get first existing commit
6506565034
*/

find-successful-workflow.ts

Lines changed: 13 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,20 @@ let BASE_SHA: string;
4242
let HEAD_SHA = headResult.stdout;
4343

4444
if (
45-
(['pull_request', 'pull_request_target'].includes(eventName) &&
46-
!github.context.payload.pull_request.merged) ||
47-
eventName == 'merge_group'
45+
['pull_request', 'pull_request_target'].includes(eventName) &&
46+
!github.context.payload.pull_request.merged
4847
) {
49-
try {
50-
const mergeBaseRef = await findMergeBaseRef();
51-
const baseResult = spawnSync(
52-
'git',
53-
['merge-base', `origin/${mainBranchName}`, mergeBaseRef],
54-
{ encoding: 'utf-8' },
55-
);
56-
BASE_SHA = baseResult.stdout;
57-
} catch (e) {
58-
core.setFailed(e.message);
59-
return;
60-
}
48+
const baseResult = spawnSync(
49+
'git',
50+
['merge-base', `origin/${mainBranchName}`, 'HEAD'],
51+
{ encoding: 'utf-8' },
52+
);
53+
BASE_SHA = baseResult.stdout;
54+
} else if (eventName == 'merge_group') {
55+
const baseResult = spawnSync('git', ['rev-parse', 'HEAD^1'], {
56+
encoding: 'utf-8',
57+
});
58+
BASE_SHA = baseResult.stdout;
6159
} else {
6260
try {
6361
BASE_SHA = await findSuccessfulCommit(
@@ -227,38 +225,6 @@ async function findSuccessfulCommit(
227225
return await findExistingCommit(octokit, branch, shas);
228226
}
229227

230-
async function findMergeBaseRef(): Promise<string> {
231-
if (eventName == 'merge_group') {
232-
const mergeQueueBranch = await findMergeQueueBranch();
233-
return `origin/${mergeQueueBranch}`;
234-
} else {
235-
return 'HEAD';
236-
}
237-
}
238-
239-
function findMergeQueuePr(): string {
240-
const { head_ref, base_sha } = github.context.payload.merge_group;
241-
const result = new RegExp(
242-
`^refs/heads/gh-readonly-queue/${mainBranchName}/pr-(\\d+)-${base_sha}$`,
243-
).exec(head_ref);
244-
return result ? result.at(1) : undefined;
245-
}
246-
247-
async function findMergeQueueBranch(): Promise<string> {
248-
const pull_number = findMergeQueuePr();
249-
if (!pull_number) {
250-
throw new Error('Failed to determine PR number');
251-
}
252-
process.stdout.write('\n');
253-
process.stdout.write(`Found PR #${pull_number} from merge queue branch\n`);
254-
const octokit = new ProxifiedClient();
255-
const result = await octokit.request(
256-
`GET /repos/${owner}/${repo}/pulls/${pull_number}`,
257-
{ owner, repo, pull_number: +pull_number },
258-
);
259-
return result.data.head.ref;
260-
}
261-
262228
/**
263229
* Get first existing commit
264230
*/

0 commit comments

Comments
 (0)