将TeamCity参数设置为日期变量

时间:2018-06-19 20:46:57

标签: teamcity

我有一个TeamCity构建,该构建将一些参数传递给.exe并每天运行。一个参数是日期参数,当前设置为静态日期。现在它必须是动态的,并传递当前日期。

我尝试将值设置为%env.BUILD_START_DATE%,但是由于对该环境变量的隐式要求,这使我的所有代理都不兼容。我还尝试过在DOS命令行脚本中设置日期,完全跳过了TC参数,但最终还是隐含了这一要求。

3 个答案:

答案 0 :(得分:3)

此处的最高答案:TeamCity Current Date variable in MMdd format 表示需要TC插件,但是第二个答案不需要插件,而且大部分都已完成。在第二个答案的变体中,我是如何做到的:

1。)添加一个powershell构建步骤以运行以下命令:

echo "##teamcity[setParameter name='env.BUILD_START_DATE' value='$([DateTime]::Now)']"

2。)在环境变量部分为env.BUILD_START_DATE提供一个默认值。如果没有默认值,TC认为拥有此值是构建代理程序的隐式要求,从而使它们全部不兼容。

答案 1 :(得分:0)

如果您不熟悉PowerShell,这里是一种Bash方法。

您可以使用脚本设置参数,并从下一个构建步骤中检索值。

echo "##teamcity[setParameter name='env.BUILD_START_DATE' value='$(date +%%Y-%%m-%%dT%%H:%%M:%%S%%z)']"

加倍的%%是因为TeamCity在构建脚本中将%视为自己的参数。

该参数将具有ISO8601格式的时间戳。对于其他格式,请参见此处的各种Bash日期格式。 https://www.tutorialkart.com/bash-shell-scripting/bash-date-format-options-examples/

答案 2 :(得分:0)

您可以在配置中设置变量,在运行时应将其覆盖。我的TC参数中没有看到env.BUILD_START_DATE,但确实看到了system.buildStartTime。我将其设置为虚拟值(我使用“ [自动填充]”),并且一切正常。运行构建,并且在构建时覆盖system.buildStartTime。