Аналогично Github Pages в гитлабе существует собственный: Gitlab Pages.
Это хостинг статических сайтов, который собирается через Gitlab CI по исходникам в репозитории. О Gitlab CI уже писал, так что за подробностями туда. Хотя и здесь постараюсь описать понятно, даже если ты, читатель, с ним не особо знаком.
Gitlab CI позволяет выполнять скрипты над файлами в репозитории из под какого-либо контейнера. Соответственно, можно собрать сайт через различные static site generator, а можно скриптами самому. Я, например, собирал и публиковал Kotlin JS — запускал Gradle скрипты сборки, тесты и публиковал сайты на Gitlab Pages. Именно на этом примере мы и рассмотрим вкратце, что да как.
Чтобы наш проект опубликовался на Pages, положим в корень файл .gitlab-ci.yaml
В нём должна быть определена задача pages
, в результате выполнения которой собирался артефакт из папки public
. Важно: все имена должны быть точно такими. Вот пример:
image: openjdk:8
pages: # название таски
stage: deploy
script:
- ./gradlew bundle
- mkdir .public
- cp -r src/main/web/* .public
- cp -r build/bundle/* .public
- mv .public public
artifacts: # необходимый артефакт
paths:
- public
only: # собирать только из ветки мастера
- master
Здесь в докер контейнере openjdk выполняется скрипт, запускающий gradle и кладущий результат в папку public.
Затем создается артефакт из этой папки, который и отображается как сайт.
Всё, готово! Чтобы понять адрес сайта, нужно зайти в репозитории в setting → pages
. Но обычно он такого вида: https://your-user-name.gitlab.io/project-name
Погружение
- Много официальных примеров для различных языков и технологий здесь
- Документация
- А ещё, конечно же, можно прикрепить свой домен или субдомен
- Есть автоматическая интеграция с Let’s encrypt, чтобы соединение всегда было защищено сертификатом, когда вы используете свой домен. Гитлаб будет автоматически следить и за продлением сертификата