示例#1
0
    private void OnBuildCompletionEvent(BuildCompletionEvent2 e)
    {
        Debug.instance().Write("Process Build Number " + e.BuildNumber + " from " + e.TeamProject);

            var tfs = Utils.ConnectToTFS();
            var buildStore = (IBuildServer) tfs.GetService(typeof(IBuildServer));

            var url = new Uri(e.Url);
            var buildUri = HttpUtility.ParseQueryString(url.Query).Get("builduri");
            var detail = buildStore.GetBuild(new Uri(buildUri));
            detail.RefreshAllDetails();

            var changeSetsData = InformationNodeConverters.GetAssociatedChangesets(detail);

            Debug.instance().Write("Number of ChangeSets: " + changeSetsData.Count);

            var reference = e.DefinitionPath;
            var index = reference.LastIndexOf("\\");

            if(index >= 0)
            {
                reference = reference.Substring(index + 1);
            }

            var results = v1Component.Value.GetBuildProjects(reference);

            if(results.Count == 0)
            {
                Debug.instance().Write("No results for reference " + reference);
            }

            foreach (var buildProject in results)
            {
                var ts = DateTime.Parse(e.FinishTime) - DateTime.Parse(e.StartTime);
                var buildRun = v1Component.Value.CreateBuildRun(buildProject, e.BuildNumber, DateTime.Parse(e.FinishTime), ts.Seconds);

                var statuses = v1Component.Value.GetBuildRunStatuses();
                var status = e.StatusCode == "Succeeded"
                                 ? statuses.First(x => x.Name == "Passed")
                                 : statuses.First(x => x.Name == "Failed");
                buildRun.Status = status;

                v1Component.Value.CreateLink(new Link(e.Url, "TFS Build Results", true), buildRun);

                var descriptionBuilder = new StringBuilder();

                foreach (var csd in changeSetsData)
                {
                    var changeSets = v1Component.Value.GetChangeSets("TFS:" + csd.ChangesetId);

                    foreach (var changeSet in changeSets)
                    {
                        if(descriptionBuilder.Length > 0)
                        {
                            descriptionBuilder.Append(Environment.NewLine);
                        }

                        descriptionBuilder.Append(changeSet.Description);

                        foreach (var primaryWorkitem in v1Component.Value.GetPrimaryWorkitems(changeSet))
                        {
                            var remove = v1Component.Value.GetBuildRuns(primaryWorkitem, buildProject);

                            v1Component.Value.RemoveBuildRunsFromWorkitem(primaryWorkitem, remove);
                            v1Component.Value.Save(primaryWorkitem);

                            v1Component.Value.AddBuildRunsToWorkitem(primaryWorkitem, new[]{buildRun});
                            v1Component.Value.Save(primaryWorkitem);
                        }
                    }

                    v1Component.Value.AddChangeSetsToBuildRun(buildRun, changeSets);
                    v1Component.Value.Save(buildRun);
                }

                buildRun.Description = descriptionBuilder.ToString();
                v1Component.Value.Save(buildRun);
            }

            Debug.instance().Write("BuildRun Save Successful");
    }
示例#2
0
        private void OnBuildCompletionEvent(BuildCompletionEvent2 e)
        {
            Debug.instance().Write("Process Build Number " + e.BuildNumber + " from " + e.TeamProject);

            var tfs        = Utils.ConnectToTFS();
            var buildStore = (IBuildServer)tfs.GetService(typeof(IBuildServer));

            var url      = new Uri(e.Url);
            var buildUri = HttpUtility.ParseQueryString(url.Query).Get("builduri");
            var detail   = buildStore.GetBuild(new Uri(buildUri));

            detail.RefreshAllDetails();

            var changeSetsData = InformationNodeConverters.GetAssociatedChangesets(detail);

            Debug.instance().Write("Number of ChangeSets: " + changeSetsData.Count);

            var reference = e.DefinitionPath;
            var index     = reference.LastIndexOf("\\");

            if (index >= 0)
            {
                reference = reference.Substring(index + 1);
            }

            var results = v1Component.Value.GetBuildProjects(reference);

            if (results.Count == 0)
            {
                Debug.instance().Write("No results for reference " + reference);
            }

            foreach (var buildProject in results)
            {
                var ts       = DateTime.Parse(e.FinishTime) - DateTime.Parse(e.StartTime);
                var buildRun = v1Component.Value.CreateBuildRun(buildProject, e.BuildNumber, DateTime.Parse(e.FinishTime), ts.Seconds);

                var statuses = v1Component.Value.GetBuildRunStatuses();
                var status   = e.StatusCode == "Succeeded"
                                 ? statuses.First(x => x.Name == "Passed")
                                 : statuses.First(x => x.Name == "Failed");
                buildRun.Status = status;

                v1Component.Value.CreateLink(new Link(e.Url, "TFS Build Results", true), buildRun);

                var descriptionBuilder = new StringBuilder();

                foreach (var csd in changeSetsData)
                {
                    var changeSets = v1Component.Value.GetChangeSets("TFS:" + csd.ChangesetId);

                    foreach (var changeSet in changeSets)
                    {
                        if (descriptionBuilder.Length > 0)
                        {
                            descriptionBuilder.Append(Environment.NewLine);
                        }

                        descriptionBuilder.Append(changeSet.Description);

                        foreach (var primaryWorkitem in v1Component.Value.GetPrimaryWorkitems(changeSet))
                        {
                            var remove = v1Component.Value.GetBuildRuns(primaryWorkitem, buildProject);

                            v1Component.Value.RemoveBuildRunsFromWorkitem(primaryWorkitem, remove);
                            v1Component.Value.Save(primaryWorkitem);

                            v1Component.Value.AddBuildRunsToWorkitem(primaryWorkitem, new[] { buildRun });
                            v1Component.Value.Save(primaryWorkitem);
                        }
                    }

                    v1Component.Value.AddChangeSetsToBuildRun(buildRun, changeSets);
                    v1Component.Value.Save(buildRun);
                }

                buildRun.Description = descriptionBuilder.ToString();
                v1Component.Value.Save(buildRun);
            }

            Debug.instance().Write("BuildRun Save Successful");
        }