跳至主要内容

分布式任务执行指南

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

how does distributed task execution work in Nx Cloud?

什么是任务?

what's a task? project + target (i.e. shared-product-ui + test).  each run contains many tasks.  affected contains shared-product-ui, product-page, shared-e2e-util and shared-ui

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

Nx Cloud 自动安排您的 CI 任务

when you turn on DTE, Nx will schedule your commands' tasks in CI.  for example, say you want to run these 3 commands to verify your code: nx affected --target=lint, nx affected --target=test and nx affected --target=build

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

幸运的是,借助分布式任务执行,Nx Cloud 可以根据可用情况动态地将任务分配给代理。

Nx Cloud 高效地编排代理

Nx will automatically schedule tasks w/agents you assign in CI.

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

任务执行顺序很重要

but don't some tasks depend on others' results?  Yep! Nx knows about your dependency tree, so it will execute tasks in the right order and make sure the results are available where they're needed.

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

为什么要分配任务?

Result: Faster Builds!

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

费用是多少?

Nx Cloud 对开源项目免费。请联系 [email protected] 以进行设置。

对于闭源项目,每月前 500 个计算小时免费。大多数工作区不会超过此数量。无需信用卡。超过 500 小时后,费用为每计算小时 1 美元。

有关更多详细信息,请参阅Nx Cloud 定价页面

安全性

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

示例

这是一个示例存储库,展示了设置分布式任务执行的简单性,展示了性能提升,并与分片/分段进行了比较。

插图

Nicole Oliver 制作了完整的插图说明页面

How Does DTE Work Explainer