안녕
는 TFS 2010
내가 빌드 실패 이벤트에 가입하는 것이 가능하다는 것을 알고 있지만 나는 마지막 빌드를 부러 조회 할 수있는 방법이 있나요 TFS의 마지막 빌드를 부러 누가 어떻게합니까 마지막 빌드와 빌드 상태를 얻으려면 TFS에 쿼리하고 파손 된 경우에는 누가 파손했는지 확인하고 싶습니다.I 2010
/지미
안녕
는 TFS 2010
내가 빌드 실패 이벤트에 가입하는 것이 가능하다는 것을 알고 있지만 나는 마지막 빌드를 부러 조회 할 수있는 방법이 있나요 TFS의 마지막 빌드를 부러 누가 어떻게합니까 마지막 빌드와 빌드 상태를 얻으려면 TFS에 쿼리하고 파손 된 경우에는 누가 파손했는지 확인하고 싶습니다.I 2010
/지미
다음 코드는 당신에게 최신 빌드를 얻을 것이다. 이것은 TFS2008이지만 TFS2010에서도 통화가 정상적으로 작동합니다.
public static IBuildDetail GetMostRecentBuild(TeamFoundationServer tfs, string teamProject, string buildName)
{
IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));
IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(teamProject, buildName);
buildDetailSpec.MaxBuildsPerDefinition = 1;
buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
buildDetailSpec.Status = BuildStatus.Failed | BuildStatus.PartiallySucceeded | BuildStatus.Stopped | BuildStatus.Succeeded;
IBuildQueryResult results = buildServer.QueryBuilds(buildDetailSpec);
if (results.Failures.Length != 0)
{
throw new ApplicationException("this needs to go away and be handled more nicely");
}
if (results.Builds.Length == 1)
{
return results.Builds[0];
}
else
{
return null;
}
}
누가 빌드를 망가 뜨 렸는지 알기 란 쉽지 않습니다. 당신이해야 할 일은 results.Builds[]
어레이를 거쳐 마지막으로 성공한 빌드를 찾는 것입니다. 일단 그렇게하면 마지막으로 성공한 빌드 이후 발생한 모든 변경 집합에 대해 팀 프로젝트를 쿼리 할 수 있습니다. 다음 코드는 그렇게 할 수 있습니다 : 이것은 당신에게 빌드를 부러 졌을 수 후보 변경 집합의 목록을 제공합니다
public static List<Changeset> GetChangesetsSinceDate(TeamFoundationServer tfs, DateTime date, string path)
{
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
VersionSpec versionFrom = GetDateVSpec(date);
VersionSpec versionTo = GetDateVSpec(DateTime.Now);
IEnumerable results = vcs.QueryHistory(path, VersionSpec.Latest, 0, RecursionType.Full, "", versionFrom, versionTo, int.MaxValue, false, true);
List<Changeset> changes = new List<Changeset>();
foreach (Changeset changeset in results)
{
changes.Add(changeset);
}
return changes;
}
private static VersionSpec GetDateVSpec(DateTime date)
{
//Format is Dyyy-MM-ddTHH:mm example: D2009-11-16T14:32
string dateSpec = string.Format("D{0:yyy}-{0:MM}-{0:dd}T{0:HH}:{0:mm}", date);
return VersionSpec.ParseSingleSpec(dateSpec, "");
}
. 이들은 당신이 이야기하기를 원하는 사람들이 될 것입니다.
아마 이것에 대해서 알고 싶을 것입니다. 빌드 로그의 실패한 프로젝트를 변경 세트의 파일과 일치시켜 일부 마법을 시도 할 수도 있지만 잠재적으로 큰 빌드 로그 파일을 구문 분석하는 것이됩니다.
+1 GetDateVSpec() 함수에 +1! – MrDustpan
GetChangesetsSinceDate (TeamFoundationServer tfs, DateTime date, string path)에서'path'의 값은 무엇입니까? –
빌드 된 분기의 경로 여야합니다. 정확히 어떤 것들을 가지는지에 달려 있습니다. 우리에게, "Fred"어플리케이션의 dev build라면, 그것은'$/Fred/Dev/src'입니다. – Robaticus