web-dev-qa-db-ja.com

TeamCity-ビルドステップ間で情報を渡すためのsetParameterの使用

ソリューションが私のために機能していないように見えるので、私はここで尋ねられ答えられたものとは異なる何かをしている必要があります: TeamCity、あるビルドステップで生成されたIDを後のビルドステップに渡す

1つのビルドステップで生成された文字列を最終ビルドステップで使用したい。これまでのところ、空の「TEST」という環境変数を設定しました。どちらのビルドステップもコマンドラインランナーを使用します。

ビルドステップ#1:

\##teamcity[setParameter name='env.TEST' value='test']

ビルドステップ#2:

echo $TEST

echo %env.TEST%;

とりあえずプレースホルダーですが、ビルドステップ1で設定したテスト文字列( 'test')にアクセスできれば、とても嬉しいです。

22
user1467961

その文字列をエコーする必要があります。

echo "##teamcity[setParameter name='env.TEST' value='test']"
36
dmitko

私が見つけたのは、TeamCityがログ出力を2つの別々の行に分解するとすぐに、長い値でechoは機能しなくなります-代わりにWrite-Hostを使用する必要があるということです。

Write-Host "##teamcity[setParameter name='env.TEST' value='test']"

これは常に機能するはずですが、余談ですが、この値は後続のビルドステップでのみ使用できます。

9
BrokenGlass

そこに余分な「\」があると思います。それを削除してみて、二重引用符を追加してみてください。

 "##teamcity[setParameter name='env.TEST' value='test']"

それが機能しない場合は、Powershellランナータイプを使用してみてください。これは、それを使用して設定し、機能するためです。

5
Adarsh Shah

上記の答えをさらに詳しく説明すると、Powershellでは、ビルドステップ1では次のようになります。

Write-Host "##teamcity[setParameter name='env.TEST' value='$test']"

...そして、ステップ2で次のような値を使用できます。

echo %env.Test%

また、メモとして、TCビルドパラメータのenv.Testを何かに設定する必要があります。値はpsスクリプトで設定されることがわかっているので、スペースを使用しました。お役に立てれば。

4
Japster24

これはSTDOUTに出力する必要があります。変数を使用して動的に構成パラメーターを設定する場合に一重引用符をエスケープする必要がないように、catheredocとともに使用します。 ヒアドキュメントとは

MYVARNAME=MYVALUE
cat <<EOF
##teamcity[setParameter name='myConfParameter' value='$MYVARNAME']
EOF

結果:

##teamcity[setParameter name='myConfParameter' value='MYVALUE']

ドキュメント

3
sdkks

こちらは公式チケットです 追加の二重引用符とエコーについて(書き込みホスト-OS依存関係)。

0
dikkini