Repository navigation
Move paid CI runners and harden workflows - #3240
alexnorell wants to merge 5 commits into
Conversation
Move GPU jobs from the GitHub-hosted GPU runner to arc-gpu-runner-set and the two GitHub 8-core larger-runner jobs to depot-ubuntu-22.04-8. Pin all actions to commit SHAs with exact version comments, disable persisted checkout credentials, add missing job timeouts, pass secrets to run steps through env, drop unused id-token permissions and the release pip cache, and add a Dependabot entry for github-actions.
|
👋 Thanks for the pull request! Here is how automated Claude review works here, so you spend credits (and reviewer time) wisely. 🚧 Right now this is a draft, so automated Claude review is paused — nothing is being spent yet. Mark it Ready for review to trigger it. Warning 💸 The Claude reviewer bills in credits, not vibesAutomated 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:
However you get there, arrive prepared:
Reviews are not free. A draft costs nothing to review; a Ready PR is a promise that it is worth reviewing.
|
Keep the 120-minute timeout that main set for the Windows CPU installer job, and apply the pinned version comments and persist-credentials: false to the new Windows bundle validation workflow.
What does this PR do?
Moves the paid CI jobs to cheaper runners and applies a security and efficiency baseline across the workflows.
Runner changes
Roboflow-GPU-VM-Runnerto the self-hostedarc-gpu-runner-set(one NVIDIA L4 per job):test.nvidia_t4.yml,test.nvidia_t4_parallel_server.yml,test.colab.gpu.yml,unit_tests_inference_experimental_gpu.yml,integration_tests_inference_experimental_gpu.yml,e2e_tests_inference_experimental_gpu.yml,test_package_install_inference_gpu.ymlandtest_package_install_inference_gpu_with_extras.yml..github/actionlint.yamlnow accepts the new label instead of the old one.integration_tests_inference_server_x86.yml,test.colab.cpu.yml) move todepot-ubuntu-22.04-8in thepublic-depotgroup, matching the other Depot jobs here.ubuntu-latest, macOS, Windows and Jetson jobs are unchanged.Fork pull requests and self-hosted runners
Every workflow that now uses
arc-gpu-runner-setalready triggers only onpushtomain,workflow_dispatch, orworkflow_callfrom dispatch-only or push-only callers. No pull request, and so no fork pull request, can start a job on the self-hosted GPU runners. This PR keeps that as the rule; there is no behaviour change for pull requests.Security baseline
.github/is pinned to a full commit SHA with an exact# vX.Y.Zcomment (about 300 references in 70 files). Tags were resolved to the commit they point at today, so no action version changes.actions/checkoutsetspersist-credentials: falseeverywhere; no workflow pushes with the checkout token.run:scripts in the touched GPU workflows and inintegration_tests_workflows_x86.ymlare passed throughenv:instead.github.head_ref; they only run on push and dispatch, where it is empty.test_package_install_*workflows drop an unused workflow-levelid-token: write.publish.pypi.ymlno longer restores a pip cache while building release wheels..github/dependabot.ymlis added with a monthly, groupedgithub-actionsupdate and a seven-day cooldown, so the pins stay current.Efficiency
timeout-minutes(15 jobs were missing one). The three self-hosted Jetson test jobs are left unchanged.integration_tests_inference_experimental_cpu.ymlskips documentation-only changes, using the samepaths-ignorelist as the other test workflows.CLAUDE.mdgains a short GitHub Actions section so these rules hold for new workflows.Type of change
Testing
actionlint1.7.12 with.github/actionlint.yaml(the version CI uses): no findings.python .github/scripts/check_workflow_concurrency.py: passes.zizmor1.31.1 on.github/workflows: unpinned-uses findings go from 246 to 0, artipacked from 69 to 0, excessive-permissions (high) from 9 to 3, cache-poisoning from 2 to 1. The rest are pre-existing and listed below.mainwas merged into this branch at 95d8875 (merge commit 6d996b6). The one conflict was the Windows CPU installer timeout, where this branch keeps the 120 minutesmainchose. The newvalidate-windows-bundle.ymlfrommaingot the same pinning comments andpersist-credentials: false.actionlintand the concurrency check pass, the.github/scriptsunit tests thatValidate GitHub Actionsruns pass (129 tests), and every non-Jetson job hastimeout-minutes.frozen (cpu)andfrozen (gpu)).Google Colab CPU(run 39726926269, 6 min) andINTEGRATION TESTS - Inference Server CPU x86withuse-inference-models=true(run 39726928550, 10 min) both passed, on runnersdepot-4v5snvzchqanddepot-n5lr53sm9din thepublic-depotgroup.workflow_dispatchon this branch oncearc-gpu-runner-setaccepts jobs.Additional context
arc-gpu-runner-setis not available. As of 2026-10-27 the runner controller is running, but no runner scale set with that name is installed and no L4 nodes are up, so a job with that label cannot start. A smoke-test job on the label was cancelled after 14 minutes in the queue. The runner set must be installed before merge, otherwise every GPU job onmainwould wait in the queue until GitHub cancels it.make start_test_docker_gpu,docker run --gpus all,--runtime nvidia) intest.nvidia_t4.yml,test.nvidia_t4_parallel_server.ymlandtest.colab.gpu.ymlneed the runner's Docker daemon to expose the GPU. Confirm this with a dispatch before merging; the inference-models GPU and package-install jobs only use the GPU from the job itself.server-tests-gpugained onmain(Persist model weights on the GPU test runner between stages and runs #3232) keeps working there, but it starts empty in every job, so the T4 suite downloads model weights on each run.claude-pr-review.ymlandfast_track_ci.yml(both gate to same-repository PRs and read PR code only as data); the archivedactions/upload-release-assetin the macOS and Windows installer workflows; thesetup-nodecache indocs.yml, which also deploys on release;secrets: inheriton reusable-workflow calls.