Skip to content

RandomAmbersky/template-jekyll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

template-jekyll

  1. Проект был написан для того, чтобы не тащить Ruby в систему хоста.
  2. Проект был написана потому что стандардтный докер-образ из репозитория Jekyll создавал неработающее непонятно что, которое требовало доработки напильником и консультаций с DeepSeek.

Задача проекта - создать приемлемую конфигурацию для автоматической инициализации и ведения блога на Jekyll. Использует docker и bash-скрипты.

Перед работой необходимо сохранить копию файла .env-example с именем .env и заменить в нем переменные на свои. Поддерживает работу с несколькими файлами переменных, для этого нужно явно указать имя файла настроек, например:

  make new ENV=.env-My-Cool-Blog

Все конфигурации работают с авторизацией по ключу, который ищется в папке ~/.ssh/ по указанному имени в файле с переменными.

Команды:

  make <command> <vars>
    <command>:
      clone -  клонировать обьект из git в папку блога
      new -  инициализировать содержимое папки блога файлами Jekyll (используется docker)
      serve - запустить блог локально (используется docker)
      anonimize - установить одного автора комментариев в истории git
    <vars>:
      ENV - имя env-файла, по умолчанию ENV=.env

Содержимое .env файла:

  GITHUB_BRANCH - ветка git (main)
  SITE_DIR - имя локальной папки блога (my-awesome-site)
  GITHUB_REPO - адрес гит-репозитория (git@github.com:username/username.github.io.git)
  GITHUB_KEY_NAME - имя ключа git (ed_username)
  GITHUB_USER_NAME - имя пользователя git, который будет указан в коммите (username)
  GITHUB_USER_EMAIL - е-майл пользователя git, который будет указан коммите (username@username.com)

* Клонировать проект в папку

  make clone

Если папки нет то она автоматически создается. После клонирования вызывается скрипт git-set-local.sh, который прописывает в локальных настройках репозитория использования ключа авторизации из ./ssh а так же устанавливает локальные переменные user.name и user.email для будущих коммитов.

* Запустить блог локально

  make serve

Поднимается docker-конфигурация с превью-доступом по http://127.0.0.1:4000 и hot-reload. После правок в папке блог автоматически пересобирается, обновление содержимого текущей странички не требует перезагрузки.

Если при запуске все падает с ошибкой Jeckull Could not locate Gemfile (GitHubPages работает со своим набором плагинов и для его работы Gemfile не требуется) то нужно в папке с блогом создать файл с именем Gemfile следудщего содержимого:

source "https://rubygems.org"
gem "github-pages", group: :jekyll_plugins

* Создать новый блог

  make new

В папку блога копируется стартовый набор файлов для Jekyll. Если папки нет, то она создается.

* Исправить автора коммитов

  make anonimize

Все user.name и user.email заменяются значениями из .env. Это меняет историю коммитов, после чего git push срабатывает только с ключиком --force

О разработке с DeepSeek

Громадную работу проделал DeepSeek, отвечая на мои вопросы, и по большей части правильно. Правда он обманывал меня, убеждая что на GitHub Pages нужна 4.x.x версия Jekyll, когда там стояла 3.x.x :)

Версия 2.0.1

При проверке работы блога от форка https://github.com/barryclark/jekyll-now выяснилось, что без Gemfile локально конфигурация не поднимается. Пришлось добавить. Если make serve падает с ошибкой "Jeckull Could not locate Gemfile" то файл из репозитория нужно разместить вручную в корне папки блога. Думаю над автоматическим добавлением файла, но чем больше неявной магии при работе тем хуже.

Версия 2.0

Подумал что хорошо бы иметь возможность работать с несколькими папками чтобы если нужно вести сразу несколько дневников на разных сайтах, то не качать template-jekyll каждый раз на каждый дневник, а хранить все папки дневников в одной директории, указывая в команде какой текущий дневник брать. Сделал работу с разными папками через указание в переменной текущей конфигурации ENV=.env-my-awesome-site

О wizard

Подумал о том чтобы сделать некий wizard для формирования .env файла на основе ряда задаваемых вопросов, но так как создание такого файла операция не слишком частая, отказался. Вполне допустимо формировать вручную.

О переносе команд из make в shell

Подумал о том что было бы неплохо перенести команды из make в shell-файлы, вызывая из make только shell-скрипты. Пока удалось обойтись

About

Docker template for jekyllrb local building

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors