fix(ci): headless в CI, UI-бинарь собирается локально
CI (.gitea/workflows/ci.yaml): - go 1.23 -> 1.25 (modernc.org/sqlite v1.56.0 требует go 1.25; старый CI падал на сборке ещё до тестов). - CGO_ENABLED=0 на уровне workflow: CI собирает/тестирует только headless (ui_noui), не тянет Fyne/glfw и C-компилятор. - timeout 120s -> 300s (worker один ~30-60s на быстрой машине). - build-and-package: только linux/amd64 (headless). Windows-бинарь с UI — локально. Локальная сборка UI + публикация: - scripts/build-publish-ui.ps1: собирает ratatoskr-windows-amd64.exe (CGO_ENABLED=1, WinLibs gcc), вшивает commit-<sha7> + updateToken, пишет .version/.sha256 и публикует в Gitea Packages в ту же версию, что и CI; самопроверка (U4). - scripts/.gitea-creds.example + .gitignore (scripts/.gitea-creds) — секреты не попадают в репозиторий. README: CI=headless + публикация Windows-UI локальным скриптом; обновлён intro (бинарь по умолчанию headless, окно — опционально с cgo).
This commit is contained in:
23
.serena/memories/toolchain/cgo-winlibs-gcc.md
Normal file
23
.serena/memories/toolchain/cgo-winlibs-gcc.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# C-тулчейн для cgo-сборки (Fyne/GLFW) на этой машине
|
||||
|
||||
WinLibs (BrechtSanders.WinLibs.POSIX.UCRT) установлен через winget как
|
||||
portable (zip) в:
|
||||
`C:\Users\darkg\AppData\Local\Microsoft\WinGet\Packages\BrechtSanders.WinLibs.POSIX.UCRT_Microsoft.Winget.Source_8wekyb3d8bbwe\mingw64\bin`
|
||||
|
||||
- gcc 16.1.0, target `x86_64-w64-mingw32`, рантайм `x86_64-ucrt-posix-seh`.
|
||||
- Установлен портативно — НЕ регистрируется в PATH автоматически.
|
||||
- PATH добавлен в `HKCU\Environment` (WinLibs bin первым), но в новых
|
||||
PowerShell-процессах opencode окружение НЕ перечитывается, поэтому в каждой
|
||||
команде, где нужен cgo, добавлять вручную:
|
||||
$p = "...\mingw64\bin"; $env:Path = "$p;$env:Path"; $env:CGO_ENABLED = "1"
|
||||
|
||||
Важно: на машине есть clang-msvc/i686 (D:\Program Files\LLVM, D:\Program
|
||||
Files (x86)\LLVM) — он НЕ подходит для cgo (msvc-таргет + 32bit). Поэтому
|
||||
gcc должен идти первым в PATH.
|
||||
|
||||
Для сборки окна: `CGO_ENABLED=1 go build ./...` (компилирует ui_cgo.go и
|
||||
internal/ui/desktop). Без cgo окно не собирается — приложение headless
|
||||
(ui_noui.go), флаг `--noui` в cmd/ratatoskr/main.go.
|
||||
|
||||
Для запуска GUI нужен реальный TG-конфиг (telegram.token/chat_id), иначе app
|
||||
падает на init.
|
||||
Reference in New Issue
Block a user