r10k is a great tool that simplifies fetching puppet modules and updating environments. Since it doesn’t include a sample post-receive or post-update git hook, I decided to publish the one I’m using at sciurus/r10k-git-hook. I’m running gitolite on the same server as my puppet master, and I fiddle with umask and setgid so that when r10k runs as the gitolite user it writes files that the puppet user can read. This is arguably not as nice as plugging r10k into a proper CI system, but it gets the job done.
If you’re not already using a pre-commit hook for your puppet code, try out mattiasgeniar/puppet-pre-commit-hook.