CI: накапливать артефакты сборки (build.sh чистит out при каждом запуске)

This commit is contained in:
2026-10-11 14:41:43 +03:00
parent e4b8e4e820
commit bce6eaf59c
2 changed files with 12 additions and 0 deletions
+2
View File
@@ -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 <тег>` |
+10
View File
@@ -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[@]} ошибок"