C# 如何在Azure DevOps pull请求中推送到专用源之前正确检查NuGet包版本中的重复生成策略
我有一个repo,其中有几个库(C# 如何在Azure DevOps pull请求中推送到专用源之前正确检查NuGet包版本中的重复生成策略,c#,azure-devops,nuget,azure-pipelines,C#,Azure Devops,Nuget,Azure Pipelines,我有一个repo,其中有几个库(csprojprojects),它们发布到Azure DevOps托管的私有NuGet提要中。它们被我公司的其他项目消耗掉了 现状 每个库的一个推送管道,用于将NuGet推送到私有提要中。这些管道是由 触发器: 分支机构: 包括: -主人 路径: 包括: -MyCompany.Product.PackageName/* 在PR期间,另一个简单的构建管道检查新包版本的构建。如果此生成管道失败,则无法合并PR。当PR合并到master中时,新的包版本被推送到提要中
csproj
projects),它们发布到Azure DevOps托管的私有NuGet提要中。它们被我公司的其他项目消耗掉了
现状
每个库的一个推送管道,用于将NuGet推送到私有提要中。这些管道是由
触发器:
分支机构:
包括:
-主人
路径:
包括:
-MyCompany.Product.PackageName/*
在PR期间,另一个简单的构建管道检查新包版本的构建。如果此生成管道失败,则无法合并PR。当PR合并到master中时,新的包版本被推送到提要中
问题在于构建管道中没有版本检查。在PR期间,开发人员不知道推送管道是否成功
我想做一个自动检查,如果包可以推到私人饲料
期望状态
当某个开发人员打开一个新的PR时,构建管道会告诉他/她无法将包推送到提要中,因为他忘记了更新包版本
我的想法是创建一个特定于项目的构建管道,并使用PowerShell进行一些神奇的版本检查,如果提要中存在重复项,则会失败
这项任务的适当策略是什么?有人为此应用了一些成功的解决方案吗?一些管道示例将不胜感激。当您将软件包版本推送到指定的源中时,如果该版本与源中的现有版本复制,则推送通常会失败,并出现版本复制错误。然后您只需要更改软件包版本,然后再次尝试推送 如果要在推送之前检查包版本,请在设置为检查包版本的生成管道中,尝试如下操作:
- 获取要推送的包的当前版本。通常,您可以从
文件或相关NuGet配置文件(例如csproj
)中读取版本.nuspec
- 使用“”命令列出源中指定包的所有现有版本
nuget list JSON-AllVersions-Source”https://pkgs.dev.azure.com///_packaging//nuget/v3/index.json"
如果提要的范围是组织,则省略“
”要获取源URL,请在DevOps上打开团队项目中的Azure工件,切换到包所在的源,单击连接到源,然后可以查看源URL
- 检查要推送的包版本是否包含在列出的包版本中
- 获取要推送的包的当前版本。通常,您可以从
文件或相关NuGet配置文件(例如csproj
)中读取版本.nuspec
- 使用“”命令列出源中指定包的所有现有版本
nuget list JSON-AllVersions-Source”https://pkgs.dev.azure.com///_packaging//nuget/v3/index.json"
如果提要的范围是组织,则省略“
”要获取源URL,请在DevOps上打开团队项目中的Azure工件,切换到包所在的源,单击连接到源,然后可以查看源URL
- 检查要推送的包版本是否包含在列出的包版本中
nuget list <PackageName> JSON -AllVersions -Source "https://pkgs.dev.azure.com/<Organization>/<Project>/_packaging/<FeedName>/nuget/v3/index.json"