Skip to content

Right-size the package install test and docs runners - #3170

Merged
PawelPeczek-Roboflow merged 3 commits into
mainfrom
alex/ci-right-size-package-install
Oct 12, 2026
Merged

PawelPeczek-Roboflow merged 3 commits into
mainfrom
alex/ci-right-size-package-install

Conversation

@alexnorell

@alexnorell alexnorell commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Why

The four CPU Test package install workflows run on 8-core runners after every push to main, and the docs workflow uses a 32-core runner. None of them uses that many cores.

  • The SDK and CLI jobs run make create_wheels, which installs the full inference requirements (torch included) and builds seven wheels, only to install inference-sdk (and inference-cli). That step took about 100s of a 176 to 195s job.
  • The inference and inference[extras] jobs are pip downloads, unpacking and single-threaded setup.py bdist_wheel calls.
  • The docs site is now a landing page plus redirects. A pull request run takes about a minute, mostly checkout and pip install, and the build step itself takes under a second (37976849427).

Change

  • SDK and CLI install tests: build only the two wheels they install, with the existing create_inference_cli_whl target, and run on depot-ubuntu-22.04-small.
  • inference and inference[extras] install tests: depot-ubuntu-22.04-8 to depot-ubuntu-22.04-4.
  • Docs: depot-ubuntu-22.04-32 to depot-ubuntu-22.04-small.

Timings

Mean job time per run, 4 Python versions each. Before: the 4 most recent successful push runs on main. After: 3 workflow_dispatch runs of this branch.

Workflow Before (8 cores) After
inference-sdk 169, 251, 141, 144s (37967288068, 37972454506, 37979079772, 37981418435) 79, 72, 76s on small (38120593370, 38120879597, 38121200252)
inference-cli 158, 291, 169, 161s (37967287881, 37972454268, 37979079983, 37981418440) 81, 79, 75s on small (38120592137, 38120877949, 38121198579)
inference 227, 318, 202, 202s (37967288110, 37972454597, 37979079774, 37981418531) 214, 210, 197s on 4 cores (38120590840, 38120876414, 38121197140)
inference[extras] 242, 396, 228, 289s (37967287949, 37972454398, 37979079876, 37981418553) 252, 252, 235s on 4 cores (38120594680, 38120881207, 38121202061)

All 48 dispatched jobs passed. "Create Wheels" averaged 90s and 95s on 4 cores, compared with 97s and 125s on 8 cores. In the SDK and CLI jobs it now takes 2s. Most of what remains there is "Cache Python packages" restoring a 4 to 15 GB pip cache, which #3165 addresses.

Docs job on pull requests: 70, 73, 89 and 72s on 32 cores (37976849427, 37970090210, 37969385504, 37966804862), 45s on the small runner for this pull request (38121521235). Release and manual deploy runs do the same steps plus ghp-import.

The SDK and CLI install tests only need the inference-sdk and
inference-cli wheels, so build those with the existing
create_inference_cli_whl target instead of create_wheels, which also
installs the full inference requirements (including torch) only to build
wheels that these jobs never use. With that gone, both jobs do little
work and move to the small runner.

The inference and inference-with-extras install tests are mostly pip
downloads and single-threaded wheel builds, so move them from 8 to 4
cores.
The docs site is now a landing page plus redirects. The job installs a
few packages and the build itself takes under a second, so a 32-core
runner is not needed.
@github-actions

Copy link
Copy Markdown
Contributor

👋 Thanks for the pull request! Here is how automated Claude review works here, so you spend credits (and reviewer time) wisely.

🚦 This PR is marked Ready for review, so automated Claude review will run — and every pass spends real credits.

Warning

💸 The Claude reviewer bills in credits, not vibes

Automated review spins up a real agent that reads real code and spends real credits on every pass. It is glad to help — but it is not a rubber duck, a linter you poke in a loop, or a substitute for reading the contributing guide. Treat it like an expensive senior reviewer whose time you booked, and show up prepared.

Draft when unsure, Ready when you mean it:

  • 🌱 Not sure the PR is in good shape yet? Keep it (or set it back) as a draft — drafts pause review, so you can push and iterate without burning credits on a moving target.
  • 💪 Feel strong about the contents? Mark it Ready for review and the reviewer will take a look.

However you get there, arrive prepared:

  • 🧱 Bring a SOLID, thorough PR. Point your local agent at our skills/ to tune it to our guidelines first — or, if you are one of those fabled carbon-based contributors, read them yourself. A half-baked diff costs exactly the same to review as a finished one.
  • ✅ Resolve every comment before you re-request review. Re-requesting with threads still open means paying twice for the same conversation.
  • 🔁 Do not use CI review as an inner loop for a local agent. The reviewer is not a step-by-step debugger — do the unfolding locally and arrive with the answer, not the search.
  • 🙋 If something looks off, ask a human. One question to a maintainer is cheaper and faster than three rounds of agent re-review chasing a misread.

Reviews are not free. A draft costs nothing to review; a Ready PR is a promise that it is worth reviewing.

  • Prefer to skip automated review entirely? Add the skip-claude-review label.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Claude review started at commit bd032b1ab626e349dd4b2ecdbafc721a1d6a515a.

New commits are not auto-reviewed. Add the claude-review label to request a re-review — the label is consumed when the review starts, so just add it again next time.

@github-actions

Copy link
Copy Markdown
Contributor

Claude review summary: no blocking findings.

Skills: review-packaging-ci, review-topic-test-hygiene

What I checked in the code:

  • SDK and CLI install tests now run make create_inference_cli_whl instead of make create_wheels. The target (Makefile:95-102) uses PYTHON=python (Makefile:9), clears dist/, then builds the inference_sdk and inference_cli wheels. Those are the only wheels these jobs install: the SDK job installs inference_sdk-*.whl, and the CLI job installs inference_cli + inference_sdk with --find-links dist/. The CLI wheel's install_requires (.release/pypi/inference.cli.setup.py) is requirements.cli.txt + requirements.sdk.http.txt + inference-sdk==<version>. It doesn't depend on roboflow-workflows, inference-models or streamvision, so the wheels this PR stops building were never needed for these installs. Both setup scripts read the version without importing inference, so the full runtime requirements aren't needed at build time.
  • Full create_wheels coverage remains through test_package_install_inference.yml and test_package_install_inference_with_extras.yml. Those jobs keep the full build and only move from 8 to 4 cores, with timeouts unchanged at 10 and 35 minutes.
  • Runner labels: depot-ubuntu-22.04-small and depot-ubuntu-22.04-4 are already used elsewhere in .github/workflows/, and the public-depot group is kept. The docs job installs only requirements/requirements.docs.txt, so the small runner is enough. None of these CPU install jobs needs extra system libraries that differ by runner size.

Not blocking: the inference install job now runs about 200–215s on 4 cores against a 10-minute timeout. That leaves margin, but it's worth watching if dependency resolution gets slower.

Commands that informed the review: gh pr diff 3170, gh pr view 3170, grep on review-source/Makefile and review-source/.release/pypi/inference.{cli,sdk}.setup.py, grep for runner labels across review-source/.github/workflows/.

Reviewed at HEAD: bd032b1

@github-actions

Copy link
Copy Markdown
Contributor

😎 PR passes the vibe-check and trust-me-bro verification.

@PawelPeczek-Roboflow
PawelPeczek-Roboflow merged commit 2e1310c into main Oct 12, 2026
48 checks passed
@PawelPeczek-Roboflow
PawelPeczek-Roboflow deleted the alex/ci-right-size-package-install branch October 12, 2026 11:53
@roboflow roboflow deleted a comment from github-actions Bot Oct 15, 2026
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.

2 participants