From 1254f4f2d25f40d1b5c7013b28883b3c507669f6 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Tue, 10 Mar 2026 19:57:11 +0100 Subject: [PATCH] ci: Don't make a single failed review comment fail the entire job Let's handle failure to post individual review comments gracefully. Reduces the impact of failures like in https://github.com/systemd/systemd/actions/runs/22904601370/job/66461528144. --- .github/workflows/claude-review.yml | 37 ++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/.github/workflows/claude-review.yml b/.github/workflows/claude-review.yml index 0f1a52a305..99095138a4 100644 --- a/.github/workflows/claude-review.yml +++ b/.github/workflows/claude-review.yml @@ -295,24 +295,36 @@ jobs: * comments is handled by Claude in the prompt, so we just post whatever * it returns. Using individual comments (rather than a review) means * re-runs only add new comments instead of creating a whole new review. */ + let posted = 0; for (const c of comments) { console.log(` Posting comment on ${c.file}:${c.line}`); - await github.rest.pulls.createReviewComment({ - owner, - repo, - pull_number: prNumber, - commit_id: headSha, - path: c.file, - line: c.line, - body: `Claude: ${c.body}`, - }); + try { + await github.rest.pulls.createReviewComment({ + owner, + repo, + pull_number: prNumber, + commit_id: headSha, + path: c.file, + line: c.line, + body: `Claude: ${c.body}`, + }); + posted++; + } catch (e) { + /* GitHub rejects comments on lines outside the diff context. Log + * and continue — the tracking comment still contains all findings. */ + console.log(` Warning: failed to post comment on ${c.file}:${c.line}: ${e.message}`); + } } - if (comments.length > 0) - console.log(`Posted ${comments.length} inline comment(s).`); + if (posted > 0) + console.log(`Posted ${posted}/${comments.length} inline comment(s).`); + else if (comments.length > 0) + console.log(`Could not post any of ${comments.length} inline comment(s) — see warnings above.`); else console.log("No inline comments to post."); + const failed = comments.length > 0 && posted < comments.length; + /* Create or update the tracking comment. */ const MARKER = ""; if (!summary) @@ -360,3 +372,6 @@ jobs: } console.log("Tracking comment posted successfully."); + + if (failed) + core.setFailed(`Failed to post ${comments.length - posted}/${comments.length} inline comment(s).`);