如何从nuspec中提取版本号到TeamCity?

psy*_*ych 4 teamcity nuget teamcity-8.0

如何从nuspec中提取版本号到TeamCity?

我们有一个带有相应nuspec节点的csproj文件:

1.3.2

在TeamCity中,我想构建这个项目,并创建一个版本为1.3.2.%build.counter%的NuGet包.例如,1.3.2.322.重要的是版本号来自源代码控制(NuSpec)中的文件,我不想将其复制为TeamCity中的变量.有没有办法从NuSpec文件中提取1.3.2并将其用作TeamCity变量?

Mat*_*nty 5

这种方法适用于TeamCity的10+版本,并解决了Select-Xml与名称空间有关的问题.

$Version = ([xml](Get-Content .\MyProject.nuspec)).package.metadata.version
$BuildCounter = %build.counter%

echo "##teamcity[setParameter name='PackageVersion' value='$Version.$BuildCounter']"
Run Code Online (Sandbox Code Playgroud)


Ste*_*man 4

我能想到的几种方法都使用TeamCity 服务消息

使用 PowerShell 构建步骤,如下所示(抱歉我的 PS 不太好):

$buildcounter = %build.counter%
$node = Select-Xml -XPath "/package/metadata/version" -Path /path/to/nuspec.nuspec
$version = $node.Node.InnerText
Write-Output "##teamcity[buildNumber '$version.$buildcounter']"
Run Code Online (Sandbox Code Playgroud)

或者,类似地,引导一个类似XmlStarlet的工具:

$buildcounter = "1231"
$version = xml sel -T -t -v "/package/metadata/version" Package.nuspec
Write-Output "##teamcity[buildNumber '$version.$buildcounter']"
Run Code Online (Sandbox Code Playgroud)

需要在需要内部版本号的任何其他步骤之前添加此步骤。