Repository navigation
Run Dependabot pull requests on GitHub-hosted runners - #553
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. ℹ️ Recent review info
SummaryRoute fork and Dependabot pull requests to Changes
Validation
WalkthroughBuild and coverage jobs now use ChangesRunner selection
Suggested labels: Priority: Change: Feature Merge Risk:
|
Reviewer's GuideThis PR rolls out the established runner-placement pattern so Dependabot pull requests on the public repository use Sequence diagram for runner selection on pull requestssequenceDiagram
participant GitHub
participant Workflow as ci.yml
participant Runner
GitHub->>Workflow: Trigger pull_request
Workflow->>Workflow: Read pull_request.head.repo.fork
Workflow->>Workflow: Read pull_request.user.login
alt Fork or Dependabot author
Workflow->>Runner: Select ubuntu-latest
else Trusted non-Dependabot workflow
Workflow->>Runner: Select ubicloud-standard-8
end
Flow diagram for Dependabot runner placementflowchart TD
A[Pull request or workflow event] --> B{Fork pull request?}
B -->|Yes| C[ubuntu-latest]
B -->|No| D{"Author is dependabot[bot]?"}
D -->|Yes| C
D -->|No| E[ubicloud-standard-8]
F[Push to main or manual dispatch] --> E
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
The account paying for this security review has reached its Codex usage limits. The payer can check the Codex usage dashboard. For personal accounts, using credits requires enabling “Use credits for security reviews” in Code review settings. If you do not manage the paying account, contact this repository's admins. |
|
@coderabbitai review |
|
8fde08a to
0d571f2
Compare
|
Rebased onto main only because the squash merge of a branch whose workflow file diverged from main needs the |
GitHub-hosted minutes cost nothing on a public repository, so a pull request authored by dependabot[bot] now falls back to ubuntu-latest like a fork's. The expression tests pull_request.user.login rather than github.actor, which changes when someone re-runs or pushes. A push to main has no pull_request payload and stays on Ubicloud, so main still writes the cache. `runner_placement_test.py` reads the combined condition and requires it on both `ci.yml` lanes; `runner_labels_test.py` uses the new expression. Wildside is heavy: its `build` job took 70m32s cold on standard-8 and 86m46s on standard-4 against a 90-minute cap, and a Dependabot build is cold on `ubuntu-latest` (4 vCPU). After merge I will measure one real Dependabot run; if it fails for a runner reason (timeout, disk, memory) the follow-up PR keeps that job on Ubicloud with a comment giving the run URL, per the packet. Bespoke contract, so this PR takes the full review gate.
0d571f2 to
eed9d3d
Compare
Part of DF12-89
Rollout of the pattern in leynos/typos-config-builder#152 (reviewed and merged): Dependabot pull requests on a public repository run on GitHub-hosted runners, not Ubicloud. User decision of 19 October 2026.
Change
Every Ubicloud
runs-onthat has the fork fallback gains the Dependabot arm, in the pilot's shape:pull_request.user.login(the author), notgithub.actor, which changes on a re-run.mainhave nopull_requestpayload and stay on Ubicloud, so main's caches stay warm.runner_placement_test.pyreads the combined condition and requires it on bothci.ymllanes;runner_labels_test.pyuses the new expression. Wildside is heavy: itsbuildjob took 70m32s cold on standard-8 and 86m46s on standard-4 against a 90-minute cap, and a Dependabot build is cold onubuntu-latest(4 vCPU). After merge I will measure one real Dependabot run; if it fails for a runner reason (timeout, disk, memory) the follow-up PR keeps that job on Ubicloud with a comment giving the run URL, per the packet. Bespoke contract, so this PR takes the full review gate.docs/developers-guide.mdrecords the reason and the cold-cache consequence.Check script row (before)
["wildside", "pending", "3 ubicloud jobs, 1 lacking the arm"]from~/docs/jm5-dependabot-runners/bin/check.pyonorigin/HEADbefore this change.Gates
pytest --doctest-modules tests/workflow_contracts: 584 passed; the 22 failures are the typedoc documentation-gate tests (documentation_gate*_test.py), which need the workspace's installed Node tooling and fail identically without this change. The runner contracts pass.mdtablefix --checkclean.Mutation proof
ci.yml:user.loginreplaced byactor(all jobs)ci.yml: Dependabot arm removed (first job)tests/workflow_contracts/runner_placement_test.py: `HOSTED_CONDITION: typ.Final[str] = f"({FORK_FIELD}Merge class
Mechanical rollout of the pilot's shape (same expression, same form of contract change, docs paragraph, mutation proof), per the lead's ruling of 19 October.
Overlapping open PRs
These open PRs touch the same kind of files; per the standing rulings they do not hold this PR and are left untouched:
Summary by Sourcery
Route Dependabot pull requests to GitHub-hosted runners while preserving Ubicloud execution for trusted events.
New Features:
Enhancements:
Documentation:
Tests:
Selector proof
Selector proof: natural Dependabot runs on ubuntu-latest, all green: https://github.com/leynos/actix-v2a/actions/runs/39958329992, https://github.com/leynos/typos-config-builder/actions/runs/39990740324, https://github.com/leynos/agentland/actions/runs/39965006591; and a main push staying on ubicloud-standard-2: https://github.com/leynos/typos-config-builder/actions/runs/39181228629.