Files
admin/.wiki/concepts/books-vds-no-gitea-actions.md

3.2 KiB
Raw Blame History

title, status, tags
title status tags
books-vds Gitea Actions выпилены — сборка только локально (решение vitya 2026-08-23) live
books-vds
ci
gitea-actions
build
decision

Gitea Actions на books-vds — выпилены полностью (директива vitya 2026-08-23)

Решение юзера: никакого Gitea Actions / CI-раннера. Сборка образов — только локально на рабочей машине, деплой — прямыми PUT /api/stacks/<id> в Portainer.

Что выпилено

  • Workflow-файлы удалены и запушены: books/.gitea/workflows/{build,deploy,build-tools,build-sched-daemon}.yml, vds-ops-mcp/.gitea/workflows/build.yml (там был РЕАЛЬНЫЙ автобилд on: push — «автосборка», которую юзер увидел).
  • books-vds (89.253.255.133): раннер вычищен под ноль:
    • systemctl stop/disable gitea-runner.service + rm /etc/systemd/system/gitea-runner.service
    • rm -rf /opt/gitea-runner (бинарник, config.yaml, .runner)
    • docker rm -f GITEA-ACTIONS-TASK-* (job-контейнеры)
    • userdel -r gitea-runner
  • vds-kzntsv: следов не было (проверено).

Процедура локальной сборки + публикации (проверена 2026-08-23)

  1. git archive <sha> | tar -x -C /c/tmp/build (чистый контекст, без node_modules/.git)
  2. VERDACCIO_TOKEN=<jwt> docker build --secret id=verdaccio_token,env=VERDACCIO_TOKEN -f packages/<svc>/Dockerfile -t <svc>:<sha> .
  3. docker save → tar (OCI layout: index.json + blobs/sha256/*)
  4. Заливка блобов curl'ом: HEAD-check → если нет — POST /v2/<repo>/blobs/uploads/PUT <Location>&digest=sha256:<d> с телом (монолитный, Content-Length). Большой слой: cat blob | curl -X PATCH -T - (chunked) + финальный PUT &digest (Location брать из PATCH-ответа). Перед большим чтением файла — sync; echo 3 > /proc/sys/vm/drop_caches (books-vds 3.9GB RAM → OOM на 2GB файле).
  5. Манифест: если index.json → OCI index (multi-arch, у Docker Desktop так) — класть дочерний amd64-манифест (application/vnd.oci.image.manifest.v1+json), не индекс (реестр: MANIFEST_INVALID).
  6. Креды реестра: docker login registry.kzntsv.site -u books-ci --password-stdin (актуальный пароль books-ci — в /opt/books/sched/docker-config.json на books-vds; в /root/.docker/config.json был УСТАРЕВШИЙ → 401 на push).

Gotcha: большие пуши через traefik умирают

docker buildx --push 1.5-2GB слоёв через registry.kzntsv.site (traefik buffering middleware maxRequestBodyBytes=4GB) → Client Closed Request: traefik буферизует тело в RAM vds-kzntsv (1GB free) + чтение с buildkit-кэша медленное + OOM. curl монолитными PUT/PATCH работает (54MB/s). Связано: registry-traefik-buffering-gotcha.