We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
For the past two weeks, I’ve been spending most of my time rewriting our CI scripts in GitHub Actions. This is the third time we’ve had to redo our CI setup—first GitHub Actions, then Earthly (which we moved away from because it was discontinued), and now, reluctantly, back to GitHub Actions.
Our CI is complex: merge queues, multiple runners (self-hosted, blacksmith.sh, GitHub-hosted), Rust builds, Docker images, and heavy integration tests. Every PR we merge burns through an hour of CI time, running across multiple parallel runners.
There are a few things we'd like to have (which we deem as "good software practice") but it's nothing unheard of:
- Everything that goes into `main` must pass all tests.
- Trivial mistakes (formatting, unused deps, lint issues) should be fixed automatically, not cause failures.
- The artifacts we test with in CI should be the exact ones we release.
- CI should complete quickly (to keep developers happy).
GitHub Actions technically allows all of this—but setting it up is a frustrating mess, full of hidden gotchas, inconsistent behavior, and a debugging experience that makes me question my choices.
continue reading on www.feldera.com
⚠️ This post links to an external website. ⚠️
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts, subscribe use the RSS feed.