chore: настроить CI с автотегированием и генерацией ARCHITECTURE.md

- generated/ возвращён в git
- CI: генерация docs → коммит generated/ → тег (semver patch) → билд → деплой
- защита от цикла через [skip ci] в коммите CI
- Dockerfile упрощён: убраны хаки с sed и cp в public
- ссылка на ARCHITECTURE.md ведёт на raw-файл в Gitea
This commit is contained in:
2026-04-19 01:17:43 +03:00
parent c53ee8025f
commit 3b3222c7a3
6 changed files with 724 additions and 6 deletions

View File

@@ -5,11 +5,64 @@ on:
branches: [main]
jobs:
docker:
docs:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
- name: Генерация ARCHITECTURE.md
run: |
npm ci
npm run docs
- name: Коммит generated/
run: |
git config user.name "CI Bot"
git config user.email "ci@gromlab.ru"
git add generated/
if git diff --cached --quiet; then
echo "ARCHITECTURE.md не изменился, пропуск"
echo "CHANGED=false" >> $GITHUB_ENV
else
git commit -m "docs: обновить ARCHITECTURE.md [skip ci]"
git push origin main
echo "CHANGED=true" >> $GITHUB_ENV
fi
- name: Автоматический тег (semver patch)
run: |
LAST_TAG=$(git tag -l 'v*' --sort=-v:refname | head -1)
if [ -z "$LAST_TAG" ]; then
NEW_TAG="v0.1.0"
else
MAJOR=$(echo "$LAST_TAG" | cut -d. -f1)
MINOR=$(echo "$LAST_TAG" | cut -d. -f2)
PATCH=$(echo "$LAST_TAG" | cut -d. -f3)
NEW_TAG="${MAJOR}.${MINOR}.$((PATCH + 1))"
fi
git tag "$NEW_TAG"
git push origin "$NEW_TAG"
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
echo "Создан тег: $NEW_TAG"
docker:
runs-on: ubuntu-latest
needs: docs
if: "!contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: main
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3