2

TeamCity 7.1.3 には次のセットアップがあります。

プロジェクトA

  • ビルド & デプロイ A
  • テスト A (クイック)
  • テスト A (遅い)
  • テスト A (非常に遅い)

プロジェクトB

  • ビルド & デプロイ B
  • テスト B (クイック)
  • テスト B (遅い)

A のすべてのテストは「Build & Deploy A」に依存し、B のすべてのテストは「Build & Deploy B」に依存しています。依存関係はすべて、次の設定を持つスナップショットの依存関係です。

  • 適切なビルドがある場合は、新しいビルドを実行しないでください
  • 適切なビルドから成功したビルドのみを使用する
  • 同じエージェントでビルドを実行する

すべてのテストには VCS トリガーがあります。スロー テストは、ソース管理の特定のフォルダーが変更された場合にのみ実行されます。プロジェクト A に対してコミットが行われると、次のプロジェクトがビルド キューに追加されます。

  • ビルド & デプロイ A
  • テスト A (クイック)
  • テスト A (遅い)
  • テスト A (非常に遅い)

プレコミット ビルドは、ビルド キューでより高い優先度で実行されます。そのため、「Build & Deploy A」の実行中にプロジェクト B に対して事前コミット チェックが行われると、ビルド キューは次のようになります。

  • ビルド & デプロイ B
  • テスト B (クイック)
  • テスト B (遅い)
  • テスト A (クイック)
  • テスト A (遅い)
  • テスト A (非常に遅い)

このセットアップの問題は、プロジェクト B がデプロイされた後に A のテストが実行されることを意味することです。これは、プロジェクト B の展開によって、プロジェクト A に必要なファイルの一部が上書きされるため、問題になります。個人用ビルドによって上書きされるファイルは、展開されたファイルであり、チェックアウト フォルダーにないため、ロールバックされません。テストのビルド チェーンが中断されないようにする方法はありますか?

依存関係から「適切なビルドがある場合は新しいビルドを実行しない」設定を削除すると、各テストで完全なビルドとデプロイが必要になります。'Test A (Very Slow)' が実行されることがありますが、'Test A (Slow)' は実行されないため、低速のテストは他のテストに依存して線形チェーンを作成することはできません。

残念ながら、現時点ではビルドとデプロイを分割してアーティファクトを作成することはできません。

これを TeamCity で効率的に設定する方法はありますか?

4

2 に答える 2

1

ここに私が集めているものがあります:

  • A と B は相互に排他的であると見なす必要があります。
  • A は常に B よりも低いビルド優先度を持つ必要がありますが、
  • 開始したら、A を中断しないでください。

これで TeamCity と戦う方法があるかもしれません。知らない。プロセスを少し変更しても構わない場合は、次のいずれかが機能する可能性があります。

  1. さまざまなターゲットに展開できるようにA、環境を複製します。B これにより、それらは互いに完全に独立して実行できます。複数のビルド エージェント (少なくとも と のそれぞれに 1 つA)Bを使用して、より高速で優先度の高いBものを、より低速で優先度の低いものと同時に実行できるようにしますA。(これはかなりの特典になると思います。)
  2. プロセスをよりアトミックにします。 さまざまなビルド/デプロイ/テスト ピースを 1 つの構成にマージして、Aビルド チェーンの保留中の部分が .xml によって置き換えられないようにしBます。
于 2013-02-04T17:34:53.027 に答える
1

「ビルドとデプロイ」の両方のビルド構成で、ビルド タイプとビルド番号を含むデプロイメント フォルダーにテキスト ファイルを書き込むことで、問題を解決しました。すべてのテストで、テキスト ファイルの値が現在のビルドのスナップショットの依存関係と比較されます。それらの値が異なる場合は、ビルドを再トリガーし (依存関係を強制的に再ビルドします)、現在のビルドをキャンセルします。

次を呼び出してビルドをキャンセルします。

http://teamcity.jetbrains.com/guestAuth/ajax.html?comment=<CommentMessage>&submit=Stop&buildId=<BuildId>&kill

依存関係を再構築に設定してビルドをトリガーする方法:

HTTP 経由でトリガーされたときに、TeamCity ビルドに強制的に依存関係を再構築させることはできますか?

これは、テストが段階的に実行されていない場合、デプロイが再トリガーされてからテストが実行されることを意味します。

于 2013-02-11T14:58:19.887 に答える