private static IBuildDetailSpec GetBuildDetailSpec(int maxDays, string teamProject, string buildDefinition, IBuildServer buildServer)
        {
            IBuildDetailSpec spec = string.IsNullOrEmpty(buildDefinition) ?
                buildServer.CreateBuildDetailSpec(teamProject) :
                buildServer.CreateBuildDetailSpec(teamProject, buildDefinition);

            spec.MinFinishTime = DateTime.Now.Subtract(TimeSpan.FromDays(maxDays));
            spec.MaxFinishTime = DateTime.Now;
            spec.QueryDeletedOption = QueryDeletedOption.IncludeDeleted;
            return spec;
        }
        public IEnumerable <BuildStatus> GetBuildStatuses(IEnumerable <MyTfsBuildDefinition> buildDefinitionsQuery, bool applyBuildQuality)
        {
            var buildDefinitionUris = buildDefinitionsQuery.Select(bd => bd.Uri).ToArray();

            var inProgressQuery = _buildServer.CreateBuildDetailSpec(buildDefinitionUris);

            inProgressQuery.Status           = Microsoft.TeamFoundation.Build.Client.BuildStatus.InProgress;
            inProgressQuery.QueryOrder       = BuildQueryOrder.FinishTimeDescending;
            inProgressQuery.InformationTypes = new[] { ASSOCIATED_CHANGESET, ASSOCIATED_COMMIT };
            inProgressQuery.QueryOptions     = _firstRequest ? QueryOptions.Process : QueryOptions.None;

            var mostRecentQuery = _buildServer.CreateBuildDetailSpec(buildDefinitionUris);

            mostRecentQuery.MaxBuildsPerDefinition = 1;
            mostRecentQuery.Status           = Microsoft.TeamFoundation.Build.Client.BuildStatus.Failed | Microsoft.TeamFoundation.Build.Client.BuildStatus.PartiallySucceeded | Microsoft.TeamFoundation.Build.Client.BuildStatus.Succeeded;
            mostRecentQuery.QueryOrder       = BuildQueryOrder.FinishTimeDescending;
            mostRecentQuery.InformationTypes = new[] { ASSOCIATED_CHANGESET, ASSOCIATED_COMMIT };
            mostRecentQuery.QueryOptions     = _firstRequest ? QueryOptions.Process : QueryOptions.None;

            _firstRequest = false;

            var buildQueryResult = _buildServer.QueryBuilds(new [] { inProgressQuery, mostRecentQuery });

            var buildStatuses = new Dictionary <String, BuildStatus>();
            var buildDetail   = new Dictionary <String, IBuildDetail>();

            // Get last completed for each def
            foreach (var build in buildQueryResult[1].Builds)
            {
                buildDetail[GetBuildDefIdFromBuildDefUri(build.BuildDefinitionUri)] = build;
            }

            // Get current build (if any) and overwrite last completed
            foreach (var build in buildQueryResult[0].Builds)
            {
                buildDetail[GetBuildDefIdFromBuildDefUri(build.BuildDefinitionUri)] = build;
            }

            foreach (var build in buildDetail)
            {
                if (!buildStatuses.ContainsKey(build.Key))
                {
                    buildStatuses[build.Key] = CreateBuildStatus(build.Value, buildDefinitionsQuery, applyBuildQuality);
                }
            }

            return(buildStatuses.Values.ToArray());
        }
Exemple #3
0
        public IEnumerable <BuildStatus> GetBuildStatuses(IEnumerable <MyTfsBuildDefinition> buildDefinitionsQuery, bool applyBuildQuality)
        {
            var buildDefinitionUris = buildDefinitionsQuery.Select(bd => bd.Uri);

            IBuildDetailSpec[] buildDetailSpec = new IBuildDetailSpec[2];

            buildDetailSpec[0]                  = _buildServer.CreateBuildDetailSpec(buildDefinitionUris);
            buildDetailSpec[0].Status           = Microsoft.TeamFoundation.Build.Client.BuildStatus.InProgress;
            buildDetailSpec[0].QueryOrder       = BuildQueryOrder.FinishTimeDescending;
            buildDetailSpec[0].InformationTypes = new string[] { "AssociatedChangeset" };
            buildDetailSpec[0].QueryOptions     = _firstRequest ? QueryOptions.Process : QueryOptions.None;

            buildDetailSpec[1] = _buildServer.CreateBuildDetailSpec(buildDefinitionUris);
            buildDetailSpec[1].MaxBuildsPerDefinition = 1;
            buildDetailSpec[1].Status           = Microsoft.TeamFoundation.Build.Client.BuildStatus.All;
            buildDetailSpec[1].QueryOrder       = BuildQueryOrder.FinishTimeDescending;
            buildDetailSpec[1].InformationTypes = new string[] { "AssociatedChangeset" };
            buildDetailSpec[1].QueryOptions     = _firstRequest ? QueryOptions.Process : QueryOptions.None;

            _firstRequest = false;

            IBuildQueryResult[] buildQueryResult = _buildServer.QueryBuilds(buildDetailSpec);

            Dictionary <String, BuildStatus>  buildStatuses = new Dictionary <String, BuildStatus>();
            Dictionary <String, IBuildDetail> buildDetail   = new Dictionary <String, IBuildDetail>();

            // Get last completed for each def
            foreach (var build in buildQueryResult[1].Builds)
            {
                buildDetail[GetBuildDefIdFromBuildDefUri(build.BuildDefinitionUri)] = build;
            }

            // Get current build (if any) and overwrite last completed
            foreach (var build in buildQueryResult[0].Builds)
            {
                buildDetail[GetBuildDefIdFromBuildDefUri(build.BuildDefinitionUri)] = build;
            }

            foreach (var build in buildDetail)
            {
                if (!buildStatuses.ContainsKey(build.Key))
                {
                    buildStatuses[build.Key] = CreateBuildStatus(build.Value, applyBuildQuality);
                }
            }

            return(buildStatuses.Values.ToArray());
        }
Exemple #4
0
        public static TeamBuildDtoCollection GetTeamBuilds(this TfsConfigurationServer tfsConfigurationServer, Guid teamProjectCollectionId, string teamProjectName, IEnumerable <string> teamBuildDefinitionNames)
        {
            if (tfsConfigurationServer == null)
            {
                throw new ArgumentNullException("tfsConfigurationServer");
            }

            if (teamBuildDefinitionNames == null)
            {
                throw new ArgumentNullException("teamBuildDefinitionNames");
            }

            TfsTeamProjectCollection tfsTeamProjectCollection = tfsConfigurationServer.GetTeamProjectCollection(teamProjectCollectionId);
            IBuildServer             buildServer            = tfsTeamProjectCollection.GetService <IBuildServer>();
            TeamBuildDtoCollection   teamBuildDtoCollection = new TeamBuildDtoCollection();

            foreach (string teamBuildDefinitionName in teamBuildDefinitionNames)
            {
                IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(teamProjectName, teamBuildDefinitionName);
                buildDetailSpec.Reason             = BuildReason.All;
                buildDetailSpec.QueryOrder         = BuildQueryOrder.FinishTimeDescending;
                buildDetailSpec.QueryDeletedOption = QueryDeletedOption.ExcludeDeleted;
                IBuildQueryResult buildQueryResult = buildServer.QueryBuilds(buildDetailSpec);
                foreach (IBuildDetail buildDetail in buildQueryResult.Builds)
                {
                    TeamBuildDto teamBuildDto = new TeamBuildDto();
                    teamBuildDto.BuildNumber    = buildDetail.BuildNumber;
                    teamBuildDto.Uri            = buildDetail.Uri;
                    teamBuildDto.DefinitionName = teamBuildDefinitionName;
                    teamBuildDtoCollection.Add(teamBuildDto);
                }
            }

            return(teamBuildDtoCollection);
        }
        public static SortedDictionary <string, string> GetBuilds(string projName, string defName)
        {
            SortedDictionary <string, string> lsBuildsQuery = new SortedDictionary <string, string>();

            try
            {
                IBuildServer buildServer     = (IBuildServer)tfs.GetService(typeof(IBuildServer));
                ILinking     iLinkingService = tfs.GetService <ILinking>(); //can be used later to get build URL link

                //Specify query
                IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(projName.Trim(), defName.Trim());
                spec.InformationTypes = null;                             // for speed improvement
                spec.MinFinishTime    = DateTime.Now.AddDays(-21);        //to get only builds of last 2 weeks
                //spec.MaxBuildsPerDefinition = 1; //get only one build per build definintion
                spec.QueryOrder   = BuildQueryOrder.FinishTimeDescending; //get the latest build only
                spec.QueryOptions = QueryOptions.All;

                IBuildDetail[]      bDetails  = buildServer.QueryBuilds(spec).Builds;
                List <IBuildDetail> ibDetails = bDetails.OrderBy(x => x.CompilationStatus == BuildPhaseStatus.Succeeded).OrderByDescending(x => x.StartTime).Take(10).ToList();
                foreach (IBuildDetail ibdet in ibDetails)
                {
                    lsBuildsQuery.Add(ibdet.BuildNumber, ibdet.Uri.Port.ToString());
                }
            }
            catch (Exception ex)
            {
                lsBuildsQuery.Add("Please Load the definition first", "-1");
            }
            return(lsBuildsQuery);
        }
        private IBuildDetailSpec GetBuildDetailSpec(
            IBuildServer buildServer,
            string project,
            string buildGroup,
            DateTime since)
        {
            IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(project, buildGroup);

            spec.MinFinishTime = since;

            spec.QueryOrder = BuildQueryOrder.StartTimeAscending;

            spec.InformationTypes = null;

            spec.InformationTypes = new[]
            {
                InformationTypes.ConfigurationSummary, InformationTypes.AssociatedCommit,
                InformationTypes.AssociatedChangeset, InformationTypes.CompilationSummary,
                InformationTypes.BuildError, InformationTypes.BuildWarning
            };

            spec.Status = BuildStatus.Failed
                          | BuildStatus.PartiallySucceeded
                          | BuildStatus.Succeeded;

            spec.QueryDeletedOption = QueryDeletedOption.ExcludeDeleted;
            return(spec);
        }
        public static void FeedBuildDefinition(ICollection <BuildDefinition> collection, IBuildServer bs, string projectName)
        {
            IBuildDefinition[] buildDefinitions = bs.QueryBuildDefinitions(projectName);
            foreach (IBuildDefinition buildDefinition in buildDefinitions)
            {
                IBuildDetailSpec buildDetailSpec = bs.CreateBuildDetailSpec(buildDefinition);
                buildDetailSpec.QueryDeletedOption     = QueryDeletedOption.ExcludeDeleted;
                buildDetailSpec.MaxBuildsPerDefinition = 1;
                buildDetailSpec.Reason        = BuildReason.All;;
                buildDetailSpec.Status        = BuildStatus.Failed;
                buildDetailSpec.QueryOrder    = BuildQueryOrder.FinishTimeDescending;
                buildDetailSpec.MinFinishTime = DateTime.Now.AddMonths(-1);
                IBuildQueryResult overallBuildDetailsQueryResults = bs.QueryBuilds(buildDetailSpec);


                IBuildDetail[] buildDetails         = bs.QueryBuilds(buildDefinition);
                int            failedOrPartialCount = buildDetails.Count(x => x.Status == BuildStatus.Failed || x.Status == BuildStatus.PartiallySucceeded);
                IBuildDetail   lastFailedBuild      = buildDetails.Where(x => x.Status == BuildStatus.Failed).OrderBy(x => x.FinishTime).LastOrDefault();
                IBuildDetail   lastSucceededBuild   = buildDetails.Where(x => x.Status == BuildStatus.Succeeded).OrderBy(x => x.FinishTime).LastOrDefault();
                int            buildCount           = buildDetails.Count();

                BuildDefinition buildDef = new BuildDefinition()
                {
                    Name    = buildDefinition.Name,
                    Enabled = buildDefinition.Enabled,
                    ContinuousIntegrationType = buildDefinition.ContinuousIntegrationType.ToString(),
                    FailedOrPartialRatio      = buildCount != 0 ? failedOrPartialCount / buildCount : 0,
                    RetainedBuild             = buildCount,
                    LastSuccess = lastSucceededBuild != null ? lastSucceededBuild.FinishTime : DateTime.MinValue,
                    LastFail    = lastFailedBuild != null ? lastFailedBuild.FinishTime : DateTime.MinValue
                };
                collection.Add(buildDef);
            }
        }
Exemple #8
0
        private void LoadCbBuilds(object sender)
        {
            cbBuilds.Items.Clear();


            // bdef is the selected build definition
            var bdef = (((ComboBox)sender).SelectedItem) as IBuildDefinition;

            _builddef = bdef;
            if (bdef != null)
            {
                // _bs = IBuildServer service, create a new query
                IBuildDetailSpec def = bs.CreateBuildDetailSpec(_teamFoundationContext.TeamProjectName);
                // only bring back the last 100 deleted builds
                def.MaxBuildsPerDefinition = 100;
                // query for only deleted builds
                def.QueryDeletedOption = QueryDeletedOption.OnlyDeleted;
                // Last deleted should be returned 1st
                def.QueryOrder = BuildQueryOrder.FinishTimeDescending;
                // Only look for deleted builds in the chosen build definition
                def.DefinitionSpec.Name = bdef.Name;
                // Bring back deleted builds from any state
                def.Status = BuildStatus.All;
                // Pass this query for processing to the build service
                IBuildDetail[] builds = tfs.GetService <IBuildServer>().QueryBuilds(def).Builds;


                foreach (IBuildDetail build in builds)
                {
                    cbBuilds.Items.Add(build.BuildNumber);
                }

                cbBuilds.IsEnabled = true;
            }
        }
Exemple #9
0
        private TimeSpan GetLastSuccesfulBuildTime(IBuildServer buildServer, CatalogNode teamProjectNode,
                                                   IBuildDefinition def)
        {
            var buildTime = new TimeSpan();

            try
            {
                var inProgressBuildDetailSpec = buildServer.CreateBuildDetailSpec(teamProjectNode.Resource.DisplayName, def.Name);

                inProgressBuildDetailSpec.Status = BuildStatus.Succeeded;
                inProgressBuildDetailSpec.MaxBuildsPerDefinition = 1;
                inProgressBuildDetailSpec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;

                var lastSuccesfulBuild = buildServer.QueryBuilds(inProgressBuildDetailSpec).Builds.FirstOrDefault();

                if (lastSuccesfulBuild != null)
                {
                    buildTime = lastSuccesfulBuild.FinishTime - lastSuccesfulBuild.StartTime;
                }
            }
            catch (Exception e)
            {
                LogService.WriteError(e);
                throw;
            }
            return(buildTime);
        }
Exemple #10
0
        private static IBuildDetail Arrange(MockRepository mockRepository, IEnumerable <string> existingBuildNumbers)
        {
            IBuildDetail      mockBuildDetailForCurrentBuild = mockRepository.DynamicMock <IBuildDetail>();
            IBuildServer      mockBuildServer      = mockRepository.DynamicMock <IBuildServer>();
            IBuildDetailSpec  mockBuildDetailSpec  = mockRepository.DynamicMock <IBuildDetailSpec>();
            IBuildQueryResult mockBuildQueryResult = mockRepository.DynamicMock <IBuildQueryResult>();
            ArrayList         previousBuildsList   = new ArrayList();

            foreach (string existingBuildNumber in existingBuildNumbers)
            {
                IBuildDetail mockBuildDetailForPreviousBuild = mockRepository.DynamicMock <IBuildDetail>();
                previousBuildsList.Add(mockBuildDetailForPreviousBuild);
                Expect.Call(mockBuildDetailForPreviousBuild.BuildNumber).Return(existingBuildNumber);
            }

            IBuildDetail[] previousBuilds = (IBuildDetail[])previousBuildsList.ToArray(typeof(IBuildDetail));
            mockRepository.Record();
            Expect.Call(mockBuildDetailForCurrentBuild.BuildServer).Return(mockBuildServer);
            Expect.Call(mockBuildDetailForCurrentBuild.TeamProject).Return("TeamProjectName");
            Expect.Call(mockBuildServer.CreateBuildDetailSpec("TeamProjectName")).Return(mockBuildDetailSpec);
            Expect.Call(mockBuildServer.QueryBuilds(mockBuildDetailSpec)).Return(mockBuildQueryResult);
            Expect.Call(mockBuildQueryResult.Builds).Return(previousBuilds);

            return(mockBuildDetailForCurrentBuild);
        }
        private IEnumerable <IBuildDetail> GetBuildDetailsFromServer(IEnumerable <MyTfsBuildDefinition> buildDefinitions)
        {
            var buildDefinitionUris          = buildDefinitions.Select(bd => bd.Uri);
            IBuildDetailSpec buildDetailSpec = _buildServer.CreateBuildDetailSpec(buildDefinitionUris);

            buildDetailSpec.MaxBuildsPerDefinition = 1;
            buildDetailSpec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;

            IBuildQueryResult buildQueryResults;

            try
            {
                buildQueryResults = _buildServer.QueryBuilds(buildDetailSpec);
            }
            catch (DatabaseOperationTimeoutException ex)
            {
                Log.Debug(ex);
                throw new ServerUnavailableException();
            }
            catch (Exception ex)
            {
                Log.Error("Error retrieving build details", ex);
                throw new ServerUnavailableException("Error retrieving build details", ex);
            }
            var latestBuilds = from build in buildQueryResults.Builds
                               group build by build.BuildDefinition.Id
                               into g
                               select g.OrderByDescending(b => b.StartTime).First();

            return(latestBuilds.ToList());
        }
        private IEnumerable<IBuildDetail> GetBuilds(IBuildServer server, string status, DateTime started, DateTime finished, string collection)
        {
            var query = server.CreateBuildDetailSpec(collection);
              query.Status = (BuildStatus)Enum.Parse(typeof(BuildStatus), status);
              query.MinFinishTime = started;
              query.MaxFinishTime = finished;

              return server.QueryBuilds(query).Builds;
        }
Exemple #13
0
        private IBuildDetail GetLatestBuildDetails(IBuildServer buildServer, IBuildDefinition def)
        {
            IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(_configuration.TfsTeamProjectName, def.Name);
            spec.MaxBuildsPerDefinition = 1;
            spec.QueryOrder = BuildQueryOrder.FinishTimeDescending;

            var builds = buildServer.QueryBuilds(spec);
            return builds.Builds.FirstOrDefault();
        }
Exemple #14
0
 /// <summary>
 /// This method gets all the builds for specified time period
 /// </summary>
 /// <param name="bd"></param>
 /// <param name="startTime"></param>
 /// <param name="endTime"></param>
 /// <returns></returns>
 public IBuildDetail[] GetBuildsForSpecifiedTimePeriod(BuildDefinition bd, DateTime startTime, DateTime endTime)
 {
     try
     {
         //Specify query
         var spec = _buildServer.CreateBuildDetailSpec(bd.TeamProject, bd.DefinitionName);
         spec.InformationTypes = null;                                 // for speed improvement
         spec.MinFinishTime    = startTime;                            //to get only builds of last 3 weeks
         spec.MaxFinishTime    = endTime;
         spec.QueryOrder       = BuildQueryOrder.FinishTimeDescending; //get the latest build only
         spec.QueryOptions     = QueryOptions.All;
         return(_buildServer.QueryBuilds(spec).Builds);
     }
     catch (Exception)
     {
         return(null);
     }
 }
        private void MonitorBuilds(object state)
        {
            if (!_isBackgroundProcessRunning)
            {
                _isBackgroundProcessRunning = true;

                List <BuildDefinitionItem> crashedBuilds = new List <BuildDefinitionItem>();

                foreach (var buildItem in BuildList)
                {
                    BuildRunItem newLastRun = null;

                    // get last run for particular build
                    //var details = buildItem.TFSBuildDefInstance.QueryBuilds();

                    IBuildDetailSpec spec = BuildServer.CreateBuildDetailSpec("*");
                    spec.InformationTypes = null;                                       // for speed improvement
                    //spec.MinFinishTime = DateTime.Now.AddDays(-21); //to get only builds of last 3 weeks
                    spec.MaxBuildsPerDefinition = 1;                                    //get only one build per build definintion
                    spec.QueryOrder             = BuildQueryOrder.FinishTimeDescending; //get the latest build only
                    spec.QueryOptions           = QueryOptions.All;
                    spec.DefinitionSpec.Name    = buildItem.Name;

                    var details = BuildServer.QueryBuilds(spec).Builds;

                    if (details != null)
                    {
                        newLastRun = GetBuildRunInfo(details);

                        //check that status changed
                        if (newLastRun != null && buildItem.LastRun != null &&
                            (
                                newLastRun.BuildNumber != buildItem.LastRun.BuildNumber
                                ||
                                newLastRun.BuildStatus != buildItem.LastRun.BuildStatus
                            )
                            )
                        {
                            buildItem.LastRun = newLastRun;

                            crashedBuilds.Add(buildItem);
                        }
                    }
                }

                if (BuildStatusChanged != null)
                {
                    BuildStatusChanged(this, new BuildStatusChangedEventArgs()
                    {
                        BuildDefinitions = crashedBuilds.ToArray()
                    });
                }

                _isBackgroundProcessRunning = false;
            }
        }
Exemple #16
0
        public IList <IBuild> QueryBuilds(DateTime?sinceDate, bool?running)
        {
            var result = new List <IBuild>();

            foreach (var buildDefinition in _buildDefinitions)
            {
                var buildSpec = _buildServer.CreateBuildDetailSpec(buildDefinition);
                buildSpec.InformationTypes = null;
                if (sinceDate.HasValue)
                {
                    buildSpec.MinFinishTime = sinceDate.Value;
                }

                if (running.HasValue && running.Value)
                {
                    buildSpec.Status = Microsoft.TeamFoundation.Build.Client.BuildStatus.InProgress;
                }

                result.AddRange(_buildServer.QueryBuilds(buildSpec).Builds.Select(b =>
                {
                    var id          = b.Uri.AbsoluteUri.Substring(b.Uri.AbsoluteUri.LastIndexOf('/') + 1);
                    string duration = string.Empty;
                    if (b.Status != Microsoft.TeamFoundation.Build.Client.BuildStatus.NotStarted &&
                        b.Status != Microsoft.TeamFoundation.Build.Client.BuildStatus.None &&
                        b.Status != Microsoft.TeamFoundation.Build.Client.BuildStatus.Stopped)
                    {
                        if (b.Status == Microsoft.TeamFoundation.Build.Client.BuildStatus.InProgress)
                        {
                            duration = " / " + GetDuration(DateTime.Now - b.StartTime);
                        }
                        else
                        {
                            duration = " / " + GetDuration(b.FinishTime - b.StartTime);
                        }
                    }

                    return(new BuildInfo
                    {
                        Id = id,
                        Label = b.BuildNumber,
                        StartDate = b.StartTime,
                        Status = ConvertStatus(b.Status),
                        IsFinished = b.BuildFinished,
                        Description = GetStatus(b) + duration,
                        Revision = b.SourceGetVersion,
                        Url = _urlPrefix + (_isWebServer
                                      ? Uri.EscapeDataString(b.Uri.AbsoluteUri) + "&_a=summary"
                                      : id),
                    });
                }).Cast <IBuild>().ToList());
            }

            result = QueryBuilds2015(result, sinceDate, running);
            return(result);
        }
Exemple #17
0
        private IBuildDetail GetLatestBuildDetails(IBuildServer buildServer, IBuildDefinition def)
        {
            IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(_configuration.TfsTeamProjectName, def.Name);

            spec.MaxBuildsPerDefinition = 1;
            spec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;

            var builds = buildServer.QueryBuilds(spec);

            return(builds.Builds.FirstOrDefault());
        }
Exemple #18
0
        public static string GetLastSuccededDropLocation(string projName, string buildDefinitionName)
        {
            projName = GetProjectName(projName);
            var cred = new NetworkCredential("SERVICE_ACCOUNT_NAME", "SERVICE_ACCOUNT_PASSWORD", "SERVICE_ACCOUNT_DOMAIN");

            var configurationServerUri = new Uri("TFS_URL_TILL_COLLECTION");
            TfsConfigurationServer configurationServer =
                TfsConfigurationServerFactory.GetConfigurationServer(configurationServerUri);

            CatalogNode configurationServerNode = configurationServer.CatalogNode;

            // Query the children of the configuration server node for all of the team project collection nodes
            ReadOnlyCollection <CatalogNode> tpcNodes = configurationServerNode.QueryChildren(
                new Guid[] { CatalogResourceTypes.ProjectCollection },
                false,
                CatalogQueryOptions.None);

            foreach (CatalogNode tpcNode in tpcNodes)
            {
                ServiceDefinition tpcServiceDefinition = tpcNode.Resource.ServiceReferences["Location"];

                ILocationService configLocationService = configurationServer.GetService <ILocationService>();
                Uri tpcUri = new Uri(configLocationService.LocationForCurrentConnection(tpcServiceDefinition));

                // Actually connect to the team project collection
                TfsTeamProjectCollection   tpc  = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tpcUri);
                ITestManagementService     tms  = tpc.GetService <ITestManagementService>();
                ITestManagementTeamProject proj = tms.GetTeamProject(projName);
                IBuildServer tfsBuildServer     = tpc.GetService <IBuildServer>();
                // Reading from XML
                try
                {
                    IBuildServer buildServer = (IBuildServer)tpc.GetService(typeof(IBuildServer));
                    //Specify query
                    IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(projName.Trim(), buildDefinitionName.Trim());
                    spec.InformationTypes = null;                                // for speed improvement
                    spec.QueryOrder       = BuildQueryOrder.FinishTimeAscending; //get the latest build only
                    spec.QueryOptions     = QueryOptions.All;

                    IBuildDetail bDetail = buildServer.QueryBuilds(spec).Builds.OrderBy(x => x.CompilationStatus == BuildPhaseStatus.Succeeded).Last();
                    LatestTestBuild = bDetail.DropLocation;
                    LoggerUtil.LogMessageToFile("The ip resolve");
                    IPAddress ip   = null;
                    string    arr2 = LatestTestBuild.Split('\\')[2];
                    Network.GetResolvedConnecionIPAddress(LatestTestBuild.Split('\\')[2], out ip);
                    string temp = string.Join(@"\", LatestTestBuild.Split('\\').Select(s => s.Replace(arr2, ip.ToString())).ToArray());
                    LatestTestBuild = temp;
                    LoggerUtil.LogMessageToFile(LatestTestBuild);
                    break;
                }
                catch { }
            }
            return(LatestTestBuild);
        }
        private IBuildDetail GetLatestBuildDetails(IBuildServer buildServer, IBuildDefinition def, string teamProjectName)
        {
            IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(teamProjectName, def.Name);

            spec.MaxBuildsPerDefinition = 1;
            spec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;
            spec.Status = BuildStatus.Succeeded;
            spec.Reason = BuildReason.All ^ BuildReason.ValidateShelveset;

            var builds = buildServer.QueryBuilds(spec);

            return(builds.Builds.FirstOrDefault());
        }
Exemple #20
0
        static void QueryBuildHistory(IBuildServer buildServer)
        {
            Console.WriteLine();
            Console.WriteLine("QueryBuildHistory:");

            IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec("Contoso");

            spec.MinFinishTime = DateTime.Now.AddDays(-5);
            IBuildDetail[] builds = buildServer.QueryBuilds(spec).Builds;

            foreach (IBuildDetail build in builds)
            {
                Console.WriteLine(build.BuildNumber);
            }
        }
        public static string GetBuildPath(string buildTitle, string projName, string defName)
        {
            IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));
            //Specify query
            IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(projName.Trim(), defName.Trim());

            spec.InformationTypes = null;                             // for speed improvement
            spec.MinFinishTime    = DateTime.Now.AddDays(-21);        //to get only builds of last 2 weeks
            //spec.MaxBuildsPerDefinition = 1; //get only one build per build definintion
            spec.QueryOrder   = BuildQueryOrder.FinishTimeDescending; //get the latest build only
            spec.QueryOptions = QueryOptions.All;

            IBuildDetail bDetail = buildServer.QueryBuilds(spec).Builds.Where(x => x.DropLocation.Contains(buildTitle)).First();

            return(bDetail.DropLocation);
        }
        private void updateBuildNumber(int testPlanId)
        {
            //Define the variables
            string serverurl = Collection;
            Uri    configurationServerUri = new Uri(serverurl);
            string project   = _ProjectName;
            int    myPlansId = testPlanId;

            try
            {
                //Get the build uri needed from build number
                TfsTeamProjectCollection tfsserv = new TfsTeamProjectCollection(configurationServerUri);
                Uri buildUri = null;


                IBuildServer buildServer = (IBuildServer)tfsserv.GetService(typeof(IBuildServer));

                IBuildDetailSpec detailSpec = buildServer.CreateBuildDetailSpec(project);
                detailSpec.MaxBuildsPerDefinition = 1;
                detailSpec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;
                IBuildQueryResult results = buildServer.QueryBuilds(detailSpec);
                if (results.Builds.Length == 1)
                {
                    IBuildDetail detail = results.Builds[0];
                    buildUri = detail.Uri;
                }

                //Update the test plan
                ITestManagementTeamProject proj = GetProject(serverurl, project);
                ITestPlan plan = proj.TestPlans.Find(myPlansId);
                Console.WriteLine("Test Plan: {0}", plan.Name);
                Console.WriteLine("Plan ID: {0}", plan.Id);
                Console.WriteLine("Previous Build Uri: {0}", plan.PreviousBuildUri);
                Console.WriteLine("Build Currently In Use: {0}", plan.BuildNumber);
                plan.BuildUri = buildUri;
                Console.WriteLine("\n Build updated in Test Plan \n");
                Console.WriteLine("Build Currently In Use: {0}", plan.BuildNumber);
                plan.Save();
            }
            catch (Exception e)
            {
                Console.WriteLine("\n There was an error \n");
                Console.WriteLine(e);
            }
        }
        private static IBuildDetail[] RetourneNbBuildDef(IBuildServer _bs, string TeamProject, IBuildDefinition buildDefinition, int nbMax)
        {
            IBuildDetailSpec def = _bs.CreateBuildDetailSpec(TeamProject);

            // only bring back the last 100 deleted builds
            def.MaxBuildsPerDefinition = nbMax;
            // query for only deleted builds
            def.QueryDeletedOption = QueryDeletedOption.OnlyDeleted;
            // Last deleted should be returned 1st
            def.QueryOrder = BuildQueryOrder.FinishTimeDescending;
            // Only look for deleted builds in the chosen build definition
            def.DefinitionSpec.Name = buildDefinition.Name;
            // Bring back deleted builds from any state
            def.Status = BuildStatus.All;
            // Pass this query for processing to the build service
            IBuildDetail[] builds = _bs.QueryBuilds(def).Builds;
            return(builds);
        }
        /// <summary>
        /// Returns available builds in the form of build numbers for a given team project and build definition.
        /// </summary>
        /// <param name="teamProject">Team project name</param>
        /// <param name="buildDefinition">Build definition name</param>
        /// <returns>List of strings</returns>
        public IEnumerable <string> GetAvailableBuildNumbers(string teamProject, string buildDefinition)
        {
            if (null == teamProject)
            {
                throw new ArgumentNullException("teamProject");
            }

            if (null == buildDefinition)
            {
                throw new ArgumentNullException("buildDefinition");
            }

            var spec = _buildServer.CreateBuildDetailSpec(teamProject, buildDefinition);

            spec.InformationTypes = new string[] { };

            return(new List <string>(_buildServer.QueryBuilds(spec).Builds.Select(x => x.BuildNumber)));
        }
Exemple #25
0
        private IBuildDetail GetBuild(IBuildServer buildServer, CatalogNode teamProjectNode, IBuildDefinition def, DateTime filterDate)
        {
            IBuildDetail build = null;
            try
            {
                var buildDetailSpec = buildServer.CreateBuildDetailSpec(teamProjectNode.Resource.DisplayName, def.Name);

                buildDetailSpec.MaxBuildsPerDefinition = 1;
                buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
                buildDetailSpec.MinFinishTime = filterDate;

                build = buildServer.QueryBuilds(buildDetailSpec).Builds.FirstOrDefault();
            }
            catch (Exception e)
            {
                LogService.WriteError(e);
                throw;
            }
            return build;
        }
        private static void DeleteBuildsForDefinition(ApplicationTask task, IBuildServer buildServer, int step, BuildDefinitionInfo buildDefinition)
        {
            var buildDetailSpec = buildServer.CreateBuildDetailSpec(new[] { buildDefinition.Uri, });
            var buildsToDelete  = buildServer.QueryBuilds(buildDetailSpec).Builds;

            if (buildsToDelete.Any())
            {
                task.SetProgress(step, string.Format(CultureInfo.CurrentCulture, "Deleting {0} builds for definition \"{1}\" in Team Project \"{2}\"", buildsToDelete.Count(), buildDefinition.Name, buildDefinition.TeamProject));
                foreach (var buildToDelete in buildsToDelete)
                {
                    try
                    {
                        buildToDelete.Delete(DeleteOptions.All);
                    }
                    catch (Exception exc)
                    {
                        task.SetWarning(string.Format(CultureInfo.CurrentCulture, "An error occurred while deleting build number \"{0}\" for definition \"{1}\" in Team Project \"{2}\"", buildToDelete.BuildNumber, buildDefinition.Name, buildDefinition.TeamProject), exc);
                    }
                }
            }
        }
Exemple #27
0
        /// <summary>
        /// Gets the latest build number
        /// </summary>
        /// <param name="projectName"></param>
        /// <returns></returns>
        public string GetLatestBuildNumber()
        {
            (new Logger())
            .SetMessage("Querying build definitions.")
            .SetLoggingType(Logger.Type.Information)
            .Display();

            IBuildServer     buildServer = this.projectCollection.GetService <IBuildServer>();
            IBuildDetailSpec buildSpec   = buildServer.CreateBuildDetailSpec(projectName);

            buildSpec.MaxBuildsPerDefinition = 1;
            buildSpec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;
            IBuildQueryResult query = buildServer.QueryBuilds(buildSpec);

            if (query.Builds.Count() == 0)
            {
                return(null);
            }
            IBuildDetail detail = query.Builds[0];

            return(detail.BuildNumber);
        }
Exemple #28
0
        static void Main(string[] args)
        {
            // Auth with UserName & Password (Microsoft Acc):
            //BasicAuthCredential basicCred = new BasicAuthCredential(new NetworkCredential("*****@*****.**", "pw"));
            //TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
            //tfsCred.AllowInteractive = false;
            //
            //TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("https://code-inside.visualstudio.com/DefaultCollection"), tfsCred);

            TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("https://code-inside.visualstudio.com/DefaultCollection"));

            IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));

            var builds = buildServer.QueryBuilds("DrinkHub");

            foreach (IBuildDetail build in builds)
            {
                var result = string.Format("Build {0}/{3} {4} - current status {1} - as of {2}",
                                           build.BuildDefinition.Name,
                                           build.Status.ToString(),
                                           build.FinishTime,
                                           build.LabelName,
                                           Environment.NewLine);

                System.Console.WriteLine(result);
            }

            // Detailed via http://www.incyclesoftware.com/2012/09/fastest-way-to-get-list-of-builds-using-ibuildserver-querybuilds-2/

            var buildSpec = buildServer.CreateBuildDetailSpec("DrinkHub", "Main.Continuous");

            buildSpec.InformationTypes = null;
            var buildDetails = buildServer.QueryBuilds(buildSpec).Builds;

            Console.WriteLine(buildDetails.First().Status);

            Console.ReadLine();
        }
        public IEnumerable <BuildInformation> GetBuilds(string projectName, string buildDefinition, DateTime minFinishedTime)
        {
            IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(projectName, buildDefinition);

            buildDetailSpec.MaxBuildsPerDefinition = 5;
            buildDetailSpec.QueryOrder             = BuildQueryOrder.StartTimeDescending;
            buildDetailSpec.MinFinishTime          = minFinishedTime.AddSeconds(1);

            var builds = buildServer.QueryBuilds(buildDetailSpec);
            var tests  = testManagementService.GetTeamProject(projectName);

            return(builds.Builds
                   .Select(b => new
            {
                Build = b,
                TestRuns = tests.TestRuns.ByBuild(b.Uri).ToList(),
                StaticAnalysis = b.GetStaticAnalysisInfo() ?? new StaticAnalysisInfo(),
                CheckinComments = b.GetCheckinComments(),
                WorkItemTitles = b.GetWorkItemTitles()
            })
                   .Select(b => new BuildInformation
            {
                Uri = b.Build.Uri.ToString(),

                StartedAt = b.Build.StartTime,
                FinishedAt = b.Build.FinishTime,
                TriggeredBy = RemoveDomainFromUsername(b.Build.RequestedFor),
                Status = TranslateBuildStatus(b.Build.Status).ToString(),
                TestsFailed = b.TestRuns.Select(run => run.Statistics.FailedTests).Sum(),
                TestsPassed = b.TestRuns.Select(run => run.Statistics.PassedTests).Sum(),
                TestsTotal = b.TestRuns.Select(run => run.Statistics.TotalTests).Sum(),
                CodeAnalysisErrors = b.StaticAnalysis.StaticAnalysisErrors,
                CodeAnalysisWarnings = b.StaticAnalysis.StaticAnalysisWarnings,
                CompilerWarnings = b.StaticAnalysis.CompilationWarnings,
                CheckinComments = string.Join(" +++ ", b.CheckinComments),
                WorkItemTitles = string.Join(", ", b.WorkItemTitles),
            }).ToList());
        }
        static void QueryBuildHistory(IBuildServer buildServer)
        {
            Console.WriteLine();
            Console.WriteLine("QueryBuildHistory:");

            IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec("Contoso");
            spec.MinFinishTime = DateTime.Now.AddDays(-5);
            IBuildDetail[] builds = buildServer.QueryBuilds(spec).Builds;

            foreach (IBuildDetail build in builds)
            {
                Console.WriteLine(build.BuildNumber);
            }
        }
Exemple #31
0
        private IBuildDetail GetBuild(IBuildServer buildServer, CatalogNode teamProjectNode, IBuildDefinition def, DateTime filterDate)
        {
            IBuildDetail build = null;
            try
            {
                var buildDetailSpec = buildServer.CreateBuildDetailSpec(teamProjectNode.Resource.DisplayName, def.Name);

                buildDetailSpec.MaxBuildsPerDefinition = 1;
                buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
                buildDetailSpec.MinFinishTime = filterDate;

                build = buildServer.QueryBuilds(buildDetailSpec).Builds.FirstOrDefault();
            }
            catch (Exception e)
            {
                LogService.WriteError(e);
                throw;
            }
            return build;
        }
Exemple #32
0
        private TimeSpan GetLastSuccesfulBuildTime(IBuildServer buildServer, CatalogNode teamProjectNode,
            IBuildDefinition def)
        {
            var buildTime = new TimeSpan();
            try
            {
                var inProgressBuildDetailSpec = buildServer.CreateBuildDetailSpec(teamProjectNode.Resource.DisplayName, def.Name);

                inProgressBuildDetailSpec.Status = BuildStatus.Succeeded;
                inProgressBuildDetailSpec.MaxBuildsPerDefinition = 1;
                inProgressBuildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;

                var lastSuccesfulBuild = buildServer.QueryBuilds(inProgressBuildDetailSpec).Builds.FirstOrDefault();

                if (lastSuccesfulBuild != null)
                {
                    buildTime = lastSuccesfulBuild.FinishTime - lastSuccesfulBuild.StartTime;
                }
            }
            catch (Exception e)
            {
                LogService.WriteError(e);
                throw;
            }
            return buildTime;
        }
        private static IBuildQueryResult GetSprintBuilds(IBuildServer buildService, string teamProject,
                                                   string buildName, DateTime startDate, DateTime endDate)
        {
            var buildSpec = buildService.CreateBuildDetailSpec(teamProject);
            buildSpec.MinFinishTime = startDate;
            buildSpec.MaxFinishTime = endDate;
            buildSpec.Status = BuildStatus.All;
            buildSpec.QueryOrder = BuildQueryOrder.FinishTimeAscending;
            buildSpec.DefinitionSpec.Name = buildName;
            buildSpec.MaxBuildsPerDefinition = 1500;

            var builds = buildService.QueryBuilds(buildSpec);
            return builds;
        }
        private void GetBuildResults(TeamProject teamProject, IBuildServer buildServer, IEnumerable<IBuildDefinition> buildDefinitions)
        {
            Parallel.ForEach(buildDefinitions, buildDefinition => {
                IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(teamProject.Name, buildDefinition.Name);
                buildDetailSpec.MaxBuildsPerDefinition = 5;
                buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;

                var buildResult = buildServer.QueryBuilds(buildDetailSpec);
                try {
                    Application.Current.Dispatcher.BeginInvoke(new Action(() => BuildResults.Add(buildResult)));
                } catch (NullReferenceException) { }
            });
        }
Exemple #35
0
        /// <summary>
        /// Discover all available versions.
        /// </summary>
        /// <param name="name">The component name</param>
        /// <returns>A list with all versions</returns>
        public IEnumerable <IComponentVersion> GetAvailableVersions(IComponentName name)
        {
            var versList = new List <IComponentVersion>();

            Logger.Instance().Log(TraceLevel.Info, "{0}: Querying available component versions...", ResolverType);

            var teamProject = _versionControlServer.TryGetTeamProject(name.TeamProject);

            if (teamProject == null)
            {
                Logger.Instance().Log(
                    TraceLevel.Info,
                    "{0}: Could not find team project {1} on version control server for team project collection {2}",
                    ResolverType,
                    name.TeamProject,
                    ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl));
                throw new InvalidComponentException(
                          string.Format(
                              "Could not find team project {0} on version control server for team project collection {1}",
                              name.TeamProject,
                              ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl)));
            }

            var buildDef = _buildServer.GetBuildDefinition(teamProject.Name, name.BuildDefinition);

            if (buildDef == null)
            {
                Logger.Instance().Log(
                    TraceLevel.Info,
                    "{0}: Could not find build definition {1} for team project {2} on version control server for tfs {3}",
                    ResolverType,
                    name.BuildDefinition,
                    name.TeamProject,
                    ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl));
                throw new InvalidComponentException(
                          string.Format(
                              "Could not find build definition {0} for team project {1} on version control server for tfs {2}",
                              name.BuildDefinition,
                              name.TeamProject,
                              ResolverSettings.GetSetting(ResolverValidSettings.TeamProjectCollectionUrl)));
            }

            // Query all builds with this teamProject and build definition name
            // BuildNumber xor (BuildQuality or BuildStatus) = version
            var spec = _buildServer.CreateBuildDetailSpec(buildDef);

            spec.InformationTypes = new string[] { };
            var details = _buildServer.QueryBuilds(spec);

            foreach (var buildResult in details.Builds)
            {
                List <string> availableBuildQuality = null;
                if (buildResult.Quality != null)
                {
                    availableBuildQuality = new List <string> {
                        buildResult.Quality
                    };
                }

                var availableBuildStatus = new List <string> {
                    buildResult.Status.ToString()
                };
                var vers = new ComponentVersion(buildResult.BuildNumber, availableBuildStatus, availableBuildQuality, null);
                versList.Add(vers);
                Logger.Instance().Log(TraceLevel.Info, "{0}: Found build {1}", ResolverType, vers.ToString());
            }

            Logger.Instance().Log(TraceLevel.Info, "{0}: Querying component versions finished successfully", ResolverType);
            return(versList);
        }