TFSから特定のビルドを取得しようとしていますが、難解です。私はこのようなビルドをトリガーするMVCアプリケーションを持っている:TFS APIで特定のビルドを入手する方法
IBuildServer buildServer = (IBuildServer)Server.GetService(typeof(IBuildServer));
IBuildDefinition def = buildServer.GetBuildDefinition(TeamProject, BuildDefinition);
var queuedBuild = buildServer.QueueBuild(def);
QueueBuildはIQueuedBuildを返し、私はこのような何かを行うに期待していた:私は私ができるいくつかのユニークな価値を持っているなるように
return queuedBuild.Build.BuildNumber
を正しいビルドバックを得るためにビルドサーバに問い合わせるのに使います。残念なことに、ビルドは、実行がこのメソッドを終了するときにnullになることもありますし、そうでないこともありません。
ビルドが、私は、このメソッド
public string GetBuildStatus(string TeamProject, string BuildDefinition, string BuildNumber)
{
string status = string.Empty;
IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(TeamProject, BuildDefinition);
buildDetailSpec.MaxBuildsPerDefinition = 1;
buildDetailSpec.Status = BuildStatus.InProgress | BuildStatus.None;
buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
IBuildQueryResult queryResult = buildServer.QueryBuilds(buildDetailSpec);
if (queryResult.Builds.Length > 0)
{
status = queryResult.Builds[0].Status.ToString();
}
return status;
}
これがある程度動作しますが、複数存在する場合、私は、ビルド私は場合は、このポーリング方式に知る方法はありませんキュー内のビルドをポーリングキューに登録された後、と一緒に働くことは、私が最初の方法で待っていたものです。誰も私が最初の方法でキューに入れられている特定のビルドを取得するために何ができるか考えていますか?
ありがとうございます!
私がポーリング方法に入るとき私がウリを知らないのであれば、私が探しているビルドがどのようになっているかわかりますか? – dparsons
最初のメソッドでビルド番号を返すのではなく、 'Build.Uri'を返します。 – DaveShaw
これは動作しません。 queuedBuildのBuildプロパティは、ビルドの前に別のビルドがある場合はnullです。 – dparsons