feat: добавить хаб документаций
- добавлен React/Vite-лендинг с карточками документаций - добавлена генерация корневого llms.txt из конфига документов - добавлена сборка SLM Design через VitePress - добавлены Dockerfile, Caddyfile и Gitea CI/CD - настроены контекстные Link headers для llms.txt
This commit is contained in:
126
.gitea/workflows/ci.yml
Normal file
126
.gitea/workflows/ci.yml
Normal file
@@ -0,0 +1,126 @@
|
||||
name: CI/CD Pipeline
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 24
|
||||
|
||||
- name: Установка зависимостей
|
||||
run: npm ci
|
||||
|
||||
- name: Сборка документации SLM Design
|
||||
run: npm run docs:build:slm-design
|
||||
|
||||
- name: Генерация корневых артефактов
|
||||
run: npm run site:generate
|
||||
|
||||
- name: Сборка лендинга
|
||||
run: npm run build
|
||||
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: "github.ref == 'refs/heads/master' && !contains(github.event.head_commit.message, '[skip ci]')"
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: master
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Setup variables
|
||||
run: |
|
||||
DOCKER_REGISTRY=$(echo "${{ gitea.server_url }}" | sed 's|https://||')
|
||||
echo "DOCKER_REGISTRY=$DOCKER_REGISTRY" >> $GITHUB_ENV
|
||||
REGISTRY_IMAGE="$DOCKER_REGISTRY/$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')"
|
||||
echo "REGISTRY_IMAGE=$REGISTRY_IMAGE" >> $GITHUB_ENV
|
||||
|
||||
- name: Login to Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.DOCKER_REGISTRY }}
|
||||
username: ${{ secrets.CR_USER }}
|
||||
password: ${{ secrets.CR_TOKEN }}
|
||||
|
||||
- name: Extract metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env.REGISTRY_IMAGE }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=sha,prefix=
|
||||
type=raw,value=latest
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
provenance: false
|
||||
sbom: false
|
||||
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
needs: docker
|
||||
if: "github.ref == 'refs/heads/master' && !contains(github.event.head_commit.message, '[skip ci]')"
|
||||
steps:
|
||||
- name: Setup variables
|
||||
run: |
|
||||
DOCKER_REGISTRY=$(echo "${{ gitea.server_url }}" | sed 's|https://||')
|
||||
echo "DOCKER_REGISTRY=$DOCKER_REGISTRY" >> $GITHUB_ENV
|
||||
REGISTRY_IMAGE="$DOCKER_REGISTRY/$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')"
|
||||
echo "REGISTRY_IMAGE=$REGISTRY_IMAGE" >> $GITHUB_ENV
|
||||
|
||||
- name: Настройка SSH
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
ssh-keyscan -H 188.225.47.78 >> ~/.ssh/known_hosts
|
||||
|
||||
- name: Деплой
|
||||
run: |
|
||||
ssh -i ~/.ssh/deploy_key root@188.225.47.78 bash -s <<'SCRIPT'
|
||||
set -e
|
||||
IMAGE="${{ env.REGISTRY_IMAGE }}:latest"
|
||||
CONTAINER="docs"
|
||||
|
||||
echo '${{ secrets.CR_TOKEN }}' | docker login ${{ env.DOCKER_REGISTRY }} -u '${{ secrets.CR_USER }}' --password-stdin
|
||||
|
||||
OLD_IMAGE_ID=$(docker images -q "$IMAGE" 2>/dev/null || true)
|
||||
docker pull "$IMAGE"
|
||||
|
||||
docker stop "$CONTAINER" 2>/dev/null || true
|
||||
docker rm "$CONTAINER" 2>/dev/null || true
|
||||
docker run -d --name "$CONTAINER" --network web --restart unless-stopped "$IMAGE"
|
||||
|
||||
NEW_IMAGE_ID=$(docker images -q "$IMAGE")
|
||||
if [ -n "$OLD_IMAGE_ID" ] && [ "$OLD_IMAGE_ID" != "$NEW_IMAGE_ID" ]; then
|
||||
docker rmi "$OLD_IMAGE_ID" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
docker image prune -af --filter "label=org.opencontainers.image.title=$CONTAINER"
|
||||
docker image prune -f
|
||||
docker builder prune -f 2>/dev/null || true
|
||||
|
||||
docker ps --filter "name=$CONTAINER"
|
||||
SCRIPT
|
||||
Reference in New Issue
Block a user