docs(warm-pool): add warm pool guide, ADR and examples - #5498
Open
Brend-Smits wants to merge 3 commits into
Open
Brend-Smits wants to merge 3 commits into
Brend-Smits wants to merge 3 commits into
Conversation
This was referenced Sep 30, 2026
Contributor
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The migration command can affect unrelated deployments, and several lifecycle and disabling statements are inaccurate.
Review effort: Balanced
Findings: 4
Open (4)
What changed in this PR
Adds warm-pool architecture, configuration, operations, and migration documentation alongside runnable examples.
Changes:
- Adds a warm-pool guide and ADR.
- Adds on-demand and spot multi-runner examples.
- Updates navigation and v1-to-v2 configuration mapping.
| File | Description |
|---|---|
mkdocs.yaml |
Adds guide and ADR navigation. |
examples/default/main.tf |
Shows optional warm-pool configuration. |
examples/multi-runner/templates/runner-configs/linux-x64-warm.yaml |
Adds an on-demand example. |
examples/multi-runner/templates/runner-configs/linux-x64-warm-spot.yaml |
Adds a spot example. |
docs/warm-pool.md |
Documents configuration and operations. |
docs/multi-runner-v1-to-v2-configuration.md |
Maps the warm-pool setting. |
docs/adr/0004-warm-pool-standby.md |
Records the architectural decision. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Brend-Smits
force-pushed
the
feat/warm-pool-07-terraform-multi-runner
branch
from
October 1, 2026 12:27
9d1b53c to
3988183
Compare
Brend-Smits
force-pushed
the
feat/warm-pool-08-docs-examples
branch
from
October 1, 2026 12:27
5478b9b to
0a54e0d
Compare
Brend-Smits
force-pushed
the
feat/warm-pool-07-terraform-multi-runner
branch
from
October 1, 2026 12:34
3988183 to
cf9c2c4
Compare
Brend-Smits
force-pushed
the
feat/warm-pool-08-docs-examples
branch
2 times, most recently
from
October 1, 2026 12:35
61fa750 to
a8541cd
Compare
Brend-Smits
force-pushed
the
feat/warm-pool-07-terraform-multi-runner
branch
from
October 1, 2026 12:35
cf9c2c4 to
35bd24a
Compare
- ADR-0004 records the design: stopped standby instances owned by the pool lambda, on-demand and persistent spot, lease-based activation in scale-up and cleanup in the pool and scale-down lambdas. - docs/warm-pool.md covers configuration, lifecycle, spot behavior, metrics, the custom user data requirement, burst tuning and troubleshooting. - The multi-runner example gets on-demand and spot warm pool runner configs, and the default example shows the option commented out. Signed-off-by: Brend Smits <brend.smits@philips.com>
- An activated instance is never parked again, but a non-ephemeral runner can run more than one job after activation. - The activation latency is measured until the runner starts, not until it registers. - Disabling warm mode with a pool_config left in place returns to an idle runner pool, which needs GitHub API access and pool_runner_owner. - The migration drain command only cancels spot requests of the deployment's environment instead of every runner spot request in the region. - State that one runner config keeps either idle runners or warm instances, and that max_age_hours is a whole number of hours. Signed-off-by: Brend Smits <brend.smits@philips.com>
Brend-Smits
force-pushed
the
feat/warm-pool-07-terraform-multi-runner
branch
from
October 1, 2026 13:43
35bd24a to
08ce720
Compare
Brend-Smits
force-pushed
the
feat/warm-pool-08-docs-examples
branch
from
October 1, 2026 13:43
a8541cd to
25359ed
Compare
Brend-Smits
marked this pull request as ready for review
October 1, 2026 13:59
This was referenced Oct 1, 2026
Brend-Smits
commented
Oct 1, 2026
Describe the design constraints in the ADR at a high level instead of the history of an earlier attempt. Drop the scale-up concurrency tuning, which applies to any runner config, and the migration steps for the old preview branch from the warm pool guide. Signed-off-by: Brend Smits <brend.smits@philips.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Warm pool stack (review in order; each PR is based on the previous one):
Background
This PR adds a new type of runner pool called "warm runners". These runners are essentially 'stopped' after they booted up and will be booted up again next time there's demand for it. This greatly reduces job start up times as we don't have to rely on cold starts anymore.
I have only ran this in my dev environment so far, and it's working there. Have yet to deploy this to staging for extended testing.
Description
docs/warm-pool.mdcovers configuration, lifecycle, spot behaviour, metrics, the custom user data requirement, burst tuning and troubleshooting.Test Plan
The full stack was deployed to a sandbox AWS account with the multi-runner example (on-demand and spot warm pools, legacy and v2 stacks). Covered: pool fill and refill, warm activation for single jobs and bursts of 5, 10 and 20 jobs with pools of 5, cold fallback for the remainder, drift and max-age eviction, spot interruption, disabling warm mode, and scale-down cleanup, with no leaked persistent spot requests. Warm jobs started in about 65-78 s from dispatch versus 133-198 s for cold runners in the same bursts.
Related Issues
Supersedes #5204.