diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 66c30d3..e6d634a 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -115,6 +115,7 @@ jobs: # библиотек, но плагин RN не объявляет эту зависимость, и с прогретым кэшем CMake успевал раньше codegen. # Оба вызова идут через один демон Gradle (одинаковые jvmargs), поэтому второй не платит за старт JVM. run: | + set -o pipefail npx expo prebuild --platform android --clean --no-install cd android # nice / ionice: сборка уступает CPU и диск всему остальному на машине @@ -124,7 +125,18 @@ jobs: if grep -q '^newArchEnabled=true' gradle.properties; then "${gradle[@]}" generateCodegenArtifactsFromSchema fi - "${gradle[@]}" assembleRelease -x lintVitalRelease + # Постоянный кэш Gradle мог побиться (VM раннера перезагрузили посреди сборки): «Could not read workspace + # metadata» — удаляем кэш трансформаций и повторяем один раз, а не падаем до ручной чистки. + if ! "${gradle[@]}" assembleRelease -x lintVitalRelease 2>&1 | tee /tmp/gradle.log; then + if grep -qE "Could not read workspace metadata|Corrupted|is corrupt" /tmp/gradle.log; then + echo "::warning::кэш Gradle повреждён — чистим transforms и собираем заново" + ./gradlew --stop || true + rm -rf ~/.gradle/caches/*/transforms ~/.gradle/caches/transforms-* + "${gradle[@]}" assembleRelease -x lintVitalRelease + else + exit 1 + fi + fi ./gradlew --stop - name: Диагностика сбоя (диск, память, OOM)