TeamCity条件参数值

25

我怎样能将运行时的值赋给构建参数?我设置了一个构建参数,比如说 %config.buildMode%,它是一个下拉选项,我需要使用类似于 IF 条件语句的东西,以便我可以根据 buildmode 的选择来为另一个参数分配不同的值。

例如:

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

只需设置所有参数。 - Aleš Roubíček
2个回答

28

虽然有点晚,但这是可能的。给你想要作为条件的值添加一个额外的参数(例如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参数。然后您可以在随后的构建步骤中使用该参数。


1
有关更多信息,请阅读 https://confluence.jetbrains.com/display/TCD10/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-changingBuildParameterAddingorChangingaBuildParameterfromaBuildStepAddingorChangingaBuildParameter 的文档,了解与 TeamCity 的构建脚本交互中更改构建参数、从构建步骤添加或更改构建参数的方法。 - stun
参数选项卡上的值会改变吗?因为它可能在中间某个地方被更改。 - Anatoli Klamer
值的更改仅适用于当前构建的持续时间,构建定义中的值不会受到影响。 - PaulMolloy

0

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

%config.buildMode-1% == 'Debug|localhost'
%config.buildMode-2% == 'Release|http://servername'
%config.buildMode-3% == '*|http://stackoverflow.com'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接