是否需要检查npm包是否已从正确的分支发布?

是否需要检查npm包是否已从正确的分支发布?,npm,azure-devops,Npm,Azure Devops,所以,我们有一个项目,它有一个开发和发布分支。我们引用了另一个项目projectb的包,projectb也有开发和发布分支。我希望能够做的是检查,如果我通过Azure Devops从项目A的发布分支构建/部署项目A,它是否引用了从项目B的发布分支创建的包 我最初的想法是查看npm dist标签:但如果我正确理解这一点,这并不能保证包实际上是从该分支发布的,也就是说,我可以在自己的分支上发布带有“release”标签的包。如果从指定的分支发布,是否有方法自动添加dist标记 我的下一个问题可能是另

所以,我们有一个项目,它有一个开发和发布分支。我们引用了另一个项目projectb的包,projectb也有开发和发布分支。我希望能够做的是检查,如果我通过Azure Devops从项目A的发布分支构建/部署项目A,它是否引用了从项目B的发布分支创建的包

我最初的想法是查看npm dist标签:但如果我正确理解这一点,这并不能保证包实际上是从该分支发布的,也就是说,我可以在自己的分支上发布带有“release”标签的包。如果从指定的分支发布,是否有方法自动添加dist标记


我的下一个问题可能是另一个问题,即Azure devops中是否有方法检查此包以确保它已从正确的分支发布,如果没有,则生成失败。因此,如果使用了dist标记,是否有一种方法可以检查包dist标记作为构建的一部分,以确保它具有正确的标记,例如第一个问题的“release”?

。您可以使用azure devops build pipeline自动发布包并将dist标记添加到包中,这意味着您需要创建一个生成管道来发布包。您还可以添加powershell任务,以确保包是从某个分支发布的

要添加powershell任务,请在npm发布任务之前运行内联脚本

$sourceBranch = "$(Build.SourceBranchName)"

if($sourceBranch -ne "release")
{
    exit 1
}
上面的脚本检查是否是发布分支。如果源分支不是来自发布分支,则任务将失败

使用标记信息发布npm任务。您可以添加一个npm任务来运行自定义命令,如下图所示。您可以使用变量动态定义标记名。(例如,
publish--tag$(build.build.SourceBranchName)

确保为此生成管道启用CI生成。触发器是释放分支

通过以上步骤,您的包将自动发布,并带有自定义标记

2:

对于第二个问题,检查构建管道中的package dist标记。您还可以添加powershell任务以检查包的标记信息,如果条件失败,则任务将失败

 set-location -Path "$(Build.SourcesDirectory)"

 $tags = npm view packageName dist-tags

 if( $tags.Contains("release") -and ($tags -ne $null))
    {
        exit 1
    }

上面的脚本使用命令
npm view packageName dist tags
获取标记信息。并检查标签是否包含“释放”。如果条件错误,任务将失败。

@LeviLu MSFT-还没有。我希望这周能有机会,所以我一定会让你知道结果的!您好@sr28您在一周内试过下面的答案了吗?请让我知道进展如何?你好@sr28好久没有你的消息了。你可能已经尝试了下面的答案,你能分享更新吗?现在就开始吧。只是和我们的devops团队谈谈