I have pretty much the same setup at my work too. It goes Gitlab->Jenkins->Puppetmaster. This works super well with Puppet dynamic environments, since each team member can have their own branch to mess around in and make mistakes. On our master branch you have to pass puppet parser validate and puppet-lint before things get to production, which helps cut down on errors.
http://puppetlabs.com/blog/git-workflow-and-puppet-environme...