From bce6eaf59cd9f6df7d82c4eec74863d59599465c Mon Sep 17 00:00:00 2001 From: Roman Terekhov Date: Sun, 11 Oct 2026 14:41:43 +0300 Subject: [PATCH] =?UTF-8?q?CI:=20=D0=BD=D0=B0=D0=BA=D0=B0=D0=BF=D0=BB?= =?UTF-8?q?=D0=B8=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B0=D1=80=D1=82=D0=B5=D1=84?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D1=8B=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8?= =?UTF-8?q?=20(build.sh=20=D1=87=D0=B8=D1=81=D1=82=D0=B8=D1=82=20out=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci/README.md | 2 ++ ci/build-firmwares.sh | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/ci/README.md b/ci/README.md index 9589ea06..3f44c181 100644 --- a/ci/README.md +++ b/ci/README.md @@ -192,3 +192,5 @@ tracker_v2, T-Deck, T-Echo Card, T114, T190, M9 и три варианта Mesha | на push запускается сборка сотен env | не выставлен `WORKFLOW_DIRS = .gitea/workflows` | | `405 Method Not Allowed` при создании тега | в Gitea тег создаётся через `POST /repos/{owner}/{repo}/tags`, у `/git/refs` метода POST нет | | `python3: command not found` или пустой вывод в Git Bash | это заглушка Microsoft Store; задайте `PYTHON3=/c/.../python.exe` (это делает `ci/build-local.ps1`) | +| в `out/` оказались файлы только последней платы | `build.sh` при каждом запуске делает `rm -rf out`; `ci/build-firmwares.sh` копит результат в `dist/` и в конце складывает всё в `out/` | +| нужно опубликовать уже собранное, без пересборки | `ci/build-local.ps1 -SkipBuild -Publish -Tag <тег>` | diff --git a/ci/build-firmwares.sh b/ci/build-firmwares.sh index e1faa127..fc912492 100644 --- a/ci/build-firmwares.sh +++ b/ci/build-firmwares.sh @@ -58,7 +58,10 @@ DEFAULT_TARGETS=( export FIRMWARE_VERSION="${FIRMWARE_VERSION:-ci}" OUT_DIR="${OUT_DIR:-out}" +DIST_DIR="${DIST_DIR:-dist}" # накопитель: build.sh чистит out/ на каждом запуске mkdir -p "$OUT_DIR" +rm -rf "$DIST_DIR" +mkdir -p "$DIST_DIR" targets=() if [[ -n "${MATCH:-}" ]]; then @@ -91,12 +94,19 @@ for env in "${targets[@]}"; do echo "===== $env =====" if bash build.sh build-firmware "$env"; then echo "----- $env: OK" + # build.sh в начале своей работы делает `rm -rf out`, поэтому файлы каждой + # следующей платы затирают предыдущие: копим их в отдельном каталоге + cp -f "$OUT_DIR"/* "$DIST_DIR"/ 2>/dev/null || true else echo "----- $env: ОШИБКА" failed+=("$env") fi done +# возвращаем накопленное в привычный out/ (его читают CI-артефакты и скрипты) +mkdir -p "$OUT_DIR" +cp -f "$DIST_DIR"/* "$OUT_DIR"/ 2>/dev/null || true + echo echo "===== итог =====" echo "собрано ${#targets[@]} - ${#failed[@]} ошибок"