Skip to content

refactor(storage): make runner config store provider-neutral - #5277

Open
edersonbrilhante wants to merge 5 commits into
mainfrom
refactor-runner-config-storage-provider
Open

refactor(storage): make runner config store provider-neutral#5277
edersonbrilhante wants to merge 5 commits into
mainfrom
refactor-runner-config-storage-provider

Conversation

@edersonbrilhante

@edersonbrilhante edersonbrilhante commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Description

Introduces the provider-neutral RunnerConfigStore contract and moves the existing SSM implementation behind it. Scale-up and runner creation now write registration-token or JIT configuration through the store's create operation, while SSM-specific parameter paths, tags, encryption behavior, and environment parsing stay in the AWS adapter.

The adapter preserves the existing stored values and metadata, exposes its maximum write throughput so callers can pace batches without hard-coding SSM limits, and accepts provider-neutral runner metadata that is translated into SSM tags. This establishes the storage boundary without adding another backend or changing Terraform resource addresses.

Test Plan

  • Added/updated runner-config store and control-plane tests.
  • git diff --check passed.
  • Runtime Yarn tests could not be run locally because the repository's pinned Yarn launcher is unavailable in this environment; CI should provide the full test result.

Related Issues

@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 4 package(s) with unknown licenses.
See the Details below.

License Issues

lambdas/functions/control-plane/package.json

PackageVersionLicenseIssue Type
@aws-github-runner/storage-providersNullUnknown License

lambdas/libs/compute-providers/package.json

PackageVersionLicenseIssue Type
@aws-github-runner/storage-providersNullUnknown License

lambdas/libs/storage-providers/package.json

PackageVersionLicenseIssue Type
@aws-github-runner/aws-powertools-utilNullUnknown License
@aws-github-runner/aws-ssm-utilNullUnknown License

OpenSSF Scorecard

PackageVersionScoreDetails
npm/@aws-github-runner/storage-providers UnknownUnknown
npm/@aws-github-runner/storage-providers UnknownUnknown
npm/@aws-github-runner/aws-powertools-util UnknownUnknown
npm/@aws-github-runner/aws-ssm-util UnknownUnknown
npm/@aws-sdk/client-ssm ^3.1009.0 UnknownUnknown
npm/aws-sdk-client-mock ^4.1.0 UnknownUnknown
npm/aws-sdk-client-mock-jest ^4.1.0 UnknownUnknown

Scanned Files

  • lambdas/functions/control-plane/package.json
  • lambdas/libs/compute-providers/package.json
  • lambdas/libs/storage-providers/package.json

@edersonbrilhante edersonbrilhante changed the title refactor(storage): extract SSM provider refactor(storage): route runtime config through providers Aug 18, 2026
@edersonbrilhante
edersonbrilhante force-pushed the refactor-runner-config-storage-provider branch from a53715b to 127c8f8 Compare August 18, 2026 20:00
@edersonbrilhante edersonbrilhante changed the title refactor(storage): route runtime config through providers refactor(storage): extract runner config store Aug 18, 2026
@edersonbrilhante edersonbrilhante changed the title refactor(storage): extract runner config store refactor(storage): extract runner configuration stores Aug 18, 2026
@edersonbrilhante
edersonbrilhante force-pushed the refactor-runner-config-storage-provider branch from 4726813 to c2a8566 Compare August 19, 2026 13:59
@edersonbrilhante
edersonbrilhante changed the base branch from experimental-multi-runner-config-v2-20260805 to refactor-ec2-provider-isolation August 19, 2026 13:59
@edersonbrilhante
edersonbrilhante force-pushed the refactor-runner-config-storage-provider branch from c2a8566 to 47b53cb Compare August 19, 2026 15:04
@edersonbrilhante
edersonbrilhante changed the base branch from refactor-ec2-provider-isolation to main August 19, 2026 15:04
@edersonbrilhante
edersonbrilhante force-pushed the refactor-runner-config-storage-provider branch from 47b53cb to ce6a33c Compare September 3, 2026 12:01
@edersonbrilhante
edersonbrilhante force-pushed the refactor-runner-config-storage-provider branch 2 times, most recently from 64d50ae to dea22a1 Compare September 4, 2026 10:36
@edersonbrilhante edersonbrilhante changed the title refactor(storage): extract runner configuration stores refactor(storage): make runner config store provider-neutral Sep 4, 2026
@edersonbrilhante
edersonbrilhante force-pushed the refactor-runner-config-storage-provider branch from dea22a1 to 2bbceef Compare September 4, 2026 11:19
@edersonbrilhante edersonbrilhante added microvm javascript Pull requests that update Javascript code storage-provider and removed microvm labels Sep 4, 2026
@edersonbrilhante
edersonbrilhante marked this pull request as ready for review September 7, 2026 13:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The refactor preserves existing SSM behavior, with only non-blocking dependency and coverage-configuration cleanup remaining.

Pull request overview

Introduces a provider-neutral runner configuration store while retaining SSM as the current backend.

Changes:

  • Adds the RunnerConfigStore contract and SSM adapter.
  • Routes registration-token and JIT configuration writes through the store.
  • Updates metadata contracts, dependencies, tests, and throughput pacing.
File summaries
File Description
lambdas/yarn.lock Registers workspace dependencies.
lambdas/libs/storage-providers/vitest.config.ts Configures package tests and coverage.
lambdas/libs/storage-providers/tsconfig.json Configures TypeScript compilation.
lambdas/libs/storage-providers/runner-config.ts Selects the SSM implementation.
lambdas/libs/storage-providers/runner-config.test.ts Tests store creation.
lambdas/libs/storage-providers/package.json Defines the new workspace package.
lambdas/libs/storage-providers/index.ts Exports the public storage API.
lambdas/libs/storage-providers/environment.d.ts Declares provider environment typing.
lambdas/libs/storage-providers/core/index.ts Defines provider-neutral contracts.
lambdas/libs/storage-providers/aws/ssm/runner-config-store.ts Implements SSM storage.
lambdas/libs/storage-providers/aws/ssm/runner-config-store.test.ts Tests SSM behavior.
lambdas/libs/storage-providers/aws/ssm/parameter-store-tags.ts Parses and validates SSM tags.
lambdas/libs/storage-providers/aws/ssm/environment.d.ts Declares SSM environment variables.
lambdas/libs/compute-providers/package.json Updates workspace dependencies.
lambdas/libs/compute-providers/core/index.ts Neutralizes runner metadata contracts.
lambdas/libs/compute-providers/aws/ec2/src/control-plane/scale-up.test.ts Updates EC2 metadata expectations.
lambdas/libs/compute-providers/aws/ec2/src/control-plane/runner-creation.ts Produces neutral runner metadata.
lambdas/functions/control-plane/src/scale-runners/scale-up.ts Removes token-path coupling.
lambdas/functions/control-plane/src/scale-runners/scale-up.test.ts Updates scale-up integration tests.
lambdas/functions/control-plane/src/scale-runners/scale-up-contract.test.ts Supplies adapter environment configuration.
lambdas/functions/control-plane/src/scale-runners/github-runner.ts Writes configurations through the store.
lambdas/functions/control-plane/src/pool/pool.ts Removes token-path coupling from pools.
lambdas/functions/control-plane/src/pool/pool-contract.test.ts Configures SSM for contract tests.
lambdas/functions/control-plane/src/modules.d.ts Removes obsolete local environment typing.
lambdas/functions/control-plane/package.json Adds the storage package dependency.
Review details
  • Files reviewed: 21/25 changed files
  • Comments generated: 3
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +9 to +11
coverage: {
include: ['index.ts', 'runner-config.ts', 'core/**/*.ts', 'aws/**/*.ts'],
exclude: ['**/*.test.ts', '**/*.d.ts'],
"dependencies": {
"@aws-github-runner/aws-powertools-util": "*",
"@aws-github-runner/aws-ssm-util": "*",
"@aws-github-runner/storage-providers": "*",
Comment on lines +19 to +21
"@aws-github-runner/aws-powertools-util": "*",
"@aws-github-runner/aws-ssm-util": "*",
"@aws-sdk/client-ssm": "^3.1009.0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

javascript Pull requests that update Javascript code storage-provider

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants