Problem
When external services like pre-commit.ci report check results via GitHub's Status API (commit statuses), the webhook server does not process the status event. This means can-be-merged is never re-evaluated when these checks complete.
The server only handles: ping, push, issue_comment, pull_request, pull_request_review, check_run. The status event type is not routed in github_api.py process().
Impact
can-be-merged check permanently shows Some check runs not started: pre-commit.ci - pr even after pre-commit.ci completes
- PRs cannot be auto-merged when external services use the Status API
- Affects any repository using
pre-commit.ci or other Status API-based services
Evidence
From RedHatQE/openshift-cli-installer#897 logs:
cannot be merged: Some check runs not started: pre-commit.ci - pr
no_status_check_runs: ['pre-commit.ci - pr']
branch_required_status_checks: ['can-be-merged', 'verified', 'build-container', 'pre-commit.ci - pr', 'python-module-install', 'tox']
Branch protection correctly includes pre-commit.ci - pr as required, but no status webhook event triggers re-evaluation.
Expected Behavior
When a status event arrives for a PR's head commit:
- Identify the associated PR
- Call
check_if_can_be_merged() to re-evaluate
- Update can-be-merged check run accordingly
Deliverables
Problem
When external services like
pre-commit.cireport check results via GitHub's Status API (commit statuses), the webhook server does not process thestatusevent. This meanscan-be-mergedis never re-evaluated when these checks complete.The server only handles:
ping,push,issue_comment,pull_request,pull_request_review,check_run. Thestatusevent type is not routed ingithub_api.py process().Impact
can-be-mergedcheck permanently showsSome check runs not started: pre-commit.ci - preven after pre-commit.ci completespre-commit.cior other Status API-based servicesEvidence
From RedHatQE/openshift-cli-installer#897 logs:
Branch protection correctly includes
pre-commit.ci - pras required, but nostatuswebhook event triggers re-evaluation.Expected Behavior
When a
statusevent arrives for a PR's head commit:check_if_can_be_merged()to re-evaluateDeliverables
statusevent handler ingithub_api.py process()commit.sha→ find associated PR)check_if_can_be_merged()for the PR