devngrow

блог о человеке и компьютере

Hugo на Gitlab за N минут

Posted at — Nov 18, 2020

Установка HUGO, создание сайта на локальной машине и подготовка GitLab

Установка

brew install hugo

Создание сайта

hugo new site ./имяСайта

Потом на Gitlab необходимо создать репозиторий “имяСайта” (можно приватный)

Еще нужно создать ssh ключ, чтобы легче было жить…

ssh-keygen -t ed25519 -C "комментарий типа username@gitlab.com"

Эта команда создаст 2 файла в корневом катологе (~/.ssh/), в одном публичный ключ, в другом приватный. Тот, что публичный заканчивается на pub (public). Его надо открыть и добавить на gitlab без комментария, в заголовке(тот что Title) на странице Gitlab указать например “домашний пека”, можно еще задать когда этот ключ придет в негодность(по-хорошему), но для упрощения оставим пустым.

Теперь переходим к соединению папки на локальном компьютере и gitlab rep

cd ~/имяСайта
git init
git add *
git commit -m 'initial commit'

Темы для сайта можно найти здесь https://themes.gohugo.io/

На примере темы с этого сайта:

cd themes/
git submodule add https://github.com/vividvilla/ezhil.git ezhil
cd ..
git add *
git commit -m 'Added theme ezhil'

Теперь скопируем пример сайта который есть в самой теме:

cp -r themes/ezhil/exampleSite/* ./
git add *
git commit -m 'Added example of theme'

Все ли работает? Проверить это можно запустив локальный сервер, в Hugo это далается так:

hugo server -D

флаг -D означает лишь то, что загрузятся И черновые статьи, если они есть. В данном случае это не принципиально, так как в примере нет черновых статей.

Если все сработало так как мы этого ожидали - то остается загрузить все это в наш гит-репозиторий.

git push -u git@gitlab.com:Ваше_Имя_На_Гитлаб/Имя_проекта.git
git push -u git@gitlab.com:Ваше_Имя_На_Гитлаб/Имя_проекта.git master

Хорошо бы, чтобы наш Hugo не обновлялся постоянно в репорзитории, чтобы не приходилось все заново настраивать, поэтому заранее посмотрим версию на локальном компьютере с помощью команды hugo version, и эту версию мы будем использовать далее.

вариант 1: в папке с нашим проектом на локальном компьютере нужно создать файл .gitlab-ci.yml с таким содержанием:

# All available Hugo versions are listed here:
# https://gitlab.com/pages/hugo/container_registry
image: registry.gitlab.com/pages/hugo/hugo_extended:1.01

variables:
  GIT_SUBMODULE_STRATEGY: recursive

test:
  script:
    - hugo
  except:
    - master

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

Вместо 1.01 необходимо вписать Вашу версию.

вариант 2: создать этот файл с помощью Gitlab: Репозиторий->Файлы->Добавить файл->в этой директории Новый файл. Выбрать из шаблонов .gitlab-ci.ymlи Hugo, сгенирируется файл который будет выглядеть как этот:

# This file is a template, and might need editing before it works on your project.
---
# All available Hugo versions are listed here:
# https://gitlab.com/pages/hugo/container_registry
image: registry.gitlab.com/pages/hugo:latest

variables:
  GIT_SUBMODULE_STRATEGY: recursive

test:
  script:
    - hugo
  except:
    - master

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

Я все же рекомендую отредактировать строку image: registry.gitlab.com/pages/hugo:latest и заменить в ней версию Hugo на статичную, image: registry.gitlab.com/pages/hugo/hugo_extended:Ваша_Версия

Настройки репозитория

На Gitlab в Настройки->Основные->Видимость… разверните и пролистайте вниз до Pages, где необходимо сменить “Только участникам проекта” на “Все”

Далее в Настройки->Страницы появится (вот-вот, не сразу) адрес вашего сайта на gitlab(формата https://username.gitlab.io/repname)

Так же можно добавить другое доменное имя. Если вы добавите стороннее доменное имя и верифицируете (никогда НЕ удаляйте его, если удалить верифицированную страницу - это перечеркнет дорогу к цели =) В моем случае я больше не смог присоединить свой домен к GitLab Pages из-за ошибки, которая существует с 2016 года (по крайней мере это дата создания поста с анагичной проблемой в gitlab community), а в ходе общения с Gitlab Support - мне посоветовали подождать пару недель, что ж… мораль: не надейся на Gitlab Support).

Оживляем сайт

Для начала необходимо отредактировать основной конфиг сайта, а это ~/имяСайта/config.toml и в первую очередь надо изменить baseURL

baseURL = "https://ваше_имя_на_гитлаб.gitlab.io/имя_проекта/"

Через несколько минут когда закончится сборка, можно будет заглянуть на сайт во внешнем мире как раз таки по адресу указанному в baseURL ;)

Останется только настраивать сам сайт добавляя и убирая меню, можно даже изменить тему(ее цветовую гамму либо вообще создать свою).

Рекомендую все это делать на локальном устройстве и пушить уже готовые/РАБОЧИЕ варианты, плюс если что-то пойдет не так - можно всегда откатиться запулив файлы с репозитория и начать “разбор игрушечной машинки” заново.

Удачи ;-)

comments powered by Disqus