web-dev-qa-db-ja.com

MMdd形式のTeamCity現在の日付変数

TeamCityで、現在の日付の変数をMMdd形式(8月8日の場合は0811など)で取得する簡単な方法はありますか?

私のgoogle-fuは既存のプラグインを見つけませんでした。プラグインの作成を検討しましたが、jdkがインストールされていないため、時間がかかるようです。

24
Robert Wagner

Groovyプラグイン for TeamCityは、ビルドの開始日時プロパティを提供します。

ビルドプロパティを提供します:

system.build.start.date/env.BUILD_START_DATE

system.build.start.time/env.BUILD_START_TIME

このブログ投稿 Groovyプラグインのインストール/構成手順と、日付/時刻形式のカスタマイズ例があります。

9
Bilal

これは、次のソースコードを使用して、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の他の場所からこのビルドパラメーターを参照できます。

このアプローチの利点は、プラグインを使用する必要がないことです。欠点は、ビルドステップを導入する必要があることです。

43
Jack Ukleja

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変数として。

6
N0dGrand87

Date Build Number プラグインを試すこともできます。ビルドプロパティではなく、ビルド番号形式で追加の変数を提供します。

1
Marek

古い質問ですが、解決策を探している人のために、利用可能なシステムパラメータがあります。

system.buildStartTime

実行するには、configで宣言する必要があります(実行時まで使用できません)。値を[Filled Automatically]に設定しました

ご想像のとおり、この時間はビルド開始時間に設定されているため、一部のニーズには理想的ではない場合があります。しかし、それは簡単で信頼できます。

0
GLaw

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
0
maninvan

ビルドステップで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"
0
Youngjae