ci(benchmarks): open a PR with the refreshed README instead of pushing to main - #344
Merged
Merged
Conversation
…g to main The default branch doesn't accept direct pushes, so the final step now commits to a per-run branch and opens a PR. Renames the workflow_dispatch 'commit' input to 'open_pr' to match, and adds pull-requests: write.
naorpeled
force-pushed
the
ci/benchmarks-open-pr
branch
from
August 8, 2026 17:00
6d3f573 to
10da24c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Benchmarks workflow's final step pushes the refreshed README straight to the default branch, which doesn't accept direct pushes. This replaces that with a PR.
Split out of #343 so the crash fix and this workflow change can be reviewed and merged independently — they touch non-overlapping parts of
benchmark.ymland don't conflict in either merge order.Change
benchmarks/refresh-<version>-<run_id>, then opens a PR against the default branch. Including the run ID means concurrent or repeated runs never clobber one another.<details>block, with a note that shared-runner numbers are noisy so small movements aren't regressions.workflow_dispatchinputcommit→open_pr, since the semantics changed.pull-requests: writeto the job permissions.[skip ci]from the commit message — it existed to avoid re-triggering CI on a direct push to the default branch, which no longer applies.PRs opened with the default
GITHUB_TOKENdo not triggerpull_requestworkflows. This is a deliberate GitHub restriction to prevent recursive workflow runs, not something the workflow can opt out of.So the benchmark PR will show no checks at all. If the default branch has required status checks, it won't be mergeable without an admin override — which would trade one blocked automation for another.
If that's the case, the fix is to create the PR with a PAT or GitHub App token instead of
github.token. I left it onGITHUB_TOKENhere because it needs no new secret and the change is README-only, but say the word and I'll switch it.Verification
The workflow can't be fully exercised until it's on the default branch, so verification was done in pieces:
permissionsand the renamed input resolve as intended, and no staleinputs.commitreferences remain.GITHUB_SERVER_URL,GITHUB_REPOSITORY,GITHUB_RUN_ID,GITHUB_EVENT_NAME) and confirmed the branch name and rendered Markdown are correct.RESULTS.mdis ~2.9KB, well within GitHub's 65536-character PR body limit.Note that the "no changes" early-exit is preserved: if the benchmarks produce an identical README, the step logs and exits without opening an empty PR.