如何确定使用 NX 运行增量构建所需的提交范围

Posted

技术标签:

【中文标题】如何确定使用 NX 运行增量构建所需的提交范围【英文标题】:how to determine range of commits needed to run an incremental build with NX 【发布时间】:2020-05-10 07:27:00 【问题描述】:

在 CI/CD 服务器中,如何确定要包含在 nx affected:build --base=master~1 --head=master 命令中的提交范围?

https://nx.dev/react/api/workspace/npmscripts/affected-build

nx affected

Run task for affected projects

Run command using --base=[SHA1] --head=[SHA2] (affected by the committed changes):
  --base  Base of the current branch (usually master)                   [string]
  --head  Latest commit of the current branch (usually HEAD)            [string]

例如,对于只有 1 次提交到 master 触发构建的用例来说,这将是微不足道的。但是,如果是 2 个或更多提交触发了 CI/CD 上的构建,那么我如何确定构建运行的最后一个提交以确定--head arg 使用的某些提交范围?

【问题讨论】:

【参考方案1】:

答案很晚,但我想最好的办法是在每次提交时触发 CI,然后仅在有任何影响更改时才继续。

这也将减少构建、测试和部署所需的时间,因为它们只进行较小的更改。

但我也猜你已经找到了可行的解决方案。

【讨论】:

这种方法并不适合我们。谢谢你的建议:) 您知道提交吗?您的 CI 运行是否与这些提交相关联?如果是这样,您可以执行以下操作。获取您当前的提交并找到最新的。然后查找最新的成功 CI 运行并提取相关的 git commit sha。之后,您可以使用 nx affected --base [sha-base] --head [sha-head] 进行简单的工作,希望这有意义!? 是的,我需要研究类似的东西。具体来说,我们正在使用 teamcity,所以只需要弄清楚 teamcity 的细节,这将允许我这样做。我希望 NX 有一些神奇的脚本来执行此操作,但我认为解决方案因每个 CI/CD 工具而异。 显然不是我所知道的。我们最终采用了这个解决方案,现在效果很好。但是我们每次 CI 运行也只有一个提交,所以它更容易,我们只需要查找最后一次成功的运行来计算差异。我们在每次提交时运行 lints 和测试,构建和部署由这些标签标记和触发。因此受影响的 lint 和测试工作开箱即用,但构建和部署需要查找功能。 只是出于好奇,您是否使用功能分支进行开发?如果是这样,您是否没有要掌握的包含多个提交的合并/ PR?但听起来您可能已经将 CI/CD 工具配置为仍然在单个提交上运行?

以上是关于如何确定使用 NX 运行增量构建所需的提交范围的主要内容,如果未能解决你的问题,请参考以下文章

Git 的包文件是增量而不是快照?

在 nx 构建/部署上生成 package.json

运行时错误:424:当我尝试达到范围并使用范围数据时所需的对象

我们如何确定 ffmpeg 所需的依赖项

函数和变量范围所需的总堆栈大小如何相关?

我对提交 App Store 所需的所有屏幕截图以及如何获取它们感到困惑