跳到主要内容

分布式任务执行指南

本指南中的插图由 Nrwlian Nicole Oliver 创作

Nx Cloud 中的分布式任务执行是如何工作的?

什么是任务?

什么是任务?项目 + 目标(即 shared-product-ui + test)。每次运行包含多个任务。受影响的测试包含 shared-product-ui、product-page、shared-e2e-util 和 shared-ui

从 Lerna 的角度来看,任务是在项目上运行的目标。例如,在 shared-product-ui 项目上运行 test 目标是一个任务。有关任务的更多信息,请参见运行任务文章

Nx Cloud 自动调度您的 CI 任务

当您打开 DTE 时,Nx 将在 CI 中调度命令的任务。例如,假设您想运行这 3 个命令来验证您的�代码:nx affected --target=lint, nx affected --target=test 和 nx affected --target=build

假设在 CI 中的每个 PR 中,您都想对所有受影响的项目进行 lint、测试和构建。当您编写 CI 工作流程时,无法知道每个 PR 会影响多少项目,或者每个任务需要多长时间。无论您如何仔细设置,如果手动为 lint、测试和构建分配静态数量的代理机器,都会浪费时间。这种方法称为分箱。

幸运的是,通过分布式任务执行,Nx Cloud 可以在代理可用时动态地为其分配任务。

Nx Cloud 高效地协调代理

Nx 将自动使用 CI 中分配的代理调度任务。

设置 DTE 时,您定义(1)要运行的任务和(2)Nx Cloud 可以使用的代理数量。然后 Nx Cloud 编排器高效地将任务分配给代理 - 以便所有代理都被充分利用,并且您的 CI 进程尽快完成。

任务执行顺序很重要

但是有些任务是否依赖于其他任务的结果?是的!Nx 了解您的依赖树,因此它将按正确的顺序执行任务,并确保结果在需要的地方可用。

有些任务需要在其他任务之前执行,但 Nx Cloud 在将任务分配给代理时会考虑这一点。要更详细地了解定义这些依赖关系,请阅读运行任务文章

为什么要分发任务?

结果:更快的构建!

在多个代理上高效地并行化您的 CI 进程可以显著加快 CI 速度,这有助于开发人员更快地识别问题并完成更多工作。

这需要花费多少?

Nx Cloud 对开源项目是免费的。请联系 cloud-support@nrwl.io 进行设置。

对于闭源项目,前 500 个计算小时每月是免费的。大多数工作空间不会超过这个数量。不需要信用卡。超过 500 小时后,每小时计算成本为 1 美元。

更多详细信息,请参见 Nx Cloud 定价页面

安全性

您的实际代码不会存储在云中,但任务的哈希输入和缓存结果会被存储。可以启用端到端加密,以便没有人能在没有您的密钥的情况下查看该信息。另外,如果您想在自己的服务器上托管 Nx Cloud,可以注册 Nx 私有云。

示例

这是一个示例仓库,展示了设置分布式任务执行的简单性,显示性能收益,并与分片/分箱进行比较。

插图

以下是 Nicole Oliver 制作的完整解释页面:

DTE 工作原理解释器