Commit Graph

26 Commits

Author SHA1 Message Date
embeddevio b69c3b67e2 fix(#61): не оставлять pip в runtime-образе
ci / lint (push) Successful in 52s
ci / lint (pull_request) Successful in 44s
contract-openapi / openapi-contract (push) Successful in 50s
contract-openapi / ts-client-is-current (push) Successful in 52s
contract-openapi / openapi-contract (pull_request) Failing after 13m2s
ci / unit (push) Has been cancelled
ci / security (push) Has been cancelled
ci / unit (pull_request) Has been cancelled
ci / security (pull_request) Has been cancelled
contract-openapi / ts-client-is-current (pull_request) Has been cancelled
ci / build (push) Has been cancelled
ci / image-scan (push) Has been cancelled
ci / push (push) Has been cancelled
ci / build (pull_request) Has been cancelled
ci / image-scan (pull_request) Has been cancelled
ci / push (pull_request) Has been cancelled
trivy разбирает pip/_vendor/vendor.txt и репортит вендоренные msgpack 1.1.2 /
urllib3 2.7.0 / setuptools 70.3.0 как установленные пакеты — при том что в venv
реально стоят 1.2.4 / 2.8.0 / 84.2.1 (проверено pip list внутри образа staging-cc3621a1).
py3-pip переведён в .build-deps и удаляется вместе с ними; pip в venv и системный
pip вычищаются — runtime не должен содержать инсталлятора.

Refs #61
2026-10-29 22:41:58 +03:00
embeddevio ea63e904b4 fix(#61): x/crypto v0.58.0 + x/net v0.62.0
ci / lint (pull_request) Successful in 47s
contract-openapi / openapi-contract (push) Successful in 53s
contract-openapi / ts-client-is-current (push) Successful in 36s
contract-openapi / openapi-contract (pull_request) Successful in 58s
contract-openapi / ts-client-is-current (pull_request) Successful in 42s
ci / unit (pull_request) Successful in 53s
ci / security (pull_request) Successful in 1m21s
ci / build (pull_request) Successful in 40s
ci / image-scan (pull_request) Failing after 7s
ci / push (pull_request) Has been skipped
ci / lint (push) Successful in 50s
ci / unit (push) Successful in 52s
ci / security (push) Successful in 1m19s
ci / build (push) Successful in 39s
ci / image-scan (push) Failing after 3s
ci / push (push) Has been skipped
После бампа Go 1.26 / alpine 3.23 в образе остались только Go-модули:
  x/crypto v0.43.0 — 5 HIGH (ssh*, фиксы до v0.55.0)
  x/net    v0.45.0 — 16 HIGH (http2/idna/dnsmessage, фиксы до v0.60.0)
Оба подняты на актуальные версии из proxy.golang.org (v0.58.0 / v0.62.0).
В alpine 3.23.7 находок нет (66 пакетов).

Refs #61
2026-10-29 21:51:41 +03:00
embeddevio 20db51b7a2 fix(#61): бамп базовых образов и x/crypto под гейт image-scan
ci / lint (push) Successful in 40s
ci / lint (pull_request) Successful in 40s
contract-openapi / openapi-contract (push) Successful in 51s
contract-openapi / ts-client-is-current (push) Successful in 42s
contract-openapi / openapi-contract (pull_request) Successful in 54s
contract-openapi / ts-client-is-current (pull_request) Successful in 39s
ci / unit (push) Successful in 46s
ci / security (push) Successful in 1m24s
ci / unit (pull_request) Successful in 58s
ci / security (pull_request) Successful in 1m27s
ci / build (push) Successful in 9m44s
ci / build (pull_request) Successful in 35s
ci / image-scan (push) Failing after 7s
ci / image-scan (pull_request) Failing after 3s
ci / push (push) Has been skipped
ci / push (pull_request) Has been skipped
- GO_IMAGE golang:1.25-alpine → golang:1.26-alpine (CVE Go stdlib 1.25.14: CVE-2026-56857 CRITICAL, CVE-2026-111943/78667/97031 HIGH)
- golang.org/x/crypto → v0.43.0 в amneziawg-go (CVE-2025-47913 HIGH)
- runtime alpine:3.21 → alpine:3.23 + apk upgrade (HIGH в пакетах базы)

Refs #61, Refs #18, Refs #17
2026-10-29 21:09:52 +03:00
embeddevio e153143cc1 Merge branch 'main' into feat/18-docker-runtime
ci / lint (push) Successful in 51s
ci / lint (pull_request) Successful in 49s
contract-openapi / openapi-contract (push) Successful in 59s
contract-openapi / ts-client-is-current (push) Successful in 48s
contract-openapi / openapi-contract (pull_request) Successful in 59s
contract-openapi / ts-client-is-current (pull_request) Successful in 43s
ci / unit (push) Successful in 52s
ci / security (push) Successful in 1m21s
ci / unit (pull_request) Successful in 55s
ci / security (pull_request) Successful in 1m20s
ci / build (push) Successful in 36s
ci / build (pull_request) Successful in 36s
ci / image-scan (push) Failing after 3s
ci / image-scan (pull_request) Failing after 3s
ci / push (push) Has been skipped
ci / push (pull_request) Has been skipped
2026-10-29 21:09:40 +03:00
embeddevio a3396b2be6 docs(#21): VERIFICATION-21 §7 — реальные прогоны раунда 3 (коды 0/1/3/4, make→2, env-алиас, DEV_SKIP_BUILD)
Гоняно на 192.168.1.147 на дереве, сверенном по git-blob-SHA: ci.sh 0/4/3/1,
make при коде 4 и 1 отдаёт 2 (контейнерные коды видны в логе), AWG_NS_EXEC_MODE
больше не перекрывается, DEV_SKIP_BUILD=1 даёт AC-1 (200 + healthy), test-deploy
51 passed / 98.86 %, manifests и shellcheck — 0.

Refs #21
Refs #56
2026-10-28 21:58:58 +03:00
embeddevio 9d2222455a docs(#21): VERIFICATION-21 — контракт кодов через make зафиксирован в §6.1, поправка §6.3
Ревью PR #53 (раунд 2) требовало явной фиксации «make → 2, контракт действует на
уровне контейнера» и снятия неверного утверждения про прокидывание
AWG_NS_EXEC_MODE. Прогоны раунда 3 добавляются отдельным коммитом.

Refs #21
Refs #56
2026-10-28 21:58:23 +03:00
embeddevio 94d3a28adf docs(#21): README netns и runbook dev-stand — ci.sh, приоритет AWG_NS_EXEC_MODE, DEV_SKIP_BUILD
Приведение документации к фактическому поведению после ревью PR #53 (раунд 2):
точка входа для CI без make (контракт 0/1/3/4), приоритет AWG_NS_EXEC_MODE над
make-алиасом, сборка без сети (DEV_SKIP_BUILD=1).

Refs #21
Refs #56
2026-10-28 21:58:15 +03:00
embeddevio dbb5d1fe5c deploy: актуальный blob topology.sh после shellcheck-фикса (#56)
Refs #21, Refs #56
2026-10-28 21:39:31 +03:00
embeddevio e6ba503c20 deploy: стабильность netns-ci 5/5 и актуальный blob topology.sh (#56)
Refs #21, Refs #56
2026-10-28 21:38:32 +03:00
embeddevio 156d791020 deploy: таблица git-blob-SHA приведена к раунду 2 (#56)
Refs #21, Refs #56
2026-10-28 21:33:36 +03:00
embeddevio d63b9ceafe deploy: реальные прогоны раунда 2 в VERIFICATION-21 (#56)
- netns-ci в контейнере: причина (ip netns exec/ip -n перемонтируют /sys),
  переход на nsenter, контракт кодов 0/1/3/4 — все четыре воспроизведены.
- гейт покрытия: make test-deploy = 51 passed, 98.86 %.

Refs #21, Refs #15, Refs #56
2026-10-28 21:32:32 +03:00
embeddevio c7f2ea128e deploy: гейт покрытия стенда и тестируемая health-заглушка (#56)
- deploy/api_stub.py: make_server() выделен из main(), main(argv) — тесты поднимают
  настоящий сервер на порту 0 (покрытие api_stub.py 0 % -> 98 %).
- Makefile: make test-deploy (гейт ≥70 % через tests/deploy/pytest.ini),
  test-netns-ci прокидывает AWG_NS_EXEC_MODE.

Refs #21, Refs #15, Refs #56
2026-10-28 21:30:33 +03:00
embeddevio 4aa69132ad netns: nsenter в topology.sh, netns_common и документации (#56)
- topology.sh: ns_exec для всех ip -n <ns> и ip netns exec, коды 0/1/3/4.
- netns_common.py: ns_exec_mode()/ns_exec_direct(), addrs/links/link_is_up через ns_sh.
- docker-compose.test.yml: проброс AWG_NS_EXEC_MODE в netns-сервис.
- tests/netns/README.md: режимы входа в netns, коды возврата, новый pitfall.

Refs #21, Refs #15, Refs #56
2026-10-28 21:30:22 +03:00
embeddevio f5e8272c3a docs(#21): отчёт о фактических прогонах гейтов и AC на 192.168.1.147 (HEAD 7af9caba)
Refs #21 Refs #15
2026-10-22 00:16:00 +03:00
embeddevio 7af9cabad3 docs(#21): в шапке compose описан авто-режим dev-up до #31
Refs #21
2026-10-22 00:13:07 +03:00
embeddevio 73e23bc3e4 fix(#21): verify-dev-stand не даёт ложный [fail] после --force-recreate (перезапрос id)
Refs #21 Refs #15
2026-10-22 00:13:07 +03:00
embeddevio b8f715d38a docs(#21): runbook dev-стенда — быстрый старт, таблица AC, зависимости и откат
Refs #21
Refs #15
2026-10-21 23:50:19 +03:00
embeddevio 59c3ad4918 test(#21): тесты инвариантов compose, Make-цели стенда и обновлённый deploy/README
- tests/deploy/test_compose_manifests.py — 7 тестов на compose-инварианты
  (без Docker, только PyYAML) — готовы к включению в CI (#17);
- Makefile: dev-up/dev-up-stub/dev-down/dev-logs/dev-verify/dev-verify-stub/
  dev-reset/test-netns/test-netns-keep/test-netns-ci/test-manifests/lint-shell,
  переменные HOST_DIR, DASH_PORT, NETNS_ARGS; dev-up без docker падает с внятным
  сообщением, а не трейсбеком;
- deploy/README.md — таблица артефактов и быстрые команды стенда.

Refs #21
Refs #15
2026-10-21 23:50:01 +03:00
embeddevio 7d46df5ede test(#21): проверка AC на Docker-хосте и статические инварианты compose
- verify-dev-stand.sh (`make dev-verify`): AC-1 (health 200, различает
  api=real/stub), AC-2 (маркеры в /config и /data до и после restart и
  --force-recreate, включая проверку на хосте), проверка монтирований и
  health контейнера, JSON-отчёт; коды 0/1/2/3 — ok/regression/blocked-#31/
  blocked-env;
- tests/deploy/validate_compose.py — проверки без Docker: контейнерный порт
  8080, тома /config и /data, healthcheck /api/v1/health, NET_ADMIN и
  /dev/net/tun, ip_forward, лимит логов, privileged netns-раннер и DEV-ONLY
  заглушка. Флаг --require-dockerfile для интеграционного дерева.

Refs #21
Refs #15
2026-10-21 23:49:43 +03:00
embeddevio da1c750297 feat(#21): dev-стенд — compose-файлы, health-заглушка до #31
- docker-compose.dev.yml: отдельный project awg-dash-dev, порт 8080 в контейнере
  (наружу AWG_DASH_PORT, по умолчанию 8180 — 8080 занят на dev-хосте), bind mount
  /opt/awg-dash-dev/{config,data} -> /config,/data, healthcheck /api/v1/health,
  NET_ADMIN/NET_RAW/SYS_MODULE, /dev/net/tun, ip_forward, лимит логов;
- docker-compose.stub.yml + api_stub.py — DEV-ONLY заглушка health: AC-1 требует
  FastAPI-каркаса (#31), до него проверяем плумбинг стенда без обмана отчёта
  (в ответе ивно стоит "stub": true);
- docker-compose.test.yml: привилегированный netns-раннер (CAP_SYS_ADMIN нужен
  для `ip netns add`) + сервис app для API-тестов.

Refs #21
Refs #15
2026-10-21 23:49:11 +03:00
embeddevio d2f6e89d58 fix(#18): создавать /etc/iproute2/rt_tables (в alpine его нет) + понятное предупреждение про ip_forward 2026-10-21 23:47:15 +03:00
embeddevio 789c1854fe fix(#18): amneziawg-tools/src собирает бинарь wg — копируем его как awg (+awg-quick) 2026-10-21 23:42:43 +03:00
embeddevio ec44dcca4e fix(#18): builder на golang:1.25 — amneziawg-go требует go >= 1.25 (падение сборки на 1.23) 2026-10-21 23:38:47 +03:00
embeddevio 71e9891247 feat(#18): супервизор entrypoint.sh и пример .conf 2026-10-21 23:31:04 +03:00
embeddevio 2adc02cb3f feat(#18): multi-stage Dockerfile (awg-tools + runtime alpine) 2026-10-21 23:30:57 +03:00
embeddevio 5647d339b1 chore(#16): каркас пакетов backend, тестов и заглушки ui/deploy/tests 2026-10-21 23:28:59 +03:00