diff options
| author | Nikita Shubin <nikita.shubin@maquefel.me> | 2026-05-19 13:05:49 +0300 |
|---|---|---|
| committer | Nikita Shubin <nikita.shubin@maquefel.me> | 2026-05-19 13:05:49 +0300 |
| commit | a341441f6a1ff904ecfdd0fc95029bce1ba53803 (patch) | |
| tree | 886948abe8baca40ca2f6a48c29c45160d818f58 | |
| parent | 340f7b3a58bba63f7a24951908df3a8dfaa84218 (diff) | |
| download | landau-suite-a341441f6a1ff904ecfdd0fc95029bce1ba53803.tar.gz landau-suite-a341441f6a1ff904ecfdd0fc95029bce1ba53803.zip | |
doc: update README.md
Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
| -rw-r--r-- | README.md | 83 |
1 files changed, 83 insertions, 0 deletions
@@ -0,0 +1,83 @@ +# Landau site suite + +## Quick start guide + +Состоит из трёх репозиториев: + +Внешние репозитории: + +- landau.git (путь на сервере /home/landaudeploy/landau.git) + Это репозиторий со статьями, новостями, контентом и т.д. сюда входит только ползная информация без лишней инфрастурктуры, также сюда могут входить checkpatch, проверка офрфографии и т.п. всё что связано с конкретным способом сборки и обработки (например hugo), сюда входить не должны. + +- landau-hacker (путь на сервере /home/landaudeploy/landau_suite/template/themes/landau-hacker) + Это просто наша тема для сайта, выделенная в отдельный репозиторий. + +Внутренний репозиторий: + +- landau_suite (путь на сервере /home/landaudeploy/landau_suite) + Сюда входит вся инфраструктура, в данном случае для hugo: + - tempalate (конфиг и файлы hugo необходимые для сборки сайта) + - template/themes (куда также входит landau-hacker как сабмодуль) + +### Общая схема работы + +landau.git - лежит на сервере как bare git репозиторий для которого настроен git hook post-recieve: + +```hooks/post-receive +#!/bin/bash + +echo "post-receive launched $(date)" >> /tmp/hook_debug.log + +set -x + +unset GIT_DIR + +BASE_DIR="/home/landaudeploy/landau_suite" +HUGO="$BASE_DIR/hugo" + +while read oldrev newrev refname +do + branch="${refname#refs/heads/}" + [[ "$refname" = refs/heads/* ]] || continue + + CONTENT_DIR="$BASE_DIR/content/$branch" + mkdir -p "$CONTENT_DIR" + + DEPLOY_DIR="$BASE_DIR/deploy/$branch" + mkdir -p "$DEPLOY_DIR" + + git --work-tree="$CONTENT_DIR" checkout -f "$branch" + + make -C "$BASE_DIR" HUGO="$HUGO" CONTENT="$CONTENT_DIR" DEPLOY="$DEPLOY_DIR" +done +``` + +Общий смысл следующий, когда мы делаем push в landau.git: + +- каждая измененная ветка разворачивается в $BASE_DIR/content/$branch с помощью worktree; +- затем для каждой вызывается сборка и результатирущие файлы появляются в $BASE_DIR/deploy/$branch; + +Корень сайта указывает на /home/landaudeploy/landau_suite/deploy/public, что является символической ссылкой на main. + +Для работы git hook требуется указание директории landau_suite. + +То есть на данный момент обновление сайта происходит простым push в ветку main. + +## Hugo + +Сам hugo, одно жизненно важное исправление, которое позволяет держать contentDir отдельно от шаблона сайта (ветка nshubin/git_purism) остальные исправления комплиментарные: + +- https://gitflic.ru/project/maquefel/hugo.git (nshubin/git_purism) + +Использован zig-0.15.1 для статической сборки с musl (не glibc) + +``` +$ CGO_ENABLED=1 GOOS=linux GOARCH=amd64 CC="zig cc -target x86_64-linux-musl" CXX="zig c++ -target x86_64-linux-musl" go build --tags extended -ldflags '-extldflags "-static"' -o hugo +$ ls -lah hugo +-rwxr-xr-x 1 maquefel users 139M May 17 08:09 hugo +$ strip hugo +$ ls -lah hugo +-rwxr-xr-x 1 maquefel users 53M May 17 08:13 hugo +$ file hugo +hugo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=u2UlnDikg6PiLZpmb49r/fzU1KYICg3ZTYqp8o1z3/CDiKIZ7CkmOcQoabnJdp/F3rP0MwJRD9ZxEV04ux1, stripped +```
\ No newline at end of file |
