perf(ui): кап буфера логов 10MB, O(1) вытеснение, дебаунс рендера
- LogBuffer: ленивое вытеснение через start + инкрементальный total убирает O(n^2) копирование entries[1:] при большом числе записей - LogPanel: лимит 10MB (maxLogBytes), перерисовка ленты коалесцируется (200мс) — строка не пересобирается на каждый append - build-publish-ui.ps1: корень проекта задаётся через PROJECT_PATH в .gitea-creds (относительно scripts/), без него — папка рядом со скриптом - тесты: живые записи Entries/Render, кап по байтам
This commit is contained in:
@@ -15,6 +15,9 @@ CI собирает ТОЛЬКО headless-linux (см. .gitea/workflows/ci.yaml)
|
||||
GITEA_TOKEN=write:packages-токен
|
||||
UPDATE_TOKEN=read:package-токен
|
||||
GIT_MAIN_URL=http://gitea.hal9000.home
|
||||
PROJECT_PATH=..\..\foo (опционально) корень собираемого проекта
|
||||
относительно папки scripts/; без него —
|
||||
папка рядом со скриптом
|
||||
- Ветка уже запушена в `main` (VERSION = commit-<sha7> от текущего HEAD).
|
||||
|
||||
Пример:
|
||||
@@ -24,14 +27,11 @@ CI собирает ТОЛЬКО headless-linux (см. .gitea/workflows/ci.yaml)
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$RepoRoot = Split-Path -Parent $ScriptDir
|
||||
$CredsFile = Join-Path $ScriptDir ".gitea-creds"
|
||||
$Package = "ratatoskr"
|
||||
$Owner = "kamelion"
|
||||
$Filename = "ratatoskr-windows-amd64.exe"
|
||||
|
||||
Set-Location $RepoRoot
|
||||
|
||||
# --- 0. Проверка C-тулчейна ---
|
||||
if ($env:CGO_ENABLED -eq "0") { Write-Error "CGO_ENABLED=0 — нужен C-компилятор (MinGW). Уберите его из env." }
|
||||
if (-not (Get-Command gcc -ErrorAction SilentlyContinue)) {
|
||||
@@ -59,6 +59,19 @@ $giteaUrl = $creds["GIT_MAIN_URL"]
|
||||
if (-not $giteaToken) { Write-Error "В $CredsFile нет GITEA_TOKEN (нужен write:packages)." }
|
||||
if (-not $giteaUrl) { Write-Error "В $CredsFile нет GIT_MAIN_URL." }
|
||||
|
||||
# --- 1a. Корень целевого проекта ---
|
||||
# PROJECT_PATH из .gitea-creds (относительно папки scripts/) либо, если не задан,
|
||||
# папка рядом со скриптом (прежнее поведение).
|
||||
$projPath = $creds["PROJECT_PATH"]
|
||||
if ($projPath -ne "" -and $projPath) {
|
||||
$RepoRoot = (Resolve-Path -LiteralPath (Join-Path $ScriptDir $projPath)).Path
|
||||
if (-not $RepoRoot) { Write-Error "PROJECT_PATH не найден: $projPath (относительно $ScriptDir)" }
|
||||
} else {
|
||||
$RepoRoot = Split-Path -Parent $ScriptDir
|
||||
}
|
||||
Set-Location $RepoRoot
|
||||
Write-Host "[root] $RepoRoot"
|
||||
|
||||
# --- 2. Версия = commit-<sha7> текущего HEAD (совпадает с именованием CI) ---
|
||||
$sha = (git rev-parse --short HEAD).Trim()
|
||||
if (-not $sha) { Write-Error "git rev-parse --short HEAD не дал хэш." }
|
||||
|
||||
Reference in New Issue
Block a user