I'm baffled by remarks of GitLab's ICD being "unintuitive". I mean, GitLab's pipelines are made up of a set of stages, and stages are made up of a set of jobs. To put it differently, GitLab's pipelines are made up of jobs, which are grouped into stages. Does this go against your personal notion of a pipeline?
> The smallest unit of action on GitLab is a whole job
No. A job is the smallest unit of execution you can assign a runner to execute. It is used to set things like dependencies and runtime environments. Once your job sets the environment, your job can start to execute your scripts. This means a set of individual shell commands or shell scripts you provide.
> You cannot share secrets between jobs.
Yes, and only a very silly and clueless person would ever think it would be a good idea to share secrets through random runners due to exfiltration risks.
This is not a GitLab thing, mind you. You should really read this
https://secure-pipelines.com/ci-cd-security/gitlab-ci-cd-sec...
> Multiple workflow files instead of a single `.gitlab.yml`
Now I wonder if you're just trolling.
> Dynamic services,
Now this is just silly. Did you even bothered to learn how GitLab handles this?