feat(scripts): GCC_PATH из .gitea-creds для gcc в build-publish-ui.ps1
Some checks failed
CI / test (push) Failing after 1m14s
CI / build-and-package (amd64, linux) (push) Failing after 1m4s
CI / build-and-package (amd64, windows) (push) Successful in 25s

- проверка gcc перенесена после чтения creds (шаг 1a)
- GCC_PATH дописывается в PATH (абсолютный или относительно scripts/);
  без него — gcc из текущего PATH
- комментарии в шапку: GCC_PATH и уточнённый PROJECT_PATH
This commit is contained in:
ki.sagidullin
2026-08-21 23:12:20 +05:00
parent b87092aa98
commit d9d043ec8e

View File

@@ -9,15 +9,21 @@ CI собирает ТОЛЬКО headless-linux (см. .gitea/workflows/ci.yaml)
Требования: Требования:
- Go с доступным C-компилятором (CGO_ENABLED=1). WinLibs gcc: см. память - Go с доступным C-компилятором (CGO_ENABLED=1). WinLibs gcc: см. память
`mem:toolchain/cgo-winlibs-gcc` — bin нужно добавить в PATH перед запуском. `mem:binator/cgo-winlibs-gcc`. Каталог с gcc.exe можно задать через
GCC_PATH (ниже); если не задан — gcc должен быть уже в PATH.
- Файл scripts/.gitea-creds (git-ignored, см. ниже) с токенами. - Файл scripts/.gitea-creds (git-ignored, см. ниже) с токенами.
Формат (по одной `ключ=значение` на строку): Формат (по одной `ключ=значение` на строку):
GITEA_TOKEN=write:packages-токен GITEA_TOKEN=write:packages-токен
UPDATE_TOKEN=read:package-токен UPDATE_TOKEN=read:package-токен
GIT_MAIN_URL=http://gitea.hal9000.home GIT_MAIN_URL=http://gitea.hal9000.home
PROJECT_PATH=..\..\foo (опционально) корень собираемого проекта PROJECT_PATH=..\..\foo (опционально) корень проекта (где лежат cmd/
относительно папки scripts/; без него — и go.mod); относительно папки scripts/ или
папка рядом со скриптом абсолютный; без него — папка рядом с
скриптом
GCC_PATH=D:\MinGW\bin (опционально) каталог, где лежит gcc.exe;
дописывается в PATH перед проверкой и
сборкой; абсолютный или относительно
scripts/; без него — gcc из текущего PATH
- Ветка уже запушена в `main` (VERSION = commit-<sha7> от текущего HEAD). - Ветка уже запушена в `main` (VERSION = commit-<sha7> от текущего HEAD).
Пример: Пример:
@@ -32,14 +38,8 @@ $Package = "ratatoskr"
$Owner = "kamelion" $Owner = "kamelion"
$Filename = "ratatoskr-windows-amd64.exe" $Filename = "ratatoskr-windows-amd64.exe"
# --- 0. Проверка C-тулчейна --- # --- 0. Проверка флага CGO_ENABLED (не зависит от creds) ---
if ($env:CGO_ENABLED -eq "0") { Write-Error "CGO_ENABLED=0 — нужен C-компилятор (MinGW). Уберите его из env." } if ($env:CGO_ENABLED -eq "0") { Write-Error "CGO_ENABLED=0 — нужен C-компилятор (MinGW). Уберите его из env." }
if (-not (Get-Command gcc -ErrorAction SilentlyContinue)) {
Write-Host "gcc не найден в PATH. Пример (WinLibs):"
Write-Host ' $p = "<...>\mingw64\bin"; $env:Path = "$p;$env:Path"'
Write-Error "C-компилятор gcc не найден."
}
Write-Host "[ok] gcc: $((gcc --version | Select-Object -First 1))"
# --- 1. Чтение секретов --- # --- 1. Чтение секретов ---
if (-not (Test-Path $CredsFile)) { if (-not (Test-Path $CredsFile)) {
@@ -59,7 +59,30 @@ $giteaUrl = $creds["GIT_MAIN_URL"]
if (-not $giteaToken) { Write-Error "В $CredsFile нет GITEA_TOKEN (нужен write:packages)." } if (-not $giteaToken) { Write-Error "В $CredsFile нет GITEA_TOKEN (нужен write:packages)." }
if (-not $giteaUrl) { Write-Error "В $CredsFile нет GIT_MAIN_URL." } if (-not $giteaUrl) { Write-Error "В $CredsFile нет GIT_MAIN_URL." }
# --- 1a. Корень целевого проекта --- # --- 1a. C-тулчейн (gcc): GCC_PATH из creds дописывается в PATH ---
# Путь абсолютный либо относительно папки scripts/; без GCC_PATH — gcc
# берётся из уже установленного PATH.
$gccPath = $creds["GCC_PATH"]
if ($gccPath -ne "" -and $gccPath) {
$gccAbs = Join-Path $ScriptDir $gccPath
$gccBin = (Resolve-Path -LiteralPath $gccAbs -ErrorAction SilentlyContinue).Path
if (-not $gccBin) {
$gccAbs = $gccPath # не нашлось относительно scripts/ — пробуем как абсолютный
$gccBin = (Resolve-Path -LiteralPath $gccAbs -ErrorAction SilentlyContinue).Path
}
if (-not $gccBin) { Write-Error "GCC_PATH не найден: $gccPath (или относительно $ScriptDir)" }
$env:Path = "$gccBin;$env:Path"
Write-Host "[gcc] PATH += $gccBin"
}
if (-not (Get-Command gcc -ErrorAction SilentlyContinue)) {
Write-Host "gcc не найден в PATH. Пример (WinLibs):"
Write-Host ' D:\MinGW\bin, затем:
GCC_PATH=D:\MinGW\bin — в scripts/.gitea-creds'
Write-Error "C-компилятор gcc не найден."
}
Write-Host "[ok] gcc: $((gcc --version | Select-Object -First 1))"
# --- 1b. Корень целевого проекта ---
# PROJECT_PATH из .gitea-creds (относительно папки scripts/) либо, если не задан, # PROJECT_PATH из .gitea-creds (относительно папки scripts/) либо, если не задан,
# папка рядом со скриптом (прежнее поведение). # папка рядом со скриптом (прежнее поведение).
$projPath = $creds["PROJECT_PATH"] $projPath = $creds["PROJECT_PATH"]