ci / api (push) Canceled after 5m58s
ci / recommender (push) Canceled after 25s
ci / ts (packages + web) (push) Canceled after 0s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (services/api/Dockerfile, storage-agent, storage-agent) (push) Canceled after 0s
release / verify (push) Successful in 1m21s
ci / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 45s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (apps/web/Dockerfile, web, ) (push) Canceled after 0s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (services/api/Dockerfile, api, api) (push) Canceled after 0s
ci / docker (образы собираются — их сервер собирает сам при обновлении) (services/recommender/Dockerfile, recommender, ) (push) Canceled after 0s
ci / mobile (Metro-бандл Android) (push) Canceled after 0s
release / android + release (push) Failing after 9m39s
v0.1.5 got past Metro, but the Gradle daemon was killed mid-bundle on the 8 GB runner. Compile Kotlin inside the Gradle JVM instead of a second daemon, limit Gradle and Metro to two workers, set the heap explicitly and print free/dmesg when the build fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 lines
1.4 KiB
JavaScript
22 lines
1.4 KiB
JavaScript
// Expo SDK 52+ сам настраивает Metro для монорепо (watchFolders, nodeModulesPaths).
|
||
const path = require('node:path');
|
||
const { getDefaultConfig } = require('expo/metro-config');
|
||
|
||
const config = getDefaultConfig(__dirname);
|
||
|
||
// watchFolders включает весь apps/mobile, а без watchman Metro обходит и хэширует каждый файл.
|
||
// android/ и ios/ после prebuild содержат гигабайты промежуточных файлов Gradle/CMake —
|
||
// в release-сборке Metro на них «висит». В JS-бандл из этих папок ничего не попадает.
|
||
const escape = (p) => p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||
const nativeDirs = ['android', 'ios'].map((d) => new RegExp(`^${escape(path.join(__dirname, d) + path.sep)}.*`));
|
||
// Gradle собирает нативные модули прямо в node_modules/<пакет>/android/{build,.cxx,.gradle},
|
||
// а корневой node_modules тоже в watchFolders.
|
||
const nativeBuildOutputs = /[\\/]android[\\/](build|\.cxx|\.gradle)[\\/].*/;
|
||
|
||
config.resolver.blockList = [...[].concat(config.resolver.blockList ?? []), ...nativeDirs, nativeBuildOutputs];
|
||
|
||
// В CI раннер делит 8 ГБ RAM с Gradle: по умолчанию Metro запускает воркер на каждое ядро.
|
||
if (process.env.CI) config.maxWorkers = 2;
|
||
|
||
module.exports = config;
|