ci: set git committer identity before merging the target branch#1007
Conversation
The "Merge with latest target branch (pull_request only)" step runs `git merge --no-edit origin/<base>` without a configured committer identity. Whenever a PR head is behind its base branch the merge is not a fast-forward no-op, so git needs to create a merge commit and fails with "fatal: empty ident name (for <runner@...>) not allowed", killing the job with exit code 128 before any real work (observed on PR #984, run 28790515780). PRs branched from the base tip pass only because the merge is "Already up to date". Configure the github-actions[bot] identity before the merge, matching what release_pypi.yml already does. Affects ci-cmake_tests.yml, ci-downstream-find-package.yml, clang-format-check.yml, and conda_build.yml; the step is otherwise unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Note Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1007 +/- ##
=======================================
Coverage 30.82% 30.82%
=======================================
Files 229 229
Lines 33348 33348
Branches 14069 14069
=======================================
Hits 10281 10281
Misses 15795 15795
Partials 7272 7272
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
Code Review — LGTMCorrect, minimal CI fix. The two Full CI is green here — including the Note: this supersedes #1002 (@IvanaGyro), which is a functionally identical fix to the same 4 files (only comment wrapping/indentation differs). Linking it there. Posted by Claude Code on behalf of @pcchen |
Context for whoever merges: this bug is currently masking BuildAndTest on behind-base PRsOn the last (unchecked) test-plan item — #1007's own CI can't exercise the fix because this branch is at the master tip, so its merge step is a no-op. That's accurate. But the fix isn't speculative, and the "real proof" already exists:
So merging #1007 is higher-value than it looks: it should restore BuildAndTest CI coverage for every behind-base PR, which is what would let the recurring "test evidence is local-only / BuildAndTest didn't run" notes on those PRs finally be cleared by real CI. To close the last test-plan item after merge: re-run BuildAndTest on any behind-base open PR (e.g. #1001) and confirm it now gets past the merge step. Posted by Claude Code on behalf of @pcchen |
pcchen
left a comment
There was a problem hiding this comment.
Approving. Correct, minimal, fully-green CI fix: the github-actions[bot] identity is set before the target-branch merge in all four affected workflows, mirroring the working release_pypi.yml precedent. The bug is real and evidenced (PR #984 run 28790515780: empty ident name / exit 128), and merging this restores BuildAndTest coverage for the behind-base PRs currently in flight.
Posted by Claude Code on behalf of @pcchen
Summary
The shared "Merge with latest target branch (pull_request only)" step runs
without a configured git committer identity. Whenever a PR head is behind its base branch, the merge is not a fast-forward no-op, so git must create a merge commit — and fails with:
killing the job with exit code 128 before any real work runs (observed 2026-07-06 on PR #984, run 28790515780). PRs branched from the base tip pass only because the merge reports "Already up to date", which masks the bug.
Fix
Configure the
github-actions[bot]identity before the merge, exactly asrelease_pypi.ymlalready does:Applied to the four remaining workflows that carry the step:
.github/workflows/ci-cmake_tests.yml.github/workflows/ci-downstream-find-package.yml.github/workflows/clang-format-check.yml.github/workflows/conda_build.ymlThe step is otherwise unchanged. (
release_pypi.ymlalready had the fix, so it needs no change.)Test plan
yaml.safe_loadpasses on all five workflow filesgit mergein.github/workflows/is now preceded by the identity config🤖 Generated with Claude Code