2011-08-11 220 views
18

在TeamCity中,有一種簡單的方法可以以MMdd格式獲取當前日期的變量(例如0811爲8-Aug)?TeamCity MMdd格式的當前日期變量

我的google-fu沒有打開現有的插件。我研究過編寫一個插件,但沒有安裝jdk,看起來很耗時。

回答

7

Groovy Plugin爲TeamCity的提供建立開始日期/時間特性:

提供建立屬性:

system.build.start.date/env.BUILD_START_DATE

system.build.start .time/env.BUILD_START_TIME

This blog post安裝/配置Groovy插件的說明,以及自定義日期/時間格式的示例。

+4

博客鏈接已損壞。 –

+0

@Bilal您現在可以總結如何自定義日期/時間格式鏈接已損壞,我無法在任何地方找到該信息 – PeteN

+0

@pete現在添加了工作博客鏈接。 –

1

您還可以嘗試Date Build Number插件。它提供了內部版本號格式的附加變量,而不是構建屬性。

33

這是很容易做到一個PowerShell構建步驟(無需插件)使用下面的源代碼:

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

或(對於UTC):

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

這裏使用的TeamCity的Service Message功能,允許您在運行時與構建引擎進行交互設置生成參數。

您可以從TeamCity的其他地方使用的語法%env.BUILD_START_TIME%

這種方法的優點是你不需要使用插件然後引用此版本參數。缺點是你需要引入一個構建步驟。

+7

不錯的提示,這裏是毫秒和路徑友好的格式'[DateTime] :: Now.ToString(「yyyyMMdd_hhmmssff」)' – iraSenthil

+9

您還必須在代理的buildAgent.properties文件中定義env.BUILD_START_TIME。否則TeamCity將不匹配代理兼容。 – seldary

+0

@seldary,感謝這裏提到的構建代理中屬性的定義。如果我確定將覆蓋構建服務器值的env屬性,我如何真正確保將powershell值推送到構建代理? –

4

對於基於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']" 

你必須讓雙%標誌,以避免解釋爲date可執行命令行參數FORMAT字符串(請參閱% Y.%m。%d)作爲已有的TeamCity變量。

0

要向我的TeamCity版本添加日期文件夾,我將以下內容添加到我的自定義腳本中。我卡住的是日期字符串中的雙%符號。 D'oh

TARGET_DIR=/Users/admin/build/daily 
TARGET=$(date "+%%Y-%%m-%%d") 

if [ ! -d ${TARGET_DIR} ]; then 
    mkdir -vp ${TARGET_DIR}/ 
fi 
mv -v build.dmg ${TARGET_DIR}/build_${TARGET}.dmg