ソリューションが私のために機能していないように見えるので、私はここで尋ねられ答えられたものとは異なる何かをしている必要があります: TeamCity、あるビルドステップで生成されたIDを後のビルドステップに渡す
1つのビルドステップで生成された文字列を最終ビルドステップで使用したい。これまでのところ、空の「TEST」という環境変数を設定しました。どちらのビルドステップもコマンドラインランナーを使用します。
ビルドステップ#1:
\##teamcity[setParameter name='env.TEST' value='test']
ビルドステップ#2:
echo $TEST
echo %env.TEST%;
とりあえずプレースホルダーですが、ビルドステップ1で設定したテスト文字列( 'test')にアクセスできれば、とても嬉しいです。
その文字列をエコーする必要があります。
echo "##teamcity[setParameter name='env.TEST' value='test']"
私が見つけたのは、TeamCityがログ出力を2つの別々の行に分解するとすぐに、長い値でechoは機能しなくなります-代わりにWrite-Host
を使用する必要があるということです。
Write-Host "##teamcity[setParameter name='env.TEST' value='test']"
これは常に機能するはずですが、余談ですが、この値は後続のビルドステップでのみ使用できます。
そこに余分な「\」があると思います。それを削除してみて、二重引用符を追加してみてください。
"##teamcity[setParameter name='env.TEST' value='test']"
それが機能しない場合は、Powershellランナータイプを使用してみてください。これは、それを使用して設定し、機能するためです。
上記の答えをさらに詳しく説明すると、Powershellでは、ビルドステップ1では次のようになります。
Write-Host "##teamcity[setParameter name='env.TEST' value='$test']"
...そして、ステップ2で次のような値を使用できます。
echo %env.Test%
また、メモとして、TCビルドパラメータのenv.Testを何かに設定する必要があります。値はpsスクリプトで設定されることがわかっているので、スペースを使用しました。お役に立てれば。
これはSTDOUTに出力する必要があります。変数を使用して動的に構成パラメーターを設定する場合に一重引用符をエスケープする必要がないように、cat
をheredoc
とともに使用します。 ヒアドキュメントとは
MYVARNAME=MYVALUE
cat <<EOF
##teamcity[setParameter name='myConfParameter' value='$MYVARNAME']
EOF
結果:
##teamcity[setParameter name='myConfParameter' value='MYVALUE']
こちらは公式チケットです 追加の二重引用符とエコーについて(書き込みホスト-OS依存関係)。