axe-web/.gitea/workflows/ci.yml
edadmin 4870f775ed
Some checks failed
web / check (push) Failing after 55s
web / build-web (push) Failing after 4s
web / deploy (push) Has been skipped
ci: runs-on ubuntu-latest matches runner labels (v0.6.1 has no GITEA_RUNNER_LABELS)
2026-10-19 00:46:55 +03:00

78 lines
3.3 KiB
YAML
Raw Permalink 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 (секреты CI_HOST/CI_USER/
# CI_TOKEN) и перезапускает web-сервис стека свежим образом.
#
# Требования к раннеру (см. README бэкенда, раздел «CI/CD (Gitea Actions)»):
# runner.labels: должна покрывать runs-on ниже (ubuntu-latest);
# 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: ubuntu-latest
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: ubuntu-latest
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: ubuntu-latest
container:
image: docker:27-cli
volumes:
# Тома объявляем явно: valid_volumes у раннера — только белый
# список, без заявки внутри джобы в контейнере не попадут ни
# сокет docker, ни постоянный .env стека (/opt/building-mgmt).
- /var/run/docker.sock:/var/run/docker.sock
- /opt/building-mgmt:/opt/building-mgmt
env:
GITEA_HOST: ${{ secrets.CI_HOST }}
GITEA_USER: ${{ secrets.CI_USER }}
GITEA_TOKEN: ${{ secrets.CI_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