私は同じ問題に悩まされ、Evgeny が言及した問題に投票しました。私たちが考えた解決策の 1 つは、sergiussergius が述べたように、ビルド ステップ シーケンスに最後のステップを追加して、REST API を使用してカスタム ビルド パラメーターを渡すことにより、次のビルド構成を手動でトリガーすることでした。しかし、この場合、ビルド チェーンの情報が失われています。TeamCity 9.x を使用して、REST API でいくつかのことを試してみると、トリガー (祖先) ビルドとトリガーされた (子) ビルドからそのパラメーターを取得できるようにするソリューションを実装できました。最初に行うことは、TeamCity によって設定された環境変数を使用して現在のビルドを取得することです。
https://<host>/httpAuth/app/rest/builds/number:<env.BUILD_NUMBER>,buildType:(name:<env.TEAMCITY_BUILDCONF_NAME>,project:<env.TEAMCITY_PROJECT_NAME>)
REST API からの応答には、トリガーに関する情報を含む/build/triggeredタグがあります。このように見えます
<triggered type="unknown" details="##triggeredByBuildType='<triggering-build-configuration-internalId>' triggeredByBuild='<triggering-build-number>'" date="20160105T190642+0700"/>
私たちにとってはbtxxxのように見えます。そこから、REST API への次の要求を使用して、トリガー ビルド (祖先) にアクセスできます。
https://<host>/httpAuth/app/rest/builds/number:<triggering-build-number>'4,buildType:(internalId:<triggering-build-configuration-internalId>1,project:name:<env.TEAMCITY_PROJECT_NAME>)
応答から、祖先ビルドのパラメーター値を取得し、次を使用して現在のビルドに設定できます。
echo "##teamcity[setParameter name='env.ENV_AAA' value='aaaaaaaaaa']")
ノート:
- この投稿では、TeamCity バージョン 7.X を参照しています。TeamCity バージョン 9.X を使用してこれを行いましたが、以前のバージョンでは試すことができませんでした。私の投稿で言及されている REST API 呼び出しが以前のバージョンと似ているかどうかはわかりません。
- このソリューションでは、祖先のビルド構成 (ビルドをトリガーするもの) と子のビルド構成 (トリガーされるもの) が同じプロジェクトにあります。私は 2 つの異なるプロジェクトでビルド構成を使用してテストを行いませんでした: 「トリガー」タグが祖先のプロジェクトに関する情報を提供することを期待します。誰かがテストをしてくれるといいですね。
この解決策が役立つことを願っています!