github mattrobinsonsre/terrapod v0.20.0

latest release: v0.20.1
5 hours ago

First release with the VCS archive streaming + caching pipeline. Operators upgrading from v0.19 must ensure their cluster's default storage class (or the explicit api.ephemeralStorage.storageClass they pin) has a Delete reclaim policy — see breaking-change note below.

Highlights

  • VCS poller streams tarballs to disk — large monorepos no longer OOM-kill the api pod. The poll cycle pipeline (download → strip → upload) writes through a per-pod ephemeral PVC instead of buffering whole tarballs in process memory.
  • Single-flight tarball cache — concurrent workspace polls of the same (repo, sha) coalesce on one download via in-process asyncio.Lock, then re-use the result via an object-storage cache (vcs_archives/{conn_id}/{owner}/{repo}/{sha}.tar.gz). Cuts both GitHub API quota usage and per-cycle latency on multi-workspace monorepos.
  • Agent pool list now shows status, not listener counts — replaces the misleading "1/1" display. Listener detail page gains a Replicas column derived from per-pod heartbeat tracking. Listener heartbeats now carry pod_name.

Breaking changes

  • New api.ephemeralStorage Helm block (default enabled: true, size: 50Gi). Each api pod replica gets its own generic-ephemeral-volume PVC for streaming VCS tarballs. Pick a storageClass whose reclaim policy is DeleteRetain-flavoured classes (e.g. AWS EBS xfs-retain) leak PVs on every pod restart. See docs/deployment.md for AWS EKS / k3s guidance.
  • Pool JSON drops listener-summary — replaced by status: "online" | "offline" on GET /api/v2/organizations/default/agent-pools and GET /api/v2/agent-pools/{id}. The Terraform provider doesn't read this field, but external integrators hitting the API directly must update.
  • Listener join token defaults changed in v0.19 carry through unchanged (max_uses=2, 1h expiry).

Bug fixes

  • VCS poller no longer leaves "Run canceled" statuses on the previous SHA when a new commit lands without queueing a new run for the new SHA — the runs that started on the old SHA are now properly cancelled and the new SHA gets fresh runs.
  • Listener pod replicas are tracked individually via per-pod TTL keys, so the agent pool detail page can show the actual fleet size instead of always reporting one listener per Deployment.

Status

Beta — battle-tested in a multi-cluster operator deployment. The streaming + cache changes were driven by a real OOM incident and verified end-to-end before tagging.

Full Changelog: v0.19.0...v0.20.0

Don't miss a new terrapod release

NewReleases is sending notifications on new releases.