diff options
| -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 |
