Skip to content

Commit b4b42dd

Browse files
authored
Implement latest issue state retrieval in workflow
Added a function to fetch the latest issue state and updated main workflow to use it. Signed-off-by: Anshul <137977998+sudo-anshul@users.noreply.github.com>
1 parent 6738e72 commit b4b42dd

1 file changed

Lines changed: 34 additions & 2 deletions

File tree

.github/scripts/coderabbit_plan_trigger.js

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,30 @@ async function hasExistingCodeRabbitPlan(github, owner, repo, issueNumber) {
8080
}
8181
}
8282

83+
async function getLatestIssue(github, owner, repo, issue) {
84+
if (!issue?.number) return issue;
85+
86+
try {
87+
const { data } = await github.rest.issues.get({
88+
owner,
89+
repo,
90+
issue_number: issue.number,
91+
});
92+
93+
return data || issue;
94+
} catch (error) {
95+
console.log('Failed to refresh issue state; falling back to event payload:', {
96+
message: error?.message,
97+
status: error?.status,
98+
owner,
99+
repo,
100+
issueNumber: issue?.number,
101+
});
102+
103+
return issue;
104+
}
105+
}
106+
83107
function logSummary(owner, repo, issue) {
84108
console.log('=== Summary ===');
85109
console.log(`Repository: ${owner}/${repo}`);
@@ -92,10 +116,18 @@ function logSummary(owner, repo, issue) {
92116
async function main({ github, context }) {
93117
try {
94118
const { owner, repo } = context.repo;
95-
const { issue, label } = context.payload;
119+
const { issue: eventIssue, label } = context.payload;
96120

97121
// Validations
98-
if (!issue?.number) return console.log('No issue in payload');
122+
if (!eventIssue?.number) return console.log('No issue in payload');
123+
124+
// Refresh issue state to avoid stale payload fields (e.g., locked status)
125+
// when this script is invoked after earlier workflow steps mutate the issue.
126+
const issue = await getLatestIssue(github, owner, repo, eventIssue);
127+
128+
if (issue.locked) {
129+
return console.log(`Issue #${issue.number} is locked. CodeRabbit plan trigger will be deferred until the issue is approved and unlocked.`);
130+
}
99131

100132
if (!hasBeginnerOrHigherLabel(issue, label)) {
101133
return console.log('Issue does not have beginner/intermediate/advanced label');

0 commit comments

Comments
 (0)