# 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