TeamCityで、現在の日付の変数をMMdd形式(8月8日の場合は0811など)で取得する簡単な方法はありますか?
私のgoogle-fuは既存のプラグインを見つけませんでした。プラグインの作成を検討しましたが、jdkがインストールされていないため、時間がかかるようです。
Groovyプラグイン for TeamCityは、ビルドの開始日時プロパティを提供します。
ビルドプロパティを提供します:
system.build.start.date/env.BUILD_START_DATE
system.build.start.time/env.BUILD_START_TIME
このブログ投稿 Groovyプラグインのインストール/構成手順と、日付/時刻形式のカスタマイズ例があります。
これは、次のソースコードを使用して、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の サービスメッセージ 機能を使用して、実行時にビルドエンジンと対話できるようにします。ビルドパラメータを設定します。
次に、構文%env.BUILD_START_TIME%
を使用して、TeamCityの他の場所からこのビルドパラメーターを参照できます。
このアプローチの利点は、プラグインを使用する必要がないことです。欠点は、ビルドステップを導入する必要があることです。
Unixベースのビルドエージェントの場合、ビルドコマンドの1つとして次のカスタムスクリプトを提案します。
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変数として。
Date Build Number プラグインを試すこともできます。ビルドプロパティではなく、ビルド番号形式で追加の変数を提供します。
古い質問ですが、解決策を探している人のために、利用可能なシステムパラメータがあります。
system.buildStartTime
実行するには、configで宣言する必要があります(実行時まで使用できません)。値を[Filled Automatically]
に設定しました
ご想像のとおり、この時間はビルド開始時間に設定されているため、一部のニーズには理想的ではない場合があります。しかし、それは簡単で信頼できます。
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
ビルドステップで1行のbashコマンドのみを使用する場合は、以下のように使用します。
echo "##teamcity[setParameter name='build.timestamp' value='$(date +%%m%%d)']"
(二重の%
記号は、TeamCity独自のエスケープルールが%
文字を使用するためのものです)
実行時の実行直後にMMddパラメータ値を設定するため、ビルドステップに配置するのに非常に便利です。その後、パラメータ値を取得できます。
最初にTeamCityプロジェクトにbuild.timestamp
パラメーターを作成する必要があることに注意してください。
さらに一歩進んで、 bash日付形式 タイムスタンプを持つ簡単なbashスクリプトを作成しました。このスクリプトは、タイムスタンプをbashでサポートされている日時形式に設定し、パラメーター名をTeamCityに設定します。
name="" # TeamCity parameter name
format="%Y-%m-%dT%H:%M:%S%z" # ISO8601 format by default
result="" # a TeamCity parameter value to be set
for ARGUMENT in "$@"
do
KEY=$(echo "$ARGUMENT" | cut -f1 -d=)
VALUE=$(echo "$ARGUMENT" | cut -f2 -d=)
case "$KEY" in
name) name=${VALUE} ;;
format) format=${VALUE} ;;
*)
esac
done
result=$(date "+$format")
echo "##teamcity[setParameter name='$name' value='$result']"
以下の使用法では、ISO8601形式のタイムスタンプをbuild.timestamp
パラメーターに設定します。
./teamcity_datetime.sh name=build.timestamp
MMdd
のみを設定する場合、実行は次のようになります。
./teamcity_datetime.sh name=build.timestamp format="%%m%%d"