‹ BackHN Continuity

Thread

Scaling Golang CI by Replacing actions/setup-go

77 points · 26 comments · peterldowns

  1. lukasschwab · · focus · HN ↗
    There are some good off-cuts that didn't make the official post, but which might be of interest to HN!

    It only gets a brief mention, but the cache-pruning change was an interesting one. Cache accretion happens in the default actions/setup-go too, but dramatically increasing the number of cache-writes for cloudx-io/setup-go made it an actual issue.

    As the cache grows, so does the time it takes to load it from GitHub's actions cache... and that grows until it's a significant time-suck in CI. We prune with basic mark-and-sweep.

    Digging deeper, the pluggable `GOCACHEPROG` (introduced in Go 1.24) is a really useful tool. Shimming the normal cache logic for measurement, for example. In theory this should also be attractive for remote caching.

    1. PhilipRoman · · focus · HN ↗
      The way caches are managed in CI is bonkers (at least in GitLab, but GitHub probably does the same). I guess it's built to conveniently work with the simplest of projects. I had to reimplement the mechanism by hand just to get basic things working, like not downloading the entire cache when only a few entries will be used for each build
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.