Схема генератора статических сайтов на базе HUGO с автоматической сборкой и развертыванием. Начало
После вчерашней публикации мы решили поделиться собственной схемой, которую используем для нового сайта и которая выполняет цели децентрализации разработки и работы с сайтом, контроля версии и автоматического развертывания.
Одной из важных частей схемы является локальный контур, который позволяет выполнять как разработку, так и работу над контентом в рамках полного цикла – со сборкой локальной копии. Это позволяет проверить работу сайта без его публикации на хостинге и убедиться, что все работает как надо.
В принципе вы можете поднять локальный экземпляр HUGO на своем рабочем месте, но мы не советуем этого делать, заведите для этого отдельную виртуальную машину или контейнер, хоть локально, хоть на домашнем сервере.
Дело в том, что HUGO в среде Windows и HUGO в среде Linux могут работать несколько по-разному, использовать разные библиотеки, разные параметры окружения. Поэтому важно обеспечить максимальную идентичность локальной и рабочей сборочных сред.
Так как мы используем GitHub Action, который создает виртуальные машины, то и для локальной среды используем виртуальную машину с Ubuntu, если же вы используете GitLab, который оперирует Docker контейнерами, то имеет смысл и локальный контур выполнить по той же технологии.
Но это уже тонкости, главное – у нас есть некоторая локальная установка HUGO с которой мы будем работать. И некоторое дополнительное окружение. В частности, локальный git-репозиторий, в котором мы будем фиксировать все изменения проекта.
Сразу дам простой совет: используйте основную ветку репозитория – main, только для повседневной работы с сайтом – т.е. создания контента, все остальные работы выполняйте в отдельной ветке, например – dev (от developer – разработка). Это немного усложняет работу, зато серьезно упрощает всю следующую эксплуатацию. Мы коснемся этого вопроса позже.
Еще одной частью рабочего окружения станет скриптовая среда выполнения, чаще всего Python, который позволит автоматизировать ряд задач, с которыми вы непременно столкнетесь.
В нашем случае это оптимизация и конвертация изображений, а также транслитерация таксономий. И если второе у нас нестандартное и вынесено в скрипты чисто по причине необходимости обеспечить совместимость в URL со старым сайтом, то про картинки разговор отдельный.
По опыту работы с классическими CMS многие привыкли, что такая оптимизация и конвертация делается самим движком, при загрузке картинки и пытаются решить проблему в лоб.
Можно ли такое сделать с HUGO? Можно, чего нельзя, с ним вообще многое можно, если хоть немного код писать умеете, да с нейросетями советуетесь. Но парадигма тут совсем иная.
Что делает HUGO? Собирает статический сайт из файлов проекта и отдельной ценности этот сайт не имеет, в отличие от проекта. Почему? Да потому, что его всегда можно сгенерировать заново.
Таким образом, если мы переложим конвертацию изображений на уровень HUGO, то он будет это делать каждый раз при сборке проекта, а процесс этот не быстрый и ресурсозатратный.
Поэтому более правильно будет пройти один раз скриптом по всему набору изображений, выполнить необходимые оптимизации и конвертации и потом работать уже с подготовленными изображениями. Тем более, что под эту задачу мы можем локально выделить ресурсов столько, сколько нужно.
Также важно, что скрипты эти, как неотъемлемая часть проекта тоже попадут в git, что обеспечит им версионирование и децентрализацию.
Последняя достигается синхронизацией локального репозитория с GitHub, GitLab или любой иной публичной службой, не важно какой. Дополнительно это выполняет роль первого уровня резервного копирования.
Потому что представить себе, что тот же GitHub неожиданно накроется со всем пользовательским добром сложно. А при выходе из строя локального контура, даже всего полностью и безвозвратно, вы всегда можете заново клонировать git-репозиторий и просто настроить локальную среду. Максимум, что вы потеряете – это не синхронизированные изменения.
Post #5178
2.72K

- 👍 24
- 🥱 5
- ❤ 1