All I need do is push to my Bitbucket repo and Netlify automatically pulls the latest changes and runs the build command. That, combined with a CMS-as-service like Forestry.io or Cloudcannon makes for a very seamless experience.
The work flow is simple. First, I fork one of example projects provided by GitLab [2]. Then, I make changes (creating a new post or fixing the site title). I don't forget to enable shared runners as mentioned by GitLab itself. Shared runners build and run your changes on Docker. Finally, I make commits and push it to remote server using command line. Let the machine build your changes!
Note: you can set up your SSL and domain configurations.
For the most part I host them on a VPS myself, using Sovereign (to which I'm a contributor).