feat(scale-set): add service controller - #5300
Draft
edersonbrilhante wants to merge 7 commits into
Draft
Conversation
Contributor
Dependency ReviewThe following issues were found:
License Issueslambdas/services/scale-set/package.json
OpenSSF ScorecardScorecard details
Scanned Files
|
edersonbrilhante
force-pushed
the
feat-scale-set-typescript
branch
from
August 26, 2026 11:49
341697e to
3eb2808
Compare
edersonbrilhante
changed the base branch from
refactor-ec2-provider-isolation
to
refactor-ec2-runner-orchestration-boundary
August 26, 2026 11:49
edersonbrilhante
force-pushed
the
feat-scale-set-typescript
branch
from
August 26, 2026 12:43
3eb2808 to
9e47723
Compare
edersonbrilhante
marked this pull request as draft
August 26, 2026 13:59
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.
Description
Adds the scale-set service controller, GitHub scale-set client library, EC2 scale-set provider capability, and the container build and release workflow.
Builds on the shared EC2 runner boundary from #5301. The provider creates one durable shared runner client, then binds each reconciliation request's abort signal before launching, tagging, or terminating runners. It extends
RunnerSourcewithscale-set-serviceand supplies each caller's source explicitly.Uses one neutral EC2 runner creation contract for every orchestration context: created instance IDs, a failed-instance count, and bounded AWS failure signals. The control-plane adapter alone maps those signals and
scaleErrorsinto webhook retry counts. Scale-set reconciliation uses only the neutral failed-instance count and does not inherit the webhook/SQS retry policy.Applies
orchestrationTagsat the control-plane creation boundary and uses the same mechanism for EC2 inventory filters. Pool, webhook scale-up, and scale-down share an inventory fenced by environment and both existing control-planeghr:created_byvalues, preserving shared capacity accounting and cleanup while excludingscale-set-serviceinstances.Splits the EC2 scale-set provider into configuration, inventory, reconciliation, scale-up, and scale-down contexts while retaining
provider.tsas the public facade. The provider test suite follows the same contexts, with shared AWS mocks and fixtures in dedicated test-support modules.Aligns message handling with the upstream actions/scaleset listener: acknowledge the message before job acquisition and compute reconciliation, treat provider failures as fatal for that reconciler after acknowledgement, and keep transport and session recovery separate.
Normalizes GitHub and Actions service URL paths with linear scans, avoiding regular-expression denial-of-service risks on uncontrolled input while preserving invalid-path rejection.
Test Plan
git diff --checkand pre-commit checks passed.Related Issues
Depends on #5301.