如何从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变量?
答案 0 :(得分: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']"
答案 1 :(得分:4)
使用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']"
或者,类似地,引导像XmlStarlet这样的工具:
$buildcounter = "1231"
$version = xml sel -T -t -v "/package/metadata/version" Package.nuspec
Write-Output "##teamcity[buildNumber '$version.$buildcounter']"
需要在需要内部版本号的任何其他步骤之前添加此步骤。