如果构建管道工件已发布到具有相同版本号的工件提要,则检查/失败构建管道

问题描述 投票:0回答:1

如果开发人员忘记增加他们正在开发的包中的版本号,我想确保构建管道中出现警告或失败。

目前我们有 NuGet 工件,它们在构建工件中使用版本号进行部署。我希望能够根据 Artifact feed 中部署的内容检查这些内容。

Build Pipeline artifacts example

Artifact Feed Example

具体来说,如果我们在构建管道中为其生成 PRE RELEASES,我想确保在工件提要中部署的包(在工件提要中标有“发布”视图)不会有最终版本。我想确保任何新的开发都有一个递增的版本号。

我尝试将诸如

ArtifactDeploymentDetectorTask
之类的任务与
powershell
任务结合使用,但我未能成功实现该功能。

是否有任何任务非常适合这个问题?这一切都可以使用

powershell
脚本来完成吗?

azure-devops nuget pipeline publish artifact
1个回答
0
投票

这一切都可以使用 powershell 脚本来完成吗?

是的。您可以使用 Rest API:Artifact Details - Get Packages 列出包的所有版本。

然后就可以获取nupkg文件的版本了。

最后,您可以循环该包的所有版本并将其与nupkg文件的当前版本进行比较。然后你可以使用logging命令来设置管道的错误消息。

这是 PowerShell 示例:

$token = "PAT"

$packagename= "pacakgename"

$GetPackageversion="https://feeds.dev.azure.com/{Org}/{Project}/_apis/packaging/Feeds/{FeedId}/packages?packageNameQuery=$($packagename)&includeAllVersions=true&api-version=7.1-preview.1"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$response = Invoke-RestMethod -Uri $GetPackageversion -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json 


$file=Get-Item "path\xxx.xxx.nupkg"



$name= ($file.name) -split('.nupkg')

$version = $name -split('pacakgename.')

$count = 0
foreach($versionobj in $response.value.versions)
{
    $Artifactsversion = $versionobj.version
    echo $Artifactsversion
    if($Artifactsversion -eq $version)
    {
       $count = $count + 1
    }


}

echo $count

if($count -eq 0)
{
  echo "There is no same version"

}

else
{
  echo "##vso[task.logissue type=error]The version is existing in the feed."
}
© www.soinside.com 2019 - 2024. All rights reserved.