Skip to content

ci: report the automation's manual CI run as the commit status CI passed - #29

Merged
arosasg merged 1 commit into
mainfrom
ci/bot-pr-commit-status
Nov 7, 2026
Merged

arosasg merged 1 commit into
mainfrom
ci/bot-pr-commit-status

Conversation

@arosasg

@arosasg arosasg commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

Problem

The first end-to-end run (sdk-go#22, 2026-11-07 10:40-10:48 UTC) showed that the CI run bot-pull-requests.yml starts with workflow_dispatch does not count for the pull request: GitHub leaves the check runs of a manual run off the pull request. The statusCheckRollup of sdk-go#22, and of sdk-node#28 after a manual run there, lists only the pull_request suite, so the required CI passed check stayed "Expected" although the manual run's CI passed job had passed at 10:43:51. sdk-go#22 merged (auto-merge, as github-actions, 10:48:00) only after a person approved its pull_request run at 10:45:35.
The same run confirmed that a merge made by a GITHUB_TOKEN auto-merge starts no push workflow: nothing ran on main after 10:48.

Solution

  • ci.yml: a report job, only in manual runs, sets the result of CI passed as the commit status CI passed on the run's commit (commit statuses are on the pull request by commit), then, for chore/spec-sync and release-please--*, waits up to three minutes for the auto-merge and starts the release workflows on main when the newest commit has no run of them. A cancelled run reports nothing.
  • .github/scripts/bot-pull-request.sh: the report mode, catch-up as a function both modes use. Any auto-merge disable by a person now holds the pull request whatever its reasonCode (review finding on sdk-java#31, already on main here).
  • docs/DESIGN.md 13 says so (the same text in all seven).

No new token, secret or approval of runs; spec-sync.yml and release-please-config.json are not touched.

Verification

  • actionlint (with shellcheck) and shellcheck: clean.
  • Fake gh: report success on chore/spec-sync sets the status and starts only the release workflow with no run on main's head; report failure sets a failure status and starts nothing; report cancelled sets nothing; a person's branch gets the status only. The 16 earlier scenarios still pass.
  • Branch protection on main requires CI passed from GitHub Actions (app 15368); a commit status set with GITHUB_TOKEN comes from that app. End to end on the next bot pull request: proof in a follow-up comment.

🤖 Generated with Claude Code

GitHub leaves the check runs of a workflow_dispatch run off the pull request
(sdk-go#22 and sdk-node#28: the statusCheckRollup lists only the pull_request
suite), so the required "CI passed" check of a bot pull request stayed
"Expected" until a person approved its pull_request run. The new report job of
a manual ci.yml run sets "CI passed" as a commit status on the head commit,
which the pull request does show, and then starts the release workflows once
auto-merge has merged the pull request (that merge starts no push workflow;
sdk-go#22 merged at 10:48 and nothing ran on main).

Also: any auto-merge disable by a person holds the pull request, whatever its
reasonCode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@arosasg

arosasg commented Nov 7, 2026

Copy link
Copy Markdown
Contributor Author

Codex review (codex CLI, account codex-3, model gpt-5.6-sol)


💡 Code review

Reviewed commit: 1c3bb93

No blocking findings in commit 1c3bb93.

Verdict: APPROVE

@arosasg
arosasg merged commit cda863a into main Nov 7, 2026
15 checks passed
@arosasg
arosasg deleted the ci/bot-pr-commit-status branch November 7, 2026 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant