I recently started using GitLab for personal projects that I wanted to keep in private repositories. I chose GitLab because 1) it’s free and 2) I just wanted to mess around with something that wasn’t GitHub. I started experimenting with their static site hosting service, GitLab Pages, and I feel like the experience and features provided are a bit better than GitHub, whether you have a paid or free account.
Like GitHub Pages, GitLab Pages provides and handles HTTPS automatically, for free, so long as you keep the default *.gitlab.io domain. But GitLab also supports SSL certificates with custom domains. If you use Let’s Encrypt (Certbot), you can host a static site on GitLab with a custom domain and HTTPS, in a private repo, for free. On GitHub, you can pay something like $7 a month for the ability to create private repositories and use one for a GitHub Page, but GitHub offers no support for SSL certificates with custom domains.
I had never used Let’s Encrypt before, and assumed it would be kind of complicated. Instead, it was kind of easy. You can run the Certbot application via the command line and it’ll ask you to temporarily add a page to your website at a specific location with a specific string, as proof that you are in control of the website. It’ll then issue you a certificate.
GitLab’s continuous integration features weren’t something I thought I’d care about for a static site until I used them. With GitHub pages, if I wanted to segregate my source code from a final, production build, I would either commit a
public folder, or maintain separate
master branches, using a
deploy script to manually push the
master branch as the production build. With GitLab, I can just track my source branch, push changes, and let GitLab handle the build and deploy process, without commingling my commit history and build files.
I’ve been pretty impressed with GitLab. I haven’t used it for any collaborative work, which would be the ‘real’ test for comparing it to GiHub. For personal, hobby-level projects, though, GitLab seems to offer more and better features.