Releases: namecheap/ec2-github-runner
Release list
v4.0.1
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
v3.0.2
What's Changed
- fix: bump default
actions/runnerto2.335.1(#36) — GitHub stops allowing the previous defaultv2.333.1to run jobs on 2026-06-23. Replaces the pinned SHA-256 checksum table with the v2.335.1 x64/arm64 hashes, bumps therunner-versiondefault +src/config.jsfallback, updates tests/docs, and rebuildsdist/. - docs: refresh README for v3 and animate the workflow graph (#35)
The v3 major tag has been moved to this release.
Full Changelog: v3.0.1...v3.0.2
v3.0.1
Patch release — refreshes bundled dependencies and rebuilds dist/. No functional or API changes.
Dependency updates
@actions/core1.11.1 → 2.0.3@aws-sdk/client-ec23.1033.0 → 3.1064.0- dev tooling:
eslint9 → 10 (plus explicit@eslint/js),dotenv8 → 17,globals15 → 17
@actions/core and @actions/github are held at their latest CommonJS majors (2.x / 8.x); 3.x / 9.x are ESM-only and cannot be bundled by ncc.
Security
npm audit reports 0 vulnerabilities (production + dev trees).
Full changelog: v3.0.0...v3.0.1
v3.0.0
First Namecheap release of ec2-github-runner, superseding v2.2.1 with a large set of features, hardening, and a runtime modernization. This is a major release — review the upgrade notes before bumping.
⚠️ Breaking changes & new defaults
- Action runtime is now Node 24 (
runs.using: node24). Use GitHub-hosted runners, or self-hosted runners new enough to execute node24 actions. - Runner host base is Amazon Linux 2023 (was AL2). The bootstrap is
yum-based and installslibicu; only yum-based Linux is supported. - IMDSv2 is enforced by default (
http-tokens: required). If a workload on the runner still needs IMDSv1, sethttp-tokens: optional. - Runners are now ephemeral and non-root — registered with
--ephemeralunder a dedicatedrunneruser; GitHub auto-deregisters the runner after a single job. - AWS SDK migrated to v3 (
@aws-sdk/client-ec2). Internal change; IAM permissions are unchanged. actions/runnerpinned to v2.333.1 and its tarball verified against a hardcoded SHA-256 table (src/runner-checksums.js). Therunner-versioninput may only select versions present in that table.
✨ Features
- New inputs:
ec2-image-filters,ec2-image-owner,eip-allocation-id,iam-role-name,runner-version,http-tokens,encrypt-ebs,aws-resource-tags,debug. - AMI selection by filters/owner in addition to an explicit
ec2-image-id. - Opt-in EBS root-volume encryption (
encrypt-ebs: true). - Elastic IP association for the runner instance (
eip-allocation-id). - Structured JSON logging with secret redaction, plus an opt-in
debugmode. - Retries with backoff on AWS/GitHub calls;
stopmode terminates the instance and removes the runner independently, so one failure can't strand the other.
🐛 Fixes
- Write outputs to
$GITHUB_OUTPUTinstead of the deprecated::set-output. - Silence the
DEP0169(url.parse()) deprecation warning. - Remove the
lodashdependency in favor of native JS.
🔧 CI / internal
verify-dist(dist/src sync) and pinned-runner + checksum-table verification jobs.- Build-provenance attestation for
dist/index.js. - Jest unit tests (config, utils, logging, retry, EBS mapping, checksums).
- ESLint flat config; refreshed
.env.example.
Full changelog: v2.2.1...v3.0.0