2017-01-25 11 views
1

私は、外部サーバーでAPIを呼び出すカスタムビルドステップ(プラグイン)をTFSに作成したいと考えています。サーバーからTFSに結果を送信し、ジョブが終了したことを通知したいと思います(約1〜2時間かかります)。私は次のビルドステップに進んでいきたいと思います。TFSはカスタムWebソケットをサポートしていますか?

これを行うには、出力を送信するためにサーバーに「コールバックURL」を送信する必要があります。私の質問は、私はTFSの(私のtfsプラグインから)そのような小さなWebソケットを開くことができますか? TFSにはそのためのフレームワークがありますか?または、このWebソケットを実行するプラグインにカスタムWebサービスプロセスを取り付けるべきですか?

このプラグインはビルドシステムの一部としてのステップであり、私のサーバーからの回答を得た後で終了します。このデータをサマリービルドページの別のプラグインに提示する必要があります。

TFSはこれらの機能の一部をサポートしていますか、それとも自分ですべてを実装する必要がありますか?

答えて

1

いいえ、サポートされていません。 REST APIを呼び出して、TFS(例:キュー/ストップビルド)で何かを行うことができます。

ループを一定速度で実行して、続行してください。例えば

(PowerShellを使用しPowerShellのステップを構築する):

$inprocess=true 
$loopDelayseconds = 300 
while($inprocess) 
{ 
    # send request to server and check the result 
    # if result is finished, set inprocess to false, else call Start-Sleep. 

    Start-Sleep -s $loopDelayseconds 
} 

ノード:タスクはあまりにも長い時間がかかる場合は、(一般的には>分のジョブタイムアウトを構築>の定義を構築)、ビルドジョブタイムアウト値を変更する必要があります。

+0

ありがとうございました。私は "Busy Wait"メカニズムより優れたソリューションがあると思っていました。 –

+0

@AviramFireberger、ビルドを一時停止して再開できないので、私はそうは思わない。 –

+0

ええ、私は、 "セマフォ待機"や "手動イベントリセット"のようなものがあると思っていました。ウェブソケットが応答を受け取ったときにトリガされるものです。私はMSがこのシナリオについて考えていなかったと思う:\ –

関連する問題