无论如何,是否要检查npm软件包是否已从正确的分支发布?

时间:2019-11-13 16:28:23

标签: npm azure-devops

因此,我们有一个具有开发和发布分支的项目A。我们从另一个项目B中引用了一个程序包,该项目B也具有开发和发布分支。我想做的是检查是否要通过Azure Devops从其发布分支构建/部署Project A,是否引用从Project B的发布分支创建的程序包。

我最初的想法是研究npm dist标签:https://docs.npmjs.com/cli/dist-tag,但是如果我正确理解了这一点,则不能保证该软件包实际上已经从该分支发布过,即我可以在我自己的分支上,并且只是发布带有“发布”标签的软件包。如果从指定分支发布,是否可以自动添加dist标签?

我的下一个问题(很可能需要再问一个问题)是,Azure开发人员中是否有一种方法可以检查此程序包,以确保已从正确的分支发布了该程序包,如果没有,则使构建失败。因此,如果使用dist标签,则有一种方法可以将软件包dist标签作为构建的一部分进行检查,以确保其具有正确的标签,例如“释放”?

1 个答案:

答案 0 :(得分:0)

第一个问题。您可以使用azure devops构建管道自动发布dist-tag并将其添加到软件包中,这意味着您需要创建构建管道来发布软件包。而且,您可以添加powershell任务,以确保从某个分支发布了该软件包。

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

$sourceBranch = "$(Build.SourceBranchName)"

if($sourceBranch -ne "release")
{
    exit 1
}

上面的脚本检查sourceBranch是否为发行分支。如果源分支不是来自发行分支,它将使任务失败。

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

enter image description here

确保为此构建管道启用CI构建。触发是释放分支 enter image description here

通过上述步骤,您的软件包将使用您自己定义的标签自动发布。

2:

对于第二个问题,请在构建管道中检查软件包dist-tag。您还可以添加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获取标签信息。并检查标签是否包含“发行版”。如果条件为假,任务将失败。