Yes, but Gitlab doesn’t allow for easy access rules.
Basically, OPS wants full control of the repo, since they are the ones being blamed if something goes wrong. There’s no way to enforce, that only a certain set of users can make changes to a branch - all such restrictions can be circumvented rather easily. So the solution is a shadow copy of the repo that only gets updated on release and Argo only deploys a specific tag (i.e. release).
We’re not talking about just some enterprise microservice, but stuff in the public administration/government sphere. The tradeoffs are a bit different there.
I didn’t know that GitLab doesn’t allow that! We use BitBucket and there it’s extremely easy to put branch restrictions so that only certain Usergroups are allowed to merge into the release-branches
Bitbucket also doesn’t enforce these rules properly. You can simply change the rules, merge, then change back.
The only way around that is to restrict every developer account into oblivion and only have an ops guy as repo admin, but I think most ops teams have better things to do.