This outputs artifacts to a sonatype nexus repo. From there, the binary can be promoted either automatically or manually to various environments.
It breaks Gitlabs rules of CI modifying the repo (with no explanation) but it allows any developer with any level of experience to easily release the product
Trunk-based is IMO the best http://paulhammant.com/2013/04/05/what-is-trunk-based-develo...
But it does provide a pretty simple clean deploy, with information about the state of your deployment. You can even include some of that audit support with some relatively simple, judicious scripts. Check out, echo something to a log file, commit it to a deployment branch and push it.
I'm not sure I see how network shares or an http API offer better access controls over a git repo loaded over https for loading up code.
Essentially, we perform builds from dev, release branches, and master (and hotfix, but this rarely ever happens), and move to these branches over a two week sprint cycle. We work on dev during the sprint, move to a release branch when we're preparing for a client-facing release, and when the sprint is over we merge into master, perform our final regression tests and tag the release with the sprint version number (GitVersion helps a ton for this).
The key point for our production process is that a single build is used to go between environments. We use Octopus Deploy to package up our build and to perform the necessary transforms for deploying to different environments.
If you have just 1 team, releasing 1 version, say a web application then your workflow will differ from 1 team, maintaining multiple versions of the same app, say a desktop version or say multiple teams working on one app say an enterprise backend. I look at how the application has to be released, how the team is structured, then figure out which workflow we will use.
Releases are OS packages (.deb, .rpm, whatever) built from release branches. We don't deploy with git because we don't commit binaries, and git doesn't know how to deploy our OS dependencies and drain and restart our prod services.