我创建了一个私有npm程序包,该程序包已发布到Azure Artifacts。要发布我的npm软件包,我在tfs构建定义中有一个npm publish步骤。我正在使用tfs版本16.131.28507.4
。
这一切均按预期进行。但是,如果在npm软件包版本未更改的情况下触发构建,则npm发布将失败,并禁止403
。此错误导致我的构建的其余部分失败。 npm软件包是一个较大项目的一部分,因此在npm软件包未更改的情况下进行构建并不少见。
如果我的包供稿中的当前版本与包json中指定的版本相同,是否有可能阻止执行npm publish
的tfs构建步骤?
我知道构建步骤中的“自定义条件”,但是不确定如何将Azure Artifacts当前发布的版本与我的package.json
中的版本链接。我也知道构建定义中的“继续出错”选项,但这会创建部分成功的构建,在这种情况下,我希望避免这种情况。
答案 0 :(得分:1)
如果在npm软件包版本未更改的情况下触发了构建 npm发布将失败,并禁止403。
这是预期的行为。由于您的软件包名称/版本未更改。以前已经发布了具有该名称的软件包,因此您需要在package.json
文件中使用其他名称,然后再次发布npm。
对于您而言,最简单的解决方案是更新npm软件包的最低版本,即使没有任何更改。正如您所指出的,在构建定义中使用“继续出错”选项,但这会创建部分成功的构建。
我们没有任何带有Azure Artifacts或pmn任务的内置设置/配置,可以判断您的包供稿中的当前版本是否与包json中指定的版本相同。
对于客户条件,我们也没有提供控制该任务何时运行的表达式。为此,您可以查看此官方链接-Conditions。
另一种解决方法应该是分离您的构建管道,一个用于构建某些东西,npm发布包。一个要构建的东西,请在azure软件包提要中引用您的npm软件包。如果您想每次更改npm版本,都会自动触发第二个版本。您可以使用Trigger Build Task来链接构建。