Repository navigation
Add windows-pools.ps1 autoscale for the native Windows fleet - #118
Conversation
The Linux pools resize to their queued jobs; the Windows slots were still fixed counts. Same rules, reusing scale's slot removal and busy check, which now has a non-exiting form so one refused pool doesn't end the pass. Closes #112 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
GPT AI Code ReviewSkipped: API key not configured The To enable GPT reviews, add
Once the secret is configured, re-run this workflow or push a new commit to trigger a fresh review. REVIEW SKIPPED - API KEY NOT CONFIGURED Reviewed by GPT via gpt-pr-review.yml. Advisory only. |
DeepSeek AI Code Review1. Acceptance criteriaThe diff covers the AC well:
One AC gap worth flagging: the issue says "against 2. Bugs and logic errors
Idle-clock reset on refusal is subtly wrong. In
3. CLI and API safety
4. Test coverageGood coverage of the happy paths and several refusal paths. Gaps:
5. Suggested follow-up issues
REQUEST CHANGES — the idle-clock reset on shrink-refusal (§2) is a real behavioural bug: a pool that is refused once will wait a full Reviewed by DeepSeek via deepseek-pr-review.yml. Advisory only. |
Closes #112
Summary
.\windows-pools.ps1 autoscale [-Once] [-DryRun] [-Interval <s>], driven by a gitignoredwindows-autoscale.conf(name min max [idle_minutes]). It's separate fromautoscale.confbecause a pool name can exist in both fleets.pools.sh autoscale. A pool grows to busy + queued, capped at max and never below min. Once idle foridle_minutes, it shrinks to min. A pool is left alone when GitHub can't be asked, andwindows-pools.confis never rewritten.self-hosted,windows,<arch>,<host>), and only against the first declared Windows pool for that repo. Slots have no extra labels to tell same-repo pools apart.scale's body is nowInvoke-PoolResize, shared with autoscale, andscale's behaviour is unchanged.Assert-RunnersIdledelegates to a newGet-RunnersNotIdleReason, which returns the reason instead of exiting.Get-QueuedJobLabelSets/Invoke-GhJsonwere added to PoolSlot.ps1.windows-autoscale.conf.example.Test plan
Test-PowerShellParses.ps1): all cleantests\windows_pools_test.ps1: 19 new autoscale checks pass under pwsh and 5.1. They cover dry-run, grow, first-pool ownership, linux/other-host/in-progress jobs ignored, idle countdown and state, refused shrink keeping slots and clock, GitHub down, shrink after timeout, conf untouched, raise to min, and skipped conf lines.PowerShell Tests. Locally on StevesBigLaptop, two existing checks fail: "scale down removes the highest slots and keeps the rest running" fails on unmodifiedmaintoo, and "Stop-Slot -Force kills the slot process's children too" flips between runs. Both passed in CI for Add pools.sh autoscale: resize pools to their queued jobs #113, so they look like local timing, not this change.🤖 Generated with Claude Code