仅当 tfs 构建中版本更改时才 npm 发布

Mic*_*ock 5 tfs tfsbuild npm npm-publish azure-artifacts

我创建了一个私有 npm 包,并将其发布到 Azure Artifacts。为了发布我的 npm 包,我的 tfs 构建定义中有一个 npm 发布步骤。我使用的是tfs版本16.131.28507.4

这一切都按预期进行。但是,如果在 npm 包版本未更改的情况下触发构建,则 npm 发布将失败并出现403禁止。此错误导致我的其余构建失败。npm 包是较大项目的一部分,因此在 npm 包未更改的情况下进行构建并不罕见。

npm publish如果我的包提要中的当前版本与包 json 中指定的版本相同,是否可以阻止执行 tfs 构建步骤运行?

我知道构建步骤中的“自定义条件”,但不确定如何将 Azure Artifacts 当前发布的版本与我的package.json. 我还知道构建定义中的“错误时继续”选项,但这会创建部分成功的构建,在这种情况下我想避免这种情况。

Pat*_*SFT 1

如果在 npm 包版本未更改的情况下触发构建,则 npm 发布将失败并显示 403 禁止。

这是预期的行为。由于您的包名称/版本未更改。具有该名称的包之前已经发布过,因此您需要在package.json文件中使用不同的名称,然后再次 npm 发布。

对于您的情况,最简单的解决方案是更新 npm 包的最低版本,即使没有任何更改。正如您所指出的,另一个是在构建定义中使用“错误时继续”选项,但这会创建部分成功的构建。

我们没有任何 Azure Artifacts 的内置设置/配置,npm 任务可以判断包 feed 中的当前版本是否与包 json 中指定的版本相同。

对于客户条件,我们也没有提供这样的表达式来控制该任务何时运行。为此,您可以查看这个官方链接——Conditions

另一种解决方法应该是分离构建管道,一个用于构建某些内容,即 npm 发布包。一种用于构建某些内容,请在 azure 包源中引用您的 npm 包。如果您希望每次 npm 版本更改时自动触发第二次构建。您可以使用触发器构建任务来链接构建。