Перейти к основному содержимому
Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

Руководство по распределённому выполнению задач

Иллюстрации в этом руководстве созданы участницей сообщества Nx Nicole Oliver

Как работает распределённое выполнение задач в Nx Cloud?

Что такое задача?

Что такое задача? Проект + цель (например, shared-product-ui + test). Каждый запуск содержит множество задач. affected включает shared-product-ui, product-page, shared-e2e-util и shared-ui

С точки зрения Lerna, задача — это цель, запущенная на проекте. Например, цель test, запущенная на проекте shared-product-ui, является задачей. Подробнее о задачах читайте в статье Выполнение задач.

Nx Cloud автоматически планирует ваши CI-задачи

При включении DTE Nx будет планировать задачи ваших команд в CI. Например, вы хотите выполнить три команды для проверки кода: nx affected --target=lint, nx affected --target=test и nx affected --target=build

Представьте, что для каждого PR в CI вы хотите линтить, тестировать и собирать все затронутые проекты. При написании CI-сценария вы не можете заранее знать, сколько проектов будет затронуто каждым PR или сколько времени займёт каждая задача. Как бы тщательно вы ни настраивали процесс, при ручном назначении статичного числа агент-машин для линтинга, тестирования и сборки неизбежно будут простои. Такой подход называется биннингом.

К счастью, при распределённом выполнении задач Nx Cloud может динамически назначать задачи агентам по мере их освобождения.

Nx Cloud эффективно управляет агентами

Nx автоматически распределит задачи между агентами, выделенными в CI.

При настройке DTE вы определяете (1) задачи для выполнения и (2) количество доступных для Nx Cloud агентов. Затем оркестратор Nx Cloud эффективно распределяет задачи по агентам — так, чтобы все агенты были полностью загружены, а процесс CI завершился максимально быстро.

Порядок выполнения задач важен

Но разве одни задачи не зависят от результатов других? Да! Nx учитывает ваше дерево зависимостей, поэтому задачи выполняются в правильном порядке, а их результаты доступны там, где это необходимо.

Некоторые задачи должны выполняться перед другими, но Nx Cloud учитывает это при назначении задач агентам. Подробнее о настройке зависимостей читайте в статье Выполнение задач.

Зачем распределять задачи?

Результат: Ускоренная сборка!

Эффективное распараллеливание CI-процесса между множеством агентов значительно ускоряет выполнение сборки, что помогает разработчикам быстрее находить проблемы и больше успевать.

Сколько это стоит?

Nx Cloud БЕСПЛАТЕН для проектов с открытым исходным кодом. Чтобы начать, напишите на cloud-support@nrwl.io.

Для закрытых проектов первые 500 часов вычислений в месяц бесплатны. Большинство рабочих пространств не превышают этот лимит. Кредитная карта не требуется. После 500 часов стоимость составляет $1 за час вычислений.

Подробности на странице Цены Nx Cloud.

Безопасность

Ваш фактический код не хранится в облаке, но хэшированные входные данные и кешированные результаты задач сохраняются. Можно включить сквозное шифрование этих данных, чтобы никто не мог просмотреть информацию без вашего ключа. Кроме того, если вы хотите разместить Nx Cloud на собственных серверах, вы можете оформить подписку на Nx Cloud Enterprise.

Пример

Пример репозитория, демонстрирующий простоту настройки распределённого выполнения задач, показывающий прирост производительности и сравнение с шардингом/биннингом.

Иллюстрация

Полная страница с визуальным объяснением от Nicole Oliver:

Как работает DTE