axe-web/.gitea/workflows/ci.yml
edadmin ca3392157a
Some checks are pending
web / check (push) Waiting to run
web / build-web (push) Waiting to run
web / deploy (push) Blocked by required conditions
feat: prod web image + Gitea Actions, demo chips removed
2026-10-18 22:44:06 +03:00

71 lines
2.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CI/CD веба через Gitea Actions (встроенный в Gitea, раннер на сервере).
#
# push/PR: проверка синтаксиса JS + сборка прод-образа (локальные теги
# latest и короткий SHA, реестр не используется).
# Деплой — ТОЛЬКО ручной запуск workflow (кнопка Run workflow): job скачивает
# compose-файлы репо бэкенда по API (секреты GITEA_HOST/GITEA_USER/
# GITEA_TOKEN) и перезапускает web-сервис стека свежим образом.
#
# Требования к раннеру (см. README бэкенда, раздел «CI/CD (Gitea Actions)»):
# runner.labels: [docker] — совпадает с runs-on ниже;
# container.valid_volumes: /var/run/docker.sock, /opt/building-mgmt —
# сокет docker для сборки/деплоя и каталог стека с .env.
name: web
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
check:
runs-on: docker
container: node:20-alpine
steps:
- uses: actions/checkout@v4
- name: Синтаксис JS
run: |
node --check js/api.js
node --check js/app.js
build-web:
runs-on: docker
container: docker:27-cli
steps:
- uses: actions/checkout@v4
- name: Сборка прод-образа
run: |
short="$(echo "$GITHUB_SHA" | cut -c1-7)"
docker build -t building-mgmt-web:latest -t "building-mgmt-web:${short}" .
deploy:
if: github.event_name == 'workflow_dispatch'
needs: build-web
runs-on: docker
container: docker:27-cli
env:
GITEA_HOST: ${{ secrets.GITEA_HOST }}
GITEA_USER: ${{ secrets.GITEA_USER }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
steps:
- name: Compose-файлы бэкенда (compose.prod.yaml)
run: |
# compose-CLI и утилиты в джоб-контейнере; docker — через
# смонтированный сокет хоста (valid_volumes у раннера).
apk add --no-cache docker-cli-compose
auth="$(printf '%s:%s' "$GITEA_USER" "$GITEA_TOKEN" | base64 | tr -d '\n')"
wget -q -O /tmp/axe.tar.gz \
--header="Authorization: Basic ${auth}" \
"http://${GITEA_HOST}/api/v1/repos/edadmin/axe/tarball/main"
mkdir -p /opt/building-mgmt
tar -xzf /tmp/axe.tar.gz -C /tmp
cp /tmp/axe-*/compose.prod.yaml /opt/building-mgmt/
- name: Перезапуск web-сервиса стека
# --no-deps: трогаем только web, api/db/minio не пересоздаются.
run: |
docker compose -p building-mgmt \
--env-file /opt/building-mgmt/.env \
-f /opt/building-mgmt/compose.prod.yaml \
up -d --no-deps web