summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Shubin <nikita.shubin@maquefel.me>2026-05-19 13:05:49 +0300
committerNikita Shubin <nikita.shubin@maquefel.me>2026-05-19 13:05:49 +0300
commita341441f6a1ff904ecfdd0fc95029bce1ba53803 (patch)
tree886948abe8baca40ca2f6a48c29c45160d818f58
parent340f7b3a58bba63f7a24951908df3a8dfaa84218 (diff)
downloadlandau-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.md83
1 files changed, 83 insertions, 0 deletions
diff --git a/README.md b/README.md
index e69de29..d7ae671 100644
--- a/README.md
+++ b/README.md
@@ -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