6

teamcity (7.1) でのスナップショットの依存関係の概念について、私は本当に理解できません。

ビルド パラメータ (データベース名とファイル) に応じてデータベースをデプロイするビルド プロジェクトがあり、Web アプリをビルドしてデプロイするビルド プロジェクトがあります。

ここでやりたいことは、これら 2 つのビルドを連鎖させ、ビルド パラメータをオーバーライドすることです。depency ビルド パラメータ (%dep.btXX.yyy%) にアクセスする方法のマニュアルを見つけましたが、アクセスしたくありません。オーバーライドしたいのです。

どうすればこれを達成できますか?ビルドとデプロイをトリガーしてからデータベースビルドをトリガーする新しいビルドを作成しましたが、依存関係パラメーターを完全に無視し、ビルドの順序を変更することもできません。

手伝ってくれてありがとう!

4

2 に答える 2

8

documentationによると、Teamcity 9 で可能になりました。

依存関係プロパティのオーバーライド

TeamCity 9.0 以降、依存ビルドで依存関係パラメーターを再定義することにより、依存関係パラメーターをオーバーライドする可能性があります。たとえば、ビルド構成 A は B に依存し、B は C に依存します。には、次の形式を使用して、依存関係のパラメーターを変更する機能があります: reverse.dep..

すべての依存関係のパラメーターを一度に変更することもできます: reverse.dep.*。

オーバーライドされる依存関係プロパティは、カスタム ビルド ダイアログまたはビルド構成パラメーターを介して、依存ビルド A のパラメーター名で指定できます。

新しいパラメーターをビルドにプッシュすると、「適切なビルドがある場合は新しいビルドを実行しない」スナップショット依存関係オプションが置き換えられ、パラメーターがデフォルト以外の値に設定されている場合、新しいビルドがトリガーされる場合があります。

于 2015-06-10T16:57:24.190 に答える
0

更新: この回答は、TeamCity v8 以前にのみ関連します

私はこれを自分で試しましたが、残念ながら現在は不可能だと思います。

Build Dependencies Setupドキュメントはこれをサポートしています:

ビルド A がビルド B に依存している場合、ビルド B からビルド A にプロパティを渡すことができます。つまり、プロパティはビルド チェーン フローの方向にのみ渡すことができ、その逆はできません

(一般的に賢明な)理由は、次のようなものだと思います。

  • 依存ビルド構成は、複数の他のビルド構成の依存関係である可能性があります。

考えてみてください: 2 つの親が (異なる) パラメーターを依存ビルドに渡したい場合、「最後に成功したビルド」に対して何が得られるでしょうか? 理論的には、TeamCity は最後のビルドのプロパティが必要なものと一致するかどうかを確認できます (そうでない場合は再構築)。しかし、それでも、すべての異なる環境のビルドの醜いビルド履歴になってしまいます。これは、ビルド構成の概念に実際には適合しません。

ビルド構成を再利用する最善の方法は、それらをテンプレート化し、プロジェクト レベルでプロパティを設定する複数のプロジェクトを作成して、含まれているすべてのビルド構成で使用できるようにすることです。

最終的には、プロジェクトで 2 つのビルド構成を使用する必要があるかどうかを再検討することをお勧めします。ベスト プラクティスは、ビルド構成とビルド ステップの数を最小限に抑えることです。できるだけ多くのビルド ロジックを独自のスクリプトに入れます。

于 2013-09-16T23:14:49.850 に答える