В предыдущих реинкарнациях этот сайт уже бывал запущен в виде html файлов за nginx, статического сайта на s3 и даже в виде сайта в ipfs. В этот раз попробую разместить его на Cloudflare pages. Будем маленький туториал, а заодно и оценю сложность этого размещения.

Подключаем репозиторий Gitlab к Cloudflare

Первым делом мы переходим на страницу через меню Compute, далее Workers & Pages:

Cloudflare pages в меню

На странице нужно выбрать Create application:

Cloudflare pages create app

Создаем Cloudflare pages

Для создания нужно выбрать не сильно заметную ссылку внизу Continue to Pages:

Выбираем Continue to Pages

А на открывшейся странице Import an existing Git repository:

Import an existing Git repository

Тут нужно будет подключить Gitlab (в моем случае, либо GitHub, если нужно) и выбрать соответствующий репозиторий. Для упрощения, есть окошко с поиском:

Выбираем репозиторий

Настройка сборки

Далее нужно настроить сборку. Я беру команду из своего .gitlab-ci.yml и немного ее правлю, так как домен будет доступен в переменной окружения при вызове сборки:

Настройка сборки

Вот такая команда сборки у меня получается:

1
hugo --enableGitInfo --minify -e production -b $CF_PAGES_URL

Больше ничего не меняю, для сборки выбрал ветку main, именно в ней лежит готовый к проду сайт.

Отладка билда

Первый билд у меня завершился с ошибкой. В выводе есть возможность посмотреть лог и/или скачать его. Основная ошибка, как видно на скрине, это недостаточная версия Hugo.

Первый билд с ошибкой

Нужную версию можно “зафиксировать” через переменную окружения HUGO_VERSION:

Версия Hugo

Версию вписываем именно числовую, так как при сборке ссылка сама будет сформирована на extended версию. В моем случае на сейчас, это версия 0.164.0. Только числом, без дополнительных v или extended.

Сборка и загрузка

После удачной сборки, будет выполнена загрузка файлов:

Загрузка файлов после сборки

И вот сообщение, что сайт доступен на специальном поддомене:

Сообщение о доступности сайта на тех домене

Gitlab

В интерфейсе Gitlab Pipeline так же будет указан отдельный блок, который по клику будет вести в сборочный процесс на Cloudflare:

Сборка в интерфейсе GitLab

Cloudflare pages

В интерфейсе Cloudflare pages будет присутствовать информация о пройденных сборках и доступных тех доменах:

Информация о сборках в CF pages

Так же тут можно привязать свой домен, так как он уже был на Cloudflare, то его замена происходит в пару кликов:

Кастомныый домен

А в настройках поменять или поправить то, что настраивалось по шагам в мастере:

Настройки CF pages

Что получаем в итоге

Теперь выкладывая эту запись, не придется ничего делать. Нужно только подождать, когда Cloudflare pages соберут с нуля Hugo сайт и зальют на тех домен. Так же это работает для не основной ветки, то есть можно посмотреть “preview” на отдельном техническом домене:

Сборка превью для ветки

Который будет реально доступен:

Пример ветки на тех домене

Но тут нужно быть внимательным! ТЕХНИЧЕСКИЕ ДОМЕНЫ НЕ УДАЛЯЮТСЯ САМИ ПО СЕБЕ. Поэтому нужно либо добавить их удаление через CI GitLab, либо руками удалять их Cloudflare pages.