【问题标题】:TeamCity conditional parameter valuesTeamCity 条件参数值
【发布时间】:2013-06-12 21:15:42
【问题描述】:

如何将运行时值分配给构建参数?我将构建参数设置为一个下拉列表,比如说 %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'

【问题讨论】:

  • 只设置所有参数

标签: parameters build teamcity


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    晚会有点晚,但有可能。 为您希望成为条件的值添加一个额外的参数(例如 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 参数。然后,您可以在后续构建步骤中使用该参数。

    【讨论】:

    • 欲了解更多信息,请阅读confluence.jetbrains.com/display/TCD10/…的文档
    • 它会改变参数选项卡上的值吗?因为它可以在中间的某个地方改变
    • 值的变化只适用于当前构建的持续时间,构建定义上的值不会受到影响。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多