Skip to content

Promote graceful scale-in for actions-runner to global modules#269

Merged
akuzminsky merged 1 commit into
mainfrom
promote-scale-in-global
Apr 19, 2026
Merged

Promote graceful scale-in for actions-runner to global modules#269
akuzminsky merged 1 commit into
mainfrom
promote-scale-in-global

Conversation

@akuzminsky

Copy link
Copy Markdown
Member

Summary

Closes #267.

Deployment strategy

Same gradual, Puppet-first approach used for sandbox in #268:

  1. Merge + deploy this PR to production runners.
  2. Observe old-Terraform / new-Puppet behavior in prod: characterize delete_registration_token under old IAM and the missing-fact path for deregistration_hookname.
  3. Then roll out terraform-aws-actions-runner Part 1 (new fact + IAM) to remaining production AWS accounts.
  4. Validate the full happy path across production.

Note: the environment-specific copies in environments/development/ and environments/sandbox/ are deliberately kept for now so their bake periods remain pinned to the version they were validated on. Cleanup of those overrides is out of scope for this PR.

Test plan

Phase 1 — old-Terraform / new-Puppet (this PR)

  • puppet-lint --fail-on-warnings clean on global profile module (done locally).
  • Heartbeater service/timer come up on production runners without crashing.
  • delete_registration_token behavior under old IAM characterized — fails loudly but runner still terminates cleanly.
  • Runs with deregistration_hookname fact absent do not cause fatal errors in Puppet or lifecycle scripts.
  • No stuck Terminating:Wait instances beyond heartbeat_timeout that would not also have been stuck pre-change.

Phase 2 — after Terraform Part 1 is applied to all production accounts

  • No ValidationError on SetInstanceProtection in CloudTrail during production scale-in events.
  • No stuck Terminating:Wait instances beyond heartbeat_timeout.
  • delete_registration_token succeeds (no AccessDeniedException).
  • Full success criteria in .claude/plans/actions-runner-scale-in-race.md verified across production runners.

🤖 Generated with Claude Code

Follow-up to #265 (development) and #268 (sandbox). Copies the graceful
scale-in implementation from environments/sandbox/modules/profile/github_runner/
into the top-level modules/profile/github_runner/ so all remaining environments
pick it up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@akuzminsky akuzminsky merged commit 2d596df into main Apr 19, 2026
2 checks passed
@akuzminsky akuzminsky deleted the promote-scale-in-global branch April 19, 2026 16:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Promote graceful scale-in (actions-runner) to global modules

2 participants