2026 Крупный monorepo на мультирегиональном Mac Mesh: affected-сборки, ключи кэша, fan-out и правила триггеров

Полный vs affected · ключи кэша · read-only fan-out · шестишаговый контур

2026 Mac Mesh monorepo affected

Команды с крупным monorepo на нескольких удалённых Mac Mesh узлах теряют CI из‑за дрейфа ключей кэша, рассинхрона графа affected с метками Runner и полузаписанных кэшей. Статья даёт матрицу полная сборка / affected / выделенный heavy‑узел, границы воспроизводимых входов, read-only fan-out и шестишаговый контур. Читайте вместе с fan-out артефактов и Merge Queue.

01

Почему affected на Mac Mesh может быть зелёным без правильного графа

Affected зависит от согласованности графа изменений, lockfile и отпечатка toolchain. Смешение интерактивных сессий и пакетных задач на одном префиксе портит ключи через фантомные зависимости.

Кэш и артефакты про байты; здесь обрезка графа и триггеры.

  1. 01

    Дрейф графа и меток: разные метки Runner дают разные корни workspace.

  2. 02

    Lockfile вне ключа: resolver изменился, старый tarball всё ещё попадает.

  3. 03

    Нет отпечатка toolchain: малый патч Xcode не в manifest.

  4. 04

    Смешение fan-out: читатели пишут в кэш‑префикс.

  5. 05

    Нет отката на полный: меняются codegen или общие ядра, но остаётся только affected.

02

Полный, affected, heavy‑узел: матрица триггеров

Оси для monorepo CI на мультирегиональном пуле удалённых Mac.

ОсьСначала полныйСначала affectedРазделить heavy
Тип измененияcodegen, скрипты сборки, общие native‑границыUI и копирайт в одном пакетеночной bulk и дневные PR на одном пуле
Сигналыдва провала affected или flaky интеграциястабильный граф, проверки lock окCPU свободен, растёт wall time
Ключ кэшаусилить вес toolchain, остановить reusehash lock + hash изменений + OS Runnerизолированный heavy‑префикс, read‑only зеркало
Регионыодна генерация manifest до компиляциилаг зеркала ок, без записи в главный префиксprimary пишет, спутники читают
Откат на полныйдо первого зелёного после protected mergeеженедельная сверка полнымнеделя полных после крупного Xcode

Сначала заморозить воспроизводимые входы, затем настраивать affected.

03

Шестишаговый контур от коммита к fan-out

SSH доверие в пуле по гайду. Океанические байты — lease и manifest из артефактов.

  1. 01

    Тройка входов: commit, digest lockfile, отпечаток xcodebuild в заголовке.

  2. 02

    Один граф: парсинг на фиксированной метке, список пакетов как артефакт.

  3. 03

    Порог полного: codegen, общие ядра, список toolchain → полный шорткат + код аудита.

  4. 04

    Первичная запись: пишет только primary, спутники read-only.

  5. 05

    Проверка fan-out: двойное поле hash+size до переключения указателя.

  6. 06

    Повтор и откат: сеть — экспоненциальный backoff; checksum — инцидент и следующий коммит только полный.

bash
CACHE_KEY="${CI_COMMIT_SHORT_SHA}:${LOCKFILE_SHA256}:$(xcodebuild -version | shasum -a 256 | cut -c1-12)"
export TURBO_REMOTE_CACHE_SIGNATURE="${CACHE_KEY}"
echo "affected=$(npx turbo run build --dry=json | jq -r '.packages | length')" > "${CI_PROJECT_DIR}/affected.meta"

Заметка: Turbo можно заменить на Nx/Bazel; важен единый авторитетный граф и монотонный ключ.

04

Одновременные правки и read-only fan-out

Два PR на общий пакет перемешивают префиксы. Писатель только CI primary.

Сочетать с блокировками мест и конвертами наблюдаемой цепочки.

Внимание: не открывать мультирегиональный fan-out до закрытия прав записи.

  1. A

    Один писатель: на префикс один активный lease записи.

  2. B

    Правило читателя: компиляция после current manifest generation.

  3. C

    Человеческий шлюз: два checksum подряд → заморозить affected до подписанного полного зелёного.

05

Параметры для тикетов и ревью

Ниже стартовые значения планирования, не SLA.

Ночной affected и индексация IDE на одном диске делают CPU-метрику обманчивой.

  • Еженедельная полная сверка: ловит фантомные зависимости.
  • Бюджет парсинга: превысил долю PR — шардировать или выделенный runner.
  • Монотонность поколения: любой апгрейд toolchain bump поколения и уведомляет все регионы.
Сигнал командыСтартовая позаFan-out
Малаяодин регион primary + локальный affectedнизкий fan-out
Мульти PRprimary пишет, спутники читаютсвязка с rsync/объектным хранилищем
Ночные агентыheavy отдельно от интерактивного пулабез истощения ключей

Личные ноутбуки как шлюз одновременно проигрывают сну, блокировке экрана и нестабильному uplink.

Для контрактных узлов и аудируемой полосы аренда Mac Mini в облаке VpsMesh обычно лучший выбор: hit-rate и глубина очереди ревьюятся вместе.

FAQ

Вопросы

Codegen, скрипты сборки, общие native‑поверхности, апгрейды toolchain, до первого зелёного после protected merge. См. матрицу артефактов.

Дайджест коммита/графа, хэш lockfile, отпечаток toolchain, слой ОС runner, плюс поколение и lease id при fan-out. Регионы на странице заказа.

Справочный центр по удалённому доступу и сети, цены перед выбором.