Running your Hugo site from GitLab

Running your Hugo site from GitLab

I was hosting my website from my QNAP NAS but I found I was constantly updating and fiddling with it. This caused my website to be down a lot. I recently started using GitLab as a code repository and realized it was so much more. I did some research on GitLab Pages and was able to move my HUGO site from my QNAP to GitLab.

I first created a GitLab project and added a Continuous Integration yaml file .gitlab-ci.yml. The CI file will kick off each time I push any code. It will build a docker container that will host my HUGO code.

I was then able to modify the DNS records for my DNS http://memorylapse.ca to point to https://stephenmichaelis.gitlab.io by adding some records through the DNS Manager of my provider.

GitLab Setup

Create a new project in GitLab using the name StephenMichaelis.gitlab.io, GitLab sees <gitlab-username>.gitlab.io and knows this is to be a hosted Page.

Add a .gitlab-ci.yml file with the following content:

image: monachus/hugo

variables:
  GIT_SUBMODULE_STRATEGY: recursive

pages:
  script:
  - hugo
  artifacts:
    paths:
    - public
  only:
  - master

Push Code to Git

I turned my code into a git project and pushed it to GitLab. Once pushed this should kick off the CI since we created a gitlab-ci.yml file for our project.

git init
echo "/public" >> .gitignore
git submodule add https://github.com/eueung/hugo-casper-two themes/casper-two
git add .
git commit -m "Initial commit"
git remote add origin https://gitlab.com/StephenMichaelis/stephenmichaelis.gitlab.io.git
git pull https://gitlab.com/StephenMichaelis/stephenmichaelis.gitlab.io.git master --allow-unrelated-histories
git push -u origin master

Test GitLab Site

Wait a minute or two to allow your container to build then test your link https://<gitlab-username>.gitlab.io

https://StephenMichaelis.gitlab.io

To link my DNS http://memorylapse.ca to https://stephenmichaelis.gitlab.io you need to access your DNS records and the GitLab Pages Settings. At the time of this post the IP recomeded in the GitLab instructions was 35.185.44.232. These are the settings I changed with my DNS provider.

NAME TYPE RDATA
memorylapse.ca A 35.185.44.232
stephenmichaelis.gitlab.io.memorylapse.ca CNAME stephenmichaelis.gitlab.io
memorylapse.ca TXT _gitlab-pages-verification-code.memorylapse.ca TXT gitlab-pages-verification-code=Your Own Verification from GitLab Pages Settings

Test Custom Site

I had to wait several hours to see results after updating DNS records. Be patient.

http://memorylapse.ca

Good luck with your own setup.

Be kind, Steve