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[@]} ошибок"