In an EPIC bout of yak-shaving I have reduced the build time for this static site infrastructure running on a puny VPS by a factor of 5. Come along on this undiagnosed journey.

Anatomy of a yak-shave:

  • See what had happened was...
  • I wanted to put animated snowflakes on my site
  • Learned about CSS animation, nice
  • Learned how to not bork screen readers
  • Remembered I barely got my CI/CD working with Forgejo runner
  • Remembered it takes for ever to deploy
  • Realized most of it is just downloading and setting up dependencies
  • How hard can it be to bake all that into my own image?
  • Oh Forgejo supports a container registry too, nice!
  • If I can't quickly build and push an image then this will have to wait
  • Oh wow, that was really easy
  • False sense of how well things are going
  • All the freaking examples are for using public forges with public container registries
  • Fall down several totally wrong rabbit holes due to lack of knowledge
  • Have not stood up, eaten, drank, blinked in hours by this point
  • Things are kinda working, yay! Noooo version mismatch
  • I barely know Nix flakes, how do channels work, how do you pin them?
  • Realized my tools have been broken but flake.lock has been saving me, nice!
  • Fatigue related silly errors and utter faith this attempt will work so I don't need to make a quick test setup and test on a much faster setup
  • Revert back to how it was, drink water, oh wait silly me...
  • Victory
  • Should probably write a blog post, it'll be SO fast to deploy

#Forgejo #CICD #ForgejoActions #NixOS #YakShaving

Screenshot of side by side build steps and their elapsed times. Both builds have passed, the one on the left took 13 minutes and 22 seconds, while the right took 2 minutes and 45 seconds.
0

If you have a fediverse account, you can quote this note from your own instance. Search https://gts.shom.dev/users/shom/statuses/01KB9NAC9ERVE2G8D8A4A2F9FN on your instance and quote it. (Note that quoting is not supported in Mastodon.)