Teamcity 8-将生成参数视为长参数或整数
使用teamCity 8.0.5。 作为我的构建清理的一部分,我想自动删除比当前5个构建旧的任何构建。例如,如果我的build.number=12,请尝试删除build 6。 不幸的是,您似乎无法施放%build.number%-6 使用Teamcity如何对构建参数执行数学运算 我试过了 %build.number%-1,并将其包装为() 我实际使用此命令行生成后事件:Teamcity 8-将生成参数视为长参数或整数,teamcity,Teamcity,使用teamCity 8.0.5。 作为我的构建清理的一部分,我想自动删除比当前5个构建旧的任何构建。例如,如果我的build.number=12,请尝试删除build 6。 不幸的是,您似乎无法施放%build.number%-6 使用Teamcity如何对构建参数执行数学运算 我试过了 %build.number%-1,并将其包装为() 我实际使用此命令行生成后事件: echo trying to remove directory %system.PreviousBuild% IF EXIS
echo trying to remove directory %system.PreviousBuild%
IF EXIST %system.PreviousBuild% RD %system.PreviousBuild% /Q /S
结果:
[09:19:09][步骤6/6]正在尝试删除director\server\path\Build11-6
-------------------------更新---------------------------
下面的答案让我找到了以下解决方案:
注意:这里的重要部分是将build.number转换为整数。
使用powershell源代码生成步骤
在整个命令中使用powershell对我有效:
Set-Variable -Name previousBuild -Value (([int]%build.number%)-6).ToString()
Write-Output $previousBuild
Write-Output $env:PreviousBuildPath
Set-Variable -Name path -Value $env:PreviousBuildPath$previousBuild
Write-Output $path
if((Test-Path -path $path))
{
Remove-Item -Recurse -Force $path
}
然后在路径后的TC生成脚本中使用%%newBuildNumber%%
\\server\path\Build%%newBuildNumber%%
只需使用powershell而不是命令行HI。我最终选择了以下几点。你上面的建议在teamcity对我来说根本不起作用。我不确定您的newBuildNumber是否已经在构建参数中的某个地方定义,但我无法使其工作。它甚至不能在一个powershell窗口中工作。但是,我将其标记为答案,因为它确实引导我找到了正确的答案。newBuildNumber不是TeamCity参数,而是标准的batch参数。分配给它的值等于TeamCity变量%build.number%-6。要使用该值,您必须使用double%%而不是single%,以确定它不是TeamCity参数。谢谢你把分数作为答案。如果你在teamcity尝试这样做的话,结果会是40胜6负。我相信这是由于build.number被转换为字符串。不过一切都很好。祝你星期三快乐。
set /a newBuildNumber=%build.number%-6
\\server\path\Build%%newBuildNumber%%