23

如何将运行时值分配给构建参数?我将构建参数(比如说 %config.buildMode%)设置为下拉列表,并且我需要有类似 IF 条件的内容,以便我可以根据构建模式选择为另一个参数分配不同的值。

例如

if %config.buildMode% == 'Debug'
   %config.hostName% = 'localhost'
else if %config.buildMode% == 'Release'
   %config.hostName% = 'http://servername'
else
   %config.hostName% = 'http://stackoverflow.com'
4

2 回答 2

25

派对迟到了,但这是可能的。为您希望作为条件的值添加一个额外参数(例如 TargetServerName),但将该值留空。然后在进程开始时添加一个 powershell 构建步骤,并输入这样的脚本;

$BuildMode = "%buildMode%"
$ServerName = ""

if ($BuildMode -eq "Debug") {
  $ServerName = "localhost"
}
elseif ($BuildMode -eq "Release") {
  $ServerName = "theserver"
}
else 
{
exit 1
}
echo "##teamcity[setParameter name='TargetServerName' value='$ServerName']"

最后一行是魔术。通过输出,teamcity 基本上会执行它,设置您的 TargetServerName 参数。然后,您可以在后续构建步骤中使用该参数。

于 2016-07-07T15:10:49.043 回答
0

我认为条件是不可能的。Ales 可能意味着每个参数都可以包含一个字符串混搭,可以由接收脚本解析。例如,

%config.buildMode-1% == 'Debug|localhost'
%config.buildMode-2% == 'Release|http://servername'
%config.buildMode-3% == '*|http://stackoverflow.com'
于 2013-07-01T18:58:51.417 回答