Honestly curious what bad decisions you’ve encountered? I’ve used Gitlab CI/CD on ~20 or so projects of varying complexity (small to enterprise) and have found it enjoyable to use each time.
I'd be interesting in hearing more about some of these.
We're currently using GitLab's CI/CD for ~50 or so private repositories, covering ~7 different languages without any issues. That includes testing, Docker builds and documentation generation for most projects.
We only use private runners though, I don't know if any issues are related to their own runners.
So runners are a good example:
The runner config is stored in a config.toml on the runner. If you want autoscaling runners, it gets very complex so you might want to version control it or back it up, but you have to store your AWS secrets in this config.toml. It also contains hashes that have to be matched with settings in the UI, and of course, tags, which need to be tied into your .gitlab-ci. UI configuration changes take places instantly and there's no undo. So you have configuration in 3 places, only one of which is version controlled. And lets say you have some new runners with new tags -- you aren't going to be able to run an old pipeline on the new runner.
Talking about bad design decisions, I prefer GitLab's way to handle Pages over GitHub. It's just strange to store generated artifacts in a (`gh-pages`) branch. Instead, in GitLab it's stored as separate files and removed automatically after a certain period.
Agreed with other commenters, we use gitlab CI extensively, and we find it great. That's the main reason we use gitlab, the code/repository part is not that great and we don't use the other stuff