Open Source I Hate Github Actions With Passion (2026)

Open Source I Hate Github Actions With Passion (2026)

I can’t overstate how much I hate GitHub Actions. I don’t even remember hating any other piece of technology I used. Sure, I still make fun of PHP that I remember from times of PHP41, but even then I didn’t hate it. Merely I found it subpar technology to other emerging at the time (like Ruby on Rails or Django). And yet I hate GitHub Actions.

Day before writing these words I was implementing build.rs for my tmplr project. To save you a click - it is a file/project scaffold tool with human readable (and craftable) template files. I (personally) use it very often, given how easy it is to craft new templates, by hand or with aid of the tool, so check it out if you need a similar tool.

The build.rs used CUE to generate README.md, CHANGELOG.md and also a version/help file to guarantee consistency. It was fun thing to do, it took approx. 1.5h and I even wrote an article about it. For myself and future generations.

I was happy with the results and didn’t check CI output which, quite unsurprisingly, failed. I was using cue binary inside build.rs and without it build simply couldn’t progress. When I woke up next day and saw e-mail from CI notifying me about failed build I immediatelly knew my day isn’t going to start with puppies and rainbows.

It took couple attempts to search and push GitHub Action that would install CUE and then I got the worst of the worst results: One system in matrix failing to build.

A word of explanation. I’m building tmplr for 4 platforms:

Makes sense, right? Even though my user base can be counted on a fingers of one-arm-less and second-arm-hook-equipped pirate, it’s still a thing “One Should Do”.

And with all that - Linux ARM failed with “command can’t be found”. CUE installed and ran nicely for all other 3 targets, but for some reason it failed for Linux ARM.

In case you don’t care about why I hate GitHub but your mind started to wonder to “what went wrong” let me tell you; because I know.

So supposedly cross build that happens in matrix is heavily isolated. When I install CUE I install it only on x86_64 Linux host and macOS ARM host. macOS has zero issues running x86_64 binary and no issues are raised when Linux x86_64 tries to run x86_64 binary. But GitHub Actions is nice enough to hide x86_64 binary from arm64 runner, so that it won’t break.

Source: HackerNews