This page is likely to go through some major revisions as I'm writing down my thoughts.
I've been using GitLab CI for my Emacs configuration for a while, and it's pretty nice. It's all configured through yaml. I won't say that I'm an expert on it so far, but the fact that it's all just yaml does occasionally prevent me from properly abstracting certain actions. My configuration is very repetitive.
Github Actions isn't technically a CI/CD pipeline product, I suppose. More of a workflow automation product that they're building CI/CD capabilities into.