0

別のアプリケーションから TFS の下でビルドをトリガーできるようにするレイヤーを作成しています。

その意図は、Microsoft Dynamics CRM サイトがビルドをトリガーできるようにすることです。これを簡単にするために、Dynamics サイトがビルドを開始し、識別子を取得し、ステータスと結果をポーリングできるようにする非常に単純な Web ベースのサービスを作成しました。

ビルドのトリガーにより、次のことが行われます。

IBuildRequest buildRequest = buildDefinition.CreateBuildRequest();
IQueuedBuild queuedBuild = buildServer.QueueBuild(buildRequest);

次に、queuedBuild の識別子 (Id) をクライアントに返します。次に、この識別子を使用してサービスをポーリングして、ビルドがまだ実行中か終了したかを確認できます。問題は、queuedBuild が Build プロパティを介して実際のビルドにアクセスできるようにする一方で、ビルドがキューの先頭に到達して開始された場合にのみ、これが満たされることです。それまでは、このプロパティは null を返します (それ以外の場合は builds 識別子を使用していたでしょう)。

わかりましたので、キューに入れられたビルドのキューをクエリし続けることにしました。これは、ビルドが終了するまで機能し、キューに入れられたビルドがキューから削除されるため、ビルド情報を取得できなくなります。

私が求めているのは、ステートレスに TFS にクエリを実行して、トリガーされたビルドがまだキューにあるか、ビルド中か、または終了したかを確認する方法です。これを行う方法はありますか?

4

1 に答える 1

0

あなたはこのようにすることができます

queuedBuild.WaitForBuildStart();

このブロッキング呼び出しが終了すると、Buildプロパティは null にはなりません

詳細はこちら:

于 2014-05-26T07:59:36.513 に答える