MMDd格式的TeamCity Current Date变量

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%

这种方法的优点是您不需要使用插件.缺点是您需要引入构建步骤.

  • 您还必须在代理的buildAgent.properties文件中定义env.BUILD_START_TIME.否则,TeamCity将不会将代理与兼容匹配. (11认同)
  • 不错的提示,这是格式,毫秒和路径友好`[DateTime] :: Now.ToString("yyyyMMdd_hhmmssff")` (10认同)
  • @Alex Blokha只要给它一个临时值(例如“ test”),它就会正确覆盖它 (2认同)

Bil*_*lal 9

TeamCity 的Groovy插件提供了构建开始日期/时间属性:

提供构建属性:

system.build.start.date/env.BUILD_START_DATE

system.build.start.time/env.BUILD_START_TIME

此博客文章包含Groovy插件的安装/配置说明,以及自定义日期/时间格式的示例.

  • 博客链接已损坏. (4认同)

小智 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]

正如您所猜测的,该时间设置为构建开始时间,因此对于某些需求来说可能并不理想。但它既简单又可靠。