Publishing the Static Website Automatically¶
Updated: May 07, 2024
GitLab Pages¶
Just like GitHub Pages [1], GitLab Pages [2] are also available. GitLab Pages
are basically a git repository with special .gitlab-ci.yml
which will push the static html content you have in that repository under yourname
.gitlab.io/projectname
. It is easy to setup [3].
Using Gitlab CI to build and publish¶
There are two choices for me to publish my website
Build html and pdf locally in my laptop and push the resulted content to gitlab. By using their default
GitLab Pages
specific.gitlab-ci.yml
, I can just publish easilyWrite my own
.gitlab-ci.yml
and build both html and pdf content using Gitlab’s CI [4] and publish.
I selected the second way and here is my custom .gitlab-ci.yml
default:
image: ubuntu
build0:
stage: build
only:
- master
script:
- useradd -d "${CI_PROJECT_DIR}" -m -U -s /bin/bash user0
- chown -R user0:user0 "${CI_PROJECT_DIR}"
- export DEBIAN_FRONTEND=noninteractive
- apt update -y -q && apt full-upgrade -y -q && apt autopurge -y -q && apt clean -y
- apt install -y -q python-is-python3 python3-venv make git texlive-xetex texlive-latex-recommended fonts-freefont-otf latexmk xindy
- su user0 -c 'cd; ./scripts/venvrun.sh make'
artifacts:
name: "${CI_PROJECT_NAME}"
paths:
- "${CI_PROJECT_NAME}/${CI_PROJECT_NAME}.html.tar.gz"
- "${CI_PROJECT_NAME}/${CI_PROJECT_NAME}.pdf"
pages:
stage: deploy
only:
- master
script:
- cd "${CI_PROJECT_DIR}"
- mkdir public && tar xvzf "${CI_PROJECT_NAME}/${CI_PROJECT_NAME}.html.tar.gz" -C public/
- cp "${CI_PROJECT_NAME}/${CI_PROJECT_NAME}.pdf" public/_static/misc/
artifacts:
paths:
- public
As you see, there are three jobs I defined,
html
pdf
pages
html job
basically build html pages, pdf job
builds pdf document and pages job
is job specifically for publishing the contents to GitLab Pages
.
Custom Domain¶
GitLab Pages
also supports Custom Domain [5] with SSL/TLS automatically generated through LetsEncrypt [6]. But, There are bit of work to do in our DNS
Records. Once we do the required changes in the DNS
Records, GitLab
will do the rest automatically.
Thus, everything is automated, all I need to do is write blog posts consistently, I hope I’ll try to do after this migration, because I feel I really like writing in reStructuredText.
End.