Server deployDocker ComposeNginx / TLS
Release formati.hreleaseSHA-256 + Ed25519
Qurilma himoyasiA/B + rollbackHar slot 3 MiB
Ushbu sahifada

01Production topologiyasi#

Ajratilgan deploy chegaralari

Nginx TLS’ni yakunlaydi va trafikni loopback’da tinglayotgan servisga beradi. API, Admin, public sayt va PostgreSQL Compose orqali boshqariladi. Ushbu docs sayt alohida statik root’dan beriladi; API yoki DB credential talab qilmaydi.

Yuklab olishSVG PNG Mermaid
QismJoriy model
ComputeBitta Linux host; multi-zone HA kuzatilmagan.
Ma’lumotlar bazasiPostgreSQL 17, persistent Docker volume, pg_isready healthcheck.
IngressNginx, alohida hostname’lar, Let’s Encrypt TLS.
Artefakt saqlashPrivate R2; production’da lokal storage fallback yo‘q.
IaC holatiCompose, Nginx va shell/systemd konfiguratsiyasi repository’da. Terraform/Pulumi resource graph mavjudligi tasdiqlanmagan.

02Server release va rollback#

  • Kod snapshot’i va konfiguratsiya tekshiriladi; unit/integration/build testlari o‘tkaziladi.
  • Versiyalangan image yaratiladi. Schema o‘zgarsa, migration faqat backup va moslik tekshiruvidan keyin bajariladi.
  • Kerakli servis yangilanadi; API/database/object storage health hamda autentifikatsiya smoke testlari tekshiriladi.
  • Oldingi image saqlanadi. Xatoda image qaytariladi; database restore oddiy image rollback’dan alohida, boshqariladigan operatsiya.

Repository’da Tauri desktop bundle’lari uchun GitHub Actions mavjud. Bu native SwiftUI, API va firmware release’larining to‘liq avtomatik production CI/CD orqali tarqatilishini isbotlamaydi. Joriy release yo‘li lokal testlar va operator tomonidan boshqariladigan deploy’ni ham o‘z ichiga oladi.

03Imzolangan release paketi#

Paket tarkibi
Hamroh-X.Y.Z-BNN.hrelease
├── firmware.bin
├── release-metadata.json
├── firmware.sig
├── release-metadata.sig
└── release-notes.txt

Paket deterministic ZIP: ruxsat etilgan beshta fayl, qat’iy hajm va yo‘l cheklovlari. Metadata version, build, securityVersion, protocolVersion, hardwareRevision, binarySize, SHA, source commit, build timestamp, provisioning, A/B va rollback bayroqlarini hamda build evidence hash’larini saqlaydi.

  • ESP-IDF 5.5.2 bilan isolated clean build; normal customer firmware’da provisioning o‘chiq.
  • Firmware va canonical metadata alohida Ed25519 imzoga ega. Private kalit lokal/offline qoladi.
  • Server SHA, ikkala imzo, ESP image header, hardware, build/security va konfiguratsiyani qayta tekshiradi.
  • Path traversal, ortiqcha fayl, symlink, dublikat entry va mos kelmaydigan immutable obyekt rad etiladi.

04Release lifecycle va tarqatish#

Alohida tasdiqlanadigan bosqichlar

DRAFT tekshirilgach READY bo‘ladi. Faqat ROLLING_OUT holatidagi release qurilma uchun candidate bo‘lishi mumkin. PAUSED yangi takliflarni to‘xtatadi, ammo allaqachon boshlangan transferni masofadan ortga qaytarmaydi.

Yuklab olishSVG PNG Mermaid

INTERNAL uchun aniq bitta mos target talab qilinadi. BETA/STABLE foizli cohort siyosatidan foydalanadi. Channel, hardware, version, build/security va target tekshiruvlari release taklifini cheklaydi. Artefaktni boshqa kanalga ko‘chirish uning binary mazmunini o‘zgartirmaydi.

05Normal mijoz OTA oqimi#

Yuklashdan boot tasdig‘igacha

Desktop faylni tekshiradi, bitta eksklyuziv USB descriptor’ni ushlab turadi va READY kelmaguncha chunk yubormaydi. Firmware inactive slot’ga yozadi. Muvaffaqiyat reboot’dan keyingi versiya/build va VALID tasdig‘iga bog‘liq.

Yuklab olishSVG PNG Mermaid
BosqichAsosiy invariant
BEGIN → PREPARING → READYMetadata qabul qilish va flash tayyorlash alohida timeout bilan. READY oldidan byte 0 yo‘q.
TransferChegaralangan chunk/window, cumulative ACK, tekshirilgan offset, TIOCEXCL va same FD.
OTA_ENDTo‘liq hajm, SHA va qurilmadagi imzo tekshiruvi; shundan keyin boot target tanlanadi.
PENDING_VERIFYGrace interval’dan keyin identity va runtime readiness tekshiriladi; mark-valid va security commit tashxislanadi.
VALID / rollbackCritical failure sababi saqlanadi; ESP-IDF rollback himoyasi saqlanadi. Optional touch xatosi darhol panic emas.

06Monitoring, backup va tiklash#

Health endpoint API, PostgreSQL va object storage holatini qaytaradi. Authenticated heartbeat eng so‘nggi firmware/build/slot va last-seen qiymatlarini saqlaydi; default javob keyingi heartbeat’ni 300 soniyaga belgilaydi. Bu kuzatuv signalidir, SLA o‘lchovi emas.

NazoratDalil holati
Health va heartbeatKodda mavjud; production health tekshiruvi o‘tkazilgan.
Log rotationCompose: json-file, 10 MB × 3 fayl.
DB backuppg_dump script va restore runbook mavjud. Offsite scheduler, encryption va oxirgi restore drill dalili bu snapshot’da tasdiqlanmagan.
RPO / RTOTasdiqlangan o‘lchov yo‘q; biznes talabi va restore mashqi bilan belgilanadi.
Silicon securitySecure Boot / flash encryption uchun alohida manufacturing tekshiruvi kerak; eFuse yozish oddiy deploy tarkibiga kirmaydi.

07Test dalillari va keyingi talablar#

1.6.8 Build 53 lokal release tekshiruvida ESP-IDF clean build, mustaqil signature/SHA verifikatsiyasi, 33 ta package testi, 18 ta host regressiya guruhi va 12 ta LVGL render holati PASS bo‘ldi. Exact ELF fixed serial/handler stack budget 288 bayt; bu physical runtime high-water o‘lchovi emas.

Oldingi normal OTA zanjiri test qurilmada ishlaganligi qayd etilgan. Biroq yangi 1.6.8 image uchun ushbu hujjat physical acceptance yoki yangi transfer tezligini tasdiqlamaydi. PTY benchmark natijalarini real USB/flash vaqtiga tenglashtirish mumkin emas.

  • Release gate: alohida ruxsatli bir qurilma OTA, power-loss/rollback sinovi va post-boot heartbeat tekshiruvi.
  • Operatsion gate: mustaqil security review, dependency patch, backup/restore mashqi va o‘lchanadigan RPO/RTO.
  • Scale gate: yuklama sinovi, shared throttling, DB recovery va server fault-domain ajratilishi.
Manba va dalillar

Hujjat amaldagi source snapshot va o‘qish rejimidagi infratuzilma tekshiruviga asoslangan. Hashlar tekshirilgan fayllarni aniqlaydi; bu mustaqil audit xulosasi emas.

  • infra/docker-compose.production.yml
  • infra/nginx/hamroh.conf
  • infra/backup-db.sh
  • .github/workflows/desktop-build.yml
  • scripts/prepare_firmware_release.sh
  • packages/release-package/index.js
  • apps/api/src/storage/storage.service.ts
  • apps/api/src/firmware/lifecycle.ts
  • apps/api/src/firmware/rollout.ts
  • components/user_app/user_app.c
  • docs/normal-release-1.6.8.md
  • docs/ota-display-throughput-2026-09-09.md
Yuklab olish: evidence.json
Keyingi hujjatArxitektura
Hamroh IO · Texnik hujjatlar · 2026-09-10

Hujjatlardan qidirish