Azure DevOps使用Build.SourceBranchName作为NuGet修补程序版本进行预发布测试

时间:2019-05-18 09:04:56

标签: git azure-devops continuous-integration nuget

我们正在尝试使用Azure DevOps构建我们的git分支并使用NuGet Pack命令生成NuGet包,我们希望自动构建master以及所有预发布的功能分支。

我们尝试将内部版本号格式设置为:

  

$(BuildDefinitionName)_ $(Date:yyyyMMdd)。$(BuildID)。$(Rev:.r)$(Build.SourceBranchName)

这给了我们错误:

  

[错误]在以下环境变量中找不到版本号数据:BUILD_BUILDNUMBER。变量的值应包含带有或为正整数的子字符串。

我将内部版本号格式设置为1.0.0-alpha可以正常工作,但在“工件”列表中,它仅显示为1.0.0。

我们如何在Azure Devops中使用CI来构建master和我们所有的功能分支,生成NuGet包并将分支名称应用到NuGet版本,以便我们可以在测试环境中使用这些包并单独测试功能分支?

1 个答案:

答案 0 :(得分:1)

  

我们如何在Azure Devops中使用CI来构建master和我们所有的功能分支,生成NuGet包并将分支名称应用到NuGet版本,以便我们可以在测试环境中使用这些包并单独测试功能分支?

很抱歉收到我的答复,希望能给您任何帮助。

恐怕我们不能将内部版本号格式的$(Build.SourceBranchName)用作nuget版本。在尝试了各种格式的内部版本号后,发现将内部版本号用作nuget版本时,只能使用 number数据作为nuget版本,否则,将出现类似您的错误:

  

”变量应包含带有或为正的子字符串   整数”

然后我创建一个包含数字数据的分支,例如9,它工作正常。

因此,作为测试,当使用内部版本号作为nuget版本时,我们无法将分支名称(字符串)应用于NuGet版本。

作为解决方法,我使用选项Use an environment variable,然后使用值nugetversion定义变量$(Major).$(Minor).$(Patch)-$(Build.SourceBranchName)

enter image description here

enter image description here

enter image description here

通过这种解决方法,我们可以将分支名称用作nuget软件包的版本,但是它也有一些限制,即,我们不能使用某些预定义变量,例如$(Rev:.r)$(BuildID) ,这意味着我们无法自动增加nuget软件包的版本。

希望这会有所帮助。