Rob*_*ner 23 teamcity datetime
在TeamCity中,有一种简单的方法可以以MMdd格式获取当前日期的变量(例如08年8月8日)?
我的google-fu没有出现现有的插件.我考虑编写一个插件,但没有安装jdk,这看起来很耗时.
Jac*_*eja 42
使用以下源代码,使用PowerShell构建步骤(无需插件)非常容易:
echo "##teamcity[setParameter name='env.BUILD_START_TIME' value='$([DateTime]::Now)']"
Run Code Online (Sandbox Code Playgroud)
或(对于UTC):
echo "##teamcity[setParameter name='env.BUILD_START_TIME' value='$([DateTime]::UtcNow)']"
Run Code Online (Sandbox Code Playgroud)
这使用TeamCity的服务消息功能,允许您在运行时与构建引擎交互,例如设置构建参数.
然后,您可以使用语法从TeamCity中的其他位置引用此构建参数 %env.BUILD_START_TIME%
这种方法的优点是您不需要使用插件.缺点是您需要引入构建步骤.
小智 6
对于基于Unix的构建代理,我建议使用下一个自定义脚本作为构建命令之一:
export current_build_date_format="+%%Y.%%m.%%d"
export current_build_date="$(date $current_build_date_format)"
echo "##teamcity[setParameter name='env.current_build_date' value='$current_build_date']"
Run Code Online (Sandbox Code Playgroud)
您必须使用双%符号来避免将日期可执行命令行参数FORMAT字符串(请参见%Y.%m。%d)解释为已经存在的TeamCity变量。
小智 1
这是一个老问题,但对于那些寻找解决方案的人来说,现在有一个可用的系统参数。
system.buildStartTime
Run Code Online (Sandbox Code Playgroud)
您需要在配置中声明它(直到运行时才可用)才能运行。我将我的设置为值[Filled Automatically]
正如您所猜测的,该时间设置为构建开始时间,因此对于某些需求来说可能并不理想。但它既简单又可靠。