特定のビルド パラメーターをスケジュールされたトリガーにアタッチする方法を探しています。
アイデアは、製品のデバッグ バージョンを継続的に構築しているということです。ただし、ナイトリー ビルドはリリース ビルドでなければなりません。ほとんどのプロジェクトのビルド構成はまったく同じです。すでに構成パラメーターもあります。したがって、必要なのは、単一のビルド パラメーターのオーバーライドを指定できるトリガーだけです。これにより、維持するビルド構成が半分になります。
これを達成する方法はありますか?
特定のビルド パラメーターをスケジュールされたトリガーにアタッチする方法を探しています。
アイデアは、製品のデバッグ バージョンを継続的に構築しているということです。ただし、ナイトリー ビルドはリリース ビルドでなければなりません。ほとんどのプロジェクトのビルド構成はまったく同じです。すでに構成パラメーターもあります。したがって、必要なのは、単一のビルド パラメーターのオーバーライドを指定できるトリガーだけです。これにより、維持するビルド構成が半分になります。
これを達成する方法はありますか?
今すぐではありません。この問題をフォローできます。
私は同じ問題に悩まされ、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']")
ノート:
この解決策が役立つことを願っています!
最後のビルドステップにリクエストを追加しました
curl -i -u "%login%:%pass%" -H "Content-type: text/plain" -X PUT -d "v1" http://tc.server/httpAuth/app/rest/buildTypes/id:%buildConfigurationId%/parameters/env.%SOME_PARAMETER%