Сравнение зеркал и матрица выбора
Сводная таблица по типам узлов: внутренние и зарубежные зеркала, скорость и стабильность.
| Тип узла / Зеркало | Скорость (типично) | Стабильность | Рекомендация |
|---|---|---|---|
| Внутренние зеркала (Китай, РФ и др.) | Высокая для локального региона | Зависит от провайдера | Использовать, если удалённый Mac в том же регионе; для CI — фиксировать один зеркал. |
| Официальные origin (GitHub, registry.npmjs.org, CDN CocoaPods) | Часто низкая при удалённом доступе | Высокая | Имеет смысл только при хорошем канале до origin или через прокси с кешем. |
| Зарубежные CDN / зеркала (например, узлы в ЕС, США, Сингапур) | Средняя–высокая при близости к дата-центру Mac | Обычно высокая | Оптимально для облачного Mac в том же регионе; комбинировать с докачкой и кешем. |
| Прокси с кешем (например, Artifactory, Verdaccio, зеркало CocoaPods за прокси) | После прогрева кеша — очень высокая | Высокая при наличии докачки | Идеально для CI и команд: один раз скачали — все джобы используют кеш. |
Вывод: зеркало в том же регионе, что и Mac; для CI — кеш и докачка, конфиг зафиксирован.
Homebrew, npm и CocoaPods: настройка и исполняемые команды
Homebrew
# ~/.zshrc или CIexport HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
export HOMEBREW_CACHE="$HOME/.cache/Homebrew"
brew install <formula>
Apple Silicon: eval "$(/opt/homebrew/bin/brew shellenv)". Не удаляйте кеш между CI-запусками.
npm
npm config set registry https://registry.npmmirror.com
npm config set cache "$HOME/.npm_cache"
npm installВ CI один registry и один каталог кеша; повторный npm install докачивает.
CocoaPods
# Podfile: source 'https://cdn.cocoapods.org/'
pod install --repo-updateКешируйте ~/Library/Caches/CocoaPods и Pods.
Докачка и стратегия кеширования
Шаг 1. Не удаляйте кеш между попытками: HOMEBREW_CACHE, npm cache, ~/Library/Caches/CocoaPods и Pods.
Шаг 2. Один зеркало/registry во всех шагах пайплайна.
Шаг 3. При обрыве не запускайте brew cleanup -s или npm cache clean --force перед повторной установкой.
Шаг 4. В CI кеш по ключу: cache: key: $CI_COMMIT_REF_SLUG (GitLab) или аналог в GitHub Actions.
Шаг 5. CocoaPods: повторный pod install докачивает через git; не удаляйте Pods.
- Homebrew:
HOMEBREW_NO_AUTO_UPDATE=1в CI. - npm:
npm ciв CI — по lockfile, быстрее с кешем. - CocoaPods:
pod install --repo-updateпри первом шаге; после сбоя без--repo-update.
Кросс-бордер и оптимизация прокси
- Зеркало или прокси в том же регионе, что и Mac — трафик не через полмира.
ALL_PROXY/HTTPS_PROXYтолько для brew, npm, pod при необходимости.- CI: кеширующий прокси (Artifactory, Verdaccio) рядом с воркером — первый прогон заполняет кеш, дальше докачка при сбоях.
Типичные сбои и FAQ
Таймаут brew install: ближайшее зеркало + HOMEBREW_CACHE; повторный запуск докачивает.
npm ERR! network: проверьте registry и прокси; не очищайте кеш, повторите npm install или npm ci.
CocoaPods медленно: source на CDN или зеркало; кешируйте CocoaPods.
Mac vs Windows в CI: на Windows другие пути и кодировки, нет нативного Homebrew/CocoaPods; удалённый Mac даёт единый пайплайн и докачку (см. таблицу ниже).
Mac и Windows: загрузка зависимостей, зеркала и терминал
Удалённый Mac выгоден при частой загрузке кода и зависимостей:
| Критерий | Удалённый Mac | Windows (локально или в CI) |
|---|---|---|
| Загрузка зависимостей (brew, npm, pods) | Единый терминал (bash/zsh), одни и те же переменные и зеркала | PowerShell/CMD, другие пути; Homebrew на Windows — отдельная история; CocoaPods не нативный |
| Поддержка зеркал | Одинаковая настройка для всех инструментов через export и конфиги | Часто нужны отдельные настройки и обходы для npm/node; зеркала CocoaPods не применимы |
| Терминал и скрипты | Нативный Unix, скрипты CI совпадают с локальной разработкой | Различия в путях, кодировках и поведении; больше расхождений между локальной машиной и CI |
Итог: удалённый Mac с выбранными зеркалами и кешем быстрее и проще для CI и кросс-бордерных команд, чем Windows.
Заключение
Зеркала Homebrew, npm и CocoaPods и настройка докачки с кешем ускоряют сборки и повышают устойчивость. Зафиксируйте зеркала и кеш в конфиге и CI — при обрывах повторный запуск докачает, а не начнёт с нуля. Удалённый Mac предпочтительнее Windows для воспроизводимых пайплайнов и терминала.
Выберите узел Mac и способ доступа
Арендуйте удалённый Mac в регионе с быстрыми зеркалами и настройте CI с докачкой и кешем. Без входа можно оформить заказ или открыть справку по ссылкам ниже.