如何确定使用 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 运行增量构建所需的提交范围的主要内容,如果未能解决你的问题,请参考以下文章