跳至主要内容
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

分布式任务执行指南

本指南中的图示由 Nx 团队成员 Nicole Oliver 创作。

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

什么是任务?

什么是任务?项目 + 目标(例如 shared-product-ui + test)。每次运行包含多个任务。affected 包含 shared-product-ui、product-page、shared-e2e-util 和 shared-ui

在 Lerna 的视角中,任务(task)指在特定项目上运行的目标(target)。例如,在项目 shared-product-ui 上运行的目标 test 就是一个任务。有关任务的更多信息,请参阅运行任务一文。

Nx Cloud 自动调度您的 CI 任务

启用分布式任务执行后,Nx 将在 CI 中调度命令的任务。例如,假设您想运行这 3 个命令验证代码:nx affected --target=lint, nx affected --target=test 和 nx affected --target=build

假设在 CI 中处理每个 PR 时,您都需要对所有受影响的项目执行代码检查、测试和构建。编写 CI 工作流时,您无法预知每个 PR 会影响多少项目,也无法确定每个任务的具体耗时。无论设置多么精心,如果手动为代码检查、测试和构建分配固定数量的代理机,必然会造成时间浪费。这种方法称为分箱处理(binning)。

幸运的是,借助分布式任务执行,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 Cloud Enterprise 版本。

示例

这是一个示例仓库,展示了设置分布式任务执行是多么容易,展示了性能提升,并与分片(sharding)/分箱(binning)进行了比较。

图示

这是 Nicole Oliver 制作的完整图示说明页面:

DTE 工作原理图示