I run Debian on most of my systems and run all of my services in docker (with rare exceptions for node_exporter or stable core tools). My base systems get automatic security upgrades, and then I’ll manually check in every few weeks whenever I feel like it.
My services in docker are version locked to a specific major version (when there’s a tag available) so I can usually re-pull to get minor version updates freely without breaking issues. My few more finnickey services get manual upgrades from me every 6 months or so only.
I usually stick to an OS version for as long as I can, and to that aim I stick to LTS versions with long support windows.
4 major versions in 12mo is…a lot. Especially if those include breaking changes for you. Yikes
I use it to (semi) automate bit repetitive tasks. Like adding a bulk set of getters, generating string maps to my types, adding handlers for each enum type, etc. Basic stuff, but nice to save keystrokes (it’s all auto complete).
Anything more complex though and I spend more time debugging than I saved. It’s hallucinated believable API calls way too often and wasted too much of my time.