v4.0.0
A capability wave across cost, reliability, reach, and toil — 10 features, each shipped as its own PR (#50–#59).
⚠️ Breaking changes
ec2:CreateTagsis now always required. Every launched instance is stamped with the action's signature tags (used by the cleanup reaper). Grantec2:CreateTagswith conditionec2:CreateAction = RunInstances, orRunInstanceswill be denied. Previously only needed withaws-resource-tags. (#42, #45)cleanup-on-start-failuredefaults totrue. A runner that fails to bootstrap/register now has its console captured and is terminated instead of left running after a registration timeout. Setfalseto keep the old behavior. (#41)- The root EBS volume for
encrypt-ebs/volume-*now always setsDeleteOnTermination: true. (#44)
Highlights
Reliability
- Bootstrap diagnostics: per-phase phone-home tags, fast-fail naming the failing step, console-output capture (token redacted),
cleanup-on-start-failure. (#41) - Orphan protection:
max-lifetime-minutesTTL self-destruct + amode: cleanupreaper (max-age-minutes,dry-run). (#42) - Capacity resilience: comma-separated
ec2-instance-type/subnet-idfallback across AZs and types; outputsinstance-type-used,subnet-id-used. (#40)
Cost
- Spot instances:
market-type: spotwithspot-fallback/spot-max-price; outputmarket-type-used. (#39) - ARM64/Graviton:
architecture: arm64with AMI-arch fail-fast validation. (#43) - Warm pools:
reuse: stopreuses stopped instances for much faster starts (reuse-pool-tag,reuse-max-cycles).⚠️ carries disk state between jobs — unsafe for public/untrusted-PR repos. (#48)
Reach & toil
- Root volume config:
volume-size/volume-type/volume-iops/volume-throughput. (#44) - Multi-runner batches:
count(+allow-partial) for matrix builds; outputec2-instance-ids. (#45) - Pluggable bootstrap:
pre-runner-script+user-data-template(Ubuntu example included) — no more forking for other distros. (#46) - Automated runner-version bumps:
scripts/bump-runner.js+ a weekly PR workflow. (#47)
IAM additions
Base policy also needs ec2:DescribeTags and ec2:GetConsoleOutput. The runner's own instance role may optionally get self-scoped ec2:CreateTags for bootstrap phone-home.
Pin namecheap/ec2-github-runner@v4 for the latest v4 release, or @v4.0.0 to pin exactly. See CHANGELOG.md and the README.
Full changelog: v3.0.2...v4.0.0