Ejemplo n.º 1
0
        public List<TfsBuildResults> GetLastBuild(int hoursFromNow, string team)
        {
            _buildDetailSpec = _buildServer.CreateBuildDetailSpec("*");
            _buildDetailSpec.MinFinishTime = DateTime.Now.AddHours(-hoursFromNow);
            _buildDetailSpec.InformationTypes = null;  // for speed improvement
            _buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
            _buildDetailSpec.QueryOptions = QueryOptions.All;
            var stopper = new Stopwatch();
            stopper.Start();

            var tfsBuildResults = new List<TfsBuildResults>();
            var builds = _buildServer.QueryBuilds(_buildDetailSpec).Builds;

            builds.Where(k => k.TeamProject == team).ToList().ForEach(build => tfsBuildResults.Add(new TfsBuildResults
            {
                BuildNumber = build.BuildNumber,
                CompilationStatus = build.CompilationStatus == BuildPhaseStatus.Succeeded ? "Succeeded" : "Failed",
                DurationInMinutes = new TimeSpan(build.FinishTime.Ticks - build.StartTime.Ticks).Minutes,
                FinishTime = build.FinishTime,
                LabelName = build.LabelName,
                StartTime = build.StartTime,
                Uri = build.Uri.ToString(),
                TeamProject = build.BuildDefinition.Name,
            }));

            return tfsBuildResults;
        }
        public void SetUp()
        {
            this.buildServerMock      = MockRepository.GenerateMock <IBuildServer>();
            this.buildDetailSpecMock  = MockRepository.GenerateMock <IBuildDetailSpec>();
            this.buildQueryResultMock = MockRepository.GenerateMock <IBuildQueryResult>();

            this.communicator             = new BuildCommunicator("http://www.tfs.com");
            this.communicator.buildServer = buildServerMock;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Connects the specified URL.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <param name="projectName">Name of the project.</param>
        /// <returns></returns>
        public TfsConnector Connect(string url, string projectName)
        {
            var tfs = new TfsTeamProjectCollection(new Uri(url));

            this.buildServer     = (IBuildServer)tfs.GetService(typeof(IBuildServer));
            this.buildDetailSpec = this.buildServer.CreateBuildDetailSpec(projectName);

            return(this);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Connects the specified URL.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <param name="projectName">Name of the project.</param>
        /// <returns></returns>
        public TfsConnector Connect(string url, string projectName)
        {
            var tfs = new TfsTeamProjectCollection(new Uri(url));

            this.buildServer = (IBuildServer) tfs.GetService(typeof (IBuildServer));
            this.buildDetailSpec = this.buildServer.CreateBuildDetailSpec(projectName);

            return this;
        }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
        public Task <IBuildDetail[]> getBuildsAsync(IBuildDetailSpec mybuildspec)
        {
            Task <IBuildDetail[]> task1 = Task <IBuildDetail[]> .Factory.StartNew(() =>
            {
                var results = buildserver.QueryBuilds(mybuildspec).Builds;
                return(results);
            });

            return(task1);
        }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
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());
        }
Ejemplo n.º 9
0
 public Task <IBuildDetail[]> QueryBuildsAsync(IBuildDetailSpec detailSpec)
 {
     return(Task.Run(() =>
     {
         var buildServer = BuildServer;
         if (buildServer != null)
         {
             return Check.TryCatch <IBuildDetail[], Exception>(() => buildServer.QueryBuilds(detailSpec).Builds);
         }
         return new IBuildDetail[0];
     }));
 }
Ejemplo n.º 10
0
        private void GetLatestInfo()
        {
            this.LogTaskMessage(string.Format(CultureInfo.CurrentCulture, "Getting Latest Build Information for: {0}", this.BuildDefinitionName));
            IBuildDetailSpec buildDetailSpec = this.buildServer.CreateBuildDetailSpec(this.TeamProject);

            if (this.BuildDefinitionName != null)
            {
                buildDetailSpec.DefinitionSpec.Name = this.BuildDefinitionName;
            }

            // Only get latest
            buildDetailSpec.MaxBuildsPerDefinition = 1;
            buildDetailSpec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;
            if (!string.IsNullOrEmpty(this.Status))
            {
                this.LogTaskMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, "Filtering on Status: {0}", this.Status));
                buildDetailSpec.Status = (BuildStatus)System.Enum.Parse(typeof(BuildStatus), this.buildStatus);
            }

            // do the search and extract the details from the singleton expected result
            IBuildQueryResult results = this.buildServer.QueryBuilds(buildDetailSpec);

            if (results.Failures.Length == 0 && results.Builds.Length >= 1)
            {
                this.buildDetails = results.Builds[0];
                ITaskItem ibuildDef = new TaskItem(this.BuildDefinitionName);
                ibuildDef.SetMetadata("BuildDefinitionUri", this.buildDetails.BuildDefinitionUri.ToString());
                ibuildDef.SetMetadata("BuildFinished", this.buildDetails.BuildFinished.ToString());
                ibuildDef.SetMetadata("BuildNumber", this.buildDetails.BuildNumber ?? string.Empty);
                ibuildDef.SetMetadata("BuildUri", this.buildDetails.Uri.ToString());
                ibuildDef.SetMetadata("CompilationStatus", this.buildDetails.CompilationStatus.ToString());
                ibuildDef.SetMetadata("CompilationSuccess", this.buildDetails.CompilationStatus == BuildPhaseStatus.Succeeded ? "true" : "false");
                ibuildDef.SetMetadata("DropLocation", this.buildDetails.DropLocation ?? string.Empty);
                ibuildDef.SetMetadata("FinishTime", this.buildDetails.FinishTime.ToString());
                ibuildDef.SetMetadata("KeepForever", this.buildDetails.KeepForever.ToString());
                ibuildDef.SetMetadata("LabelName", this.buildDetails.LabelName ?? string.Empty);
                ibuildDef.SetMetadata("LastChangedBy", this.buildDetails.LastChangedBy ?? string.Empty);
                ibuildDef.SetMetadata("LastChangedOn", this.buildDetails.LastChangedOn.ToString());
                ibuildDef.SetMetadata("LogLocation", this.buildDetails.LogLocation ?? string.Empty);
                ibuildDef.SetMetadata("Quality", this.buildDetails.Quality ?? string.Empty);
                ibuildDef.SetMetadata("Reason", this.buildDetails.Reason.ToString());
                ibuildDef.SetMetadata("RequestedBy", this.buildDetails.RequestedBy ?? string.Empty);
                ibuildDef.SetMetadata("RequestedFor", this.buildDetails.RequestedFor ?? string.Empty);
                ibuildDef.SetMetadata("SourceGetVersion", this.buildDetails.SourceGetVersion ?? string.Empty);
                ibuildDef.SetMetadata("StartTime", this.buildDetails.StartTime.ToString() ?? string.Empty);
                ibuildDef.SetMetadata("Status", this.buildDetails.Status.ToString() ?? string.Empty);
                ibuildDef.SetMetadata("TestStatus", this.buildDetails.TestStatus.ToString() ?? string.Empty);
                ibuildDef.SetMetadata("TestSuccess", this.buildDetails.TestStatus == BuildPhaseStatus.Succeeded ? "true" : "false");
                this.Info     = ibuildDef;
                this.BuildUri = this.buildDetails.Uri.ToString();
            }
        }
        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());
        }
Ejemplo n.º 12
0
        private IEnumerable<IBuildDetail> GetBuildsFromTfs(int maxDays, string teamProject, string buildDefinition)
        {
            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;

            var builds = BuildServer.QueryBuilds(spec).Builds.OrderBy(b => b.BuildDefinition.Name).ThenByDescending(b => b.FinishTime);
            return builds;
        }
Ejemplo n.º 13
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);
            }
        }
Ejemplo n.º 14
0
        async Task <IBuildDetail[]> SearchBuilds(IBuildDefinition buildDef)
        {
            List <IBuildDetail> builds = new List <IBuildDetail>();
            await Task.Run(() =>
            {
                IBuildDetailSpec buildDetailSpec   = TfsShared.Instance.BuildServer.CreateBuildDetailSpec(buildDef);
                buildDetailSpec.QueryDeletedOption = SelectedQueryDeletedOption;
                buildDetailSpec.QueryOptions       = SelectedQueryOption;

                IBuildQueryResult result = TfsShared.Instance.BuildServer.QueryBuilds(buildDetailSpec);
                builds = result.Builds.ToList();
            });

            return(builds.ToArray());
        }
Ejemplo n.º 15
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());
        }
Ejemplo n.º 16
0
 static int HighestExistingBuildNumber(string expandedPrefix, IBuildDetail buildDetail, IBuildDetailSpec spec, int max)
 {
     IBuildQueryResult result = buildDetail.BuildServer.QueryBuilds(spec);
     int length = expandedPrefix.Length;
     foreach (IBuildDetail detail in result.Builds)
     {
         int num2;
         string buildNumber = detail.BuildNumber;
         if (((buildNumber.Length > (length + 1)) && int.TryParse(buildNumber.Substring(length + 1), out num2)) &&
             (num2 > max))
         {
             max = num2;
         }
     }
     return max;
 }
        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);
        }
Ejemplo n.º 18
0
        private static IBuildDetail Arrange(MockRepository mockRepository)
        {
            IBuildDetail      mockBuildDetailForCurrentBuild = mockRepository.DynamicMock <IBuildDetail>();
            IBuildServer      mockBuildServer      = mockRepository.DynamicMock <IBuildServer>();
            IBuildDetailSpec  mockBuildDetailSpec  = mockRepository.DynamicMock <IBuildDetailSpec>();
            IBuildQueryResult mockBuildQueryResult = mockRepository.DynamicMock <IBuildQueryResult>();
            ArrayList         previousBuildsList   = new ArrayList();

            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);
        }
Ejemplo n.º 19
0
        public string GetLatestBuildNumberFromAllBuildDefinitions(string teamProjectName)
        {
            IBuildDetailSpec buildDetailSpec = this.buildServer.CreateBuildDetailSpec(teamProjectName);

            buildDetailSpec.Reason                 = BuildReason.All;
            buildDetailSpec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;
            buildDetailSpec.QueryDeletedOption     = QueryDeletedOption.IncludeDeleted;
            buildDetailSpec.MaxBuildsPerDefinition = 1;
            IBuildQueryResult buildQueryResult = this.buildServer.QueryBuilds(buildDetailSpec);

            if (buildQueryResult.Builds.Length < 1)
            {
                return(null);
            }

            return(buildQueryResult.Builds[0].BuildNumber);
        }
        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>
        /// Get the label details.
        /// </summary>
        protected override void InternalExecute()
        {
            var buildServer = this.BuildServer.Get(this.ActivityContext);
            var teamProject = this.TeamProject.Get(this.ActivityContext);
            var buildName   = this.BuildName.Get(this.ActivityContext);

            // Create a build spec to find the latest build
            IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(teamProject, buildName);

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

            // Query the build server for the latest build
            IBuildQueryResult results = buildServer.QueryBuilds(buildDetailSpec);

            // Return the build
            this.BuildDetail.Set(this.ActivityContext, results.Builds[0]);
        }
Ejemplo n.º 23
0
        public string[] GetLatestBuildNumbersFromAllBuildDefinitions(string teamProjectName, int numberOfBuildNumbersToRetrieve)
        {
            IBuildDetailSpec buildDetailSpec = this.buildServer.CreateBuildDetailSpec(teamProjectName);

            buildDetailSpec.Reason                 = BuildReason.All;
            buildDetailSpec.QueryOrder             = BuildQueryOrder.FinishTimeDescending;
            buildDetailSpec.QueryDeletedOption     = QueryDeletedOption.IncludeDeleted;
            buildDetailSpec.MaxBuildsPerDefinition = numberOfBuildNumbersToRetrieve;
            IBuildQueryResult buildQueryResult = this.buildServer.QueryBuilds(buildDetailSpec);
            ArrayList         buildNumberList  = new ArrayList(numberOfBuildNumbersToRetrieve);

            for (int i = 0; i < numberOfBuildNumbersToRetrieve && i < buildQueryResult.Builds.Length; i++)
            {
                buildNumberList.Add(buildQueryResult.Builds[i].BuildNumber);
            }

            return((string[])buildNumberList.ToArray(typeof(string)));
        }
Ejemplo n.º 24
0
        private IBuildDetail GetGoodBuild()
        {
            IBuildDefinition buildDef        = this.bs.GetBuildDefinition(this.teamProject, this.buildDefinition);
            IBuildDetailSpec buildDetailSpec = this.bs.CreateBuildDetailSpec(buildDef);

            buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
            buildDetailSpec.Status     = BuildStatus.Succeeded;
            if (!string.IsNullOrEmpty(this.buildQuality))
            {
                buildDetailSpec.Quality = this.buildQuality;
            }

            IBuildQueryResult builds = this.bs.QueryBuilds(buildDetailSpec);

            IBuildDetail latestBuild = builds.Builds.FirstOrDefault();

            return(latestBuild);
        }
Ejemplo n.º 25
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);
        }
Ejemplo n.º 26
0
        int HighestExistingBuildNumber(IBuildDetail buildDetail, IBuildDetailSpec detailSpec)
        {
            var queryResult = buildDetail.BuildServer.QueryBuilds(detailSpec);

            var result = 0;

            foreach (IBuildDetail detail in queryResult.Builds)
            {
                // Parse the build number
                var buildParts = BuildNumberRegex.Match(detail.BuildNumber);

                if (!buildParts.Success) continue;

                // If this build has a higher revision number than the current one,
                // update the revision number to return.
                var revisionNumber = int.Parse(buildParts.Groups["Revision"].Value);

                if (revisionNumber > result) result = revisionNumber;
            }

            return result;
        }
Ejemplo n.º 27
0
        private void GetBuildDetails()
        {
            if (builddetaillist == null)
            {
                builddetaillist = new ObservableCollection <BuildDetailViewModel>();
            }
            builddetaillist.Clear();
            IBuildDetailSpec buildDetailSpec = _buildserver.CreateBuildDetailSpec(this.SelectedProject.Name, this.SelectedBuildDefinition.Name);

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

            IBuildDetail[] builds = getBuilds(buildDetailSpec);
            var            bdl    = new ObservableCollection <BuildDetailViewModel>();

            foreach (var item in builds)
            {
                var bdetailviewmodel = new BuildDetailViewModel(item);
                bdl.Add(bdetailviewmodel);
            }
            this.BuildDetailList = bdl;
        }
Ejemplo n.º 28
0
        public PipelineEnvironment(DeliveryPipeline pipeline, string environmentName, IBuildDefinition buildDefinition)
        {
            Pipeline        = pipeline;
            EnvironmentName = environmentName;
            BuildDefinition = buildDefinition;

            IsCommitBuildVisibility = EnvironmentName.Equals("Commit", StringComparison.InvariantCultureIgnoreCase) ? Visibility.Visible : Visibility.Collapsed;

            LastStatus          = new PipelineEnvironmentBuildStatus(null);
            LastBuildFinishTime = DateTime.MaxValue;
            LastBuildNumber     = "0";

            _queuedBuildsView = BuildDefinition.BuildServer.CreateQueuedBuildsView(new Uri[] { BuildDefinition.Uri });

            _queuedBuildsView.StatusFilter = QueueStatus.InProgress | QueueStatus.Queued;
            _queuedBuildsView.QueryOptions = QueryOptions.Definitions;

            _buildSpec = Pipeline.Source.BuildServer.CreateBuildDetailSpec(BuildDefinition);
            _buildSpec.InformationTypes = null;

            StartPolling();
        }
Ejemplo n.º 29
0
        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());
        }
Ejemplo n.º 30
0
        private IBuildDetail GetBuildDetail(string buildId)
        {
            if (buildId == Context.BUILD_NONE)
            {
                return(null);
            }

            IBuildDetailSpec buildDetailSpec = Context.BuildServer.CreateBuildDetailSpec(this.teamProject);

            buildDetailSpec.BuildNumber = buildId;
            IBuildQueryResult buildQueryResult = Context.BuildServer.QueryBuilds(buildDetailSpec);
            IBuildDetail      buildDetail      = buildQueryResult.Builds[0];
            bool queueBuild = false;

//            if (queueBuild)
//            {
//                IBuildRequest request = buildDetail.BuildDefinition.CreateBuildRequest();
//                request.Priority = QueuePriority.AboveNormal;
//                request.CommandLineArguments = "/p:ExtParamA=\"Toto je test\"";
//                Context.BuildServer.QueueBuild(request);
//            }
            return(buildDetail);
        }
        // Get All Deleted Builds for the selected build definition
        private void cbBuildDef_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            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(_selectedTeamProject);
                // 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 = _bs.QueryBuilds(def).Builds;


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

                cbBuilds.IsEnabled  = true;
                btnDelete.IsEnabled = true;
            }
        }
Ejemplo n.º 32
0
        public IList <BuildNumber> GetPromotableBuilds(int targetEnvironmentBuildNumber)
        {
            try
            {
                List <BuildNumber> promotableBuilds = new List <BuildNumber>();

                IBuildDetailSpec buildSpec = Pipeline.Source.BuildServer.CreateBuildDetailSpec(BuildDefinition);
                buildSpec.InformationTypes = null;
                buildSpec.Status           = BuildStatus.Succeeded;

                IBuildQueryResult buildDetails = Pipeline.Source.BuildServer.QueryBuilds(buildSpec);

                foreach (IBuildDetail buildDetail in buildDetails.Builds)
                {
                    if (buildDetail.BuildFinished)
                    {
                        IDictionary <string, object> processParams = WorkflowHelpers.DeserializeProcessParameters(buildDetail.ProcessParameters);

                        Build build = new Build(buildDetail);

                        int visibleBuildNumber = build.Number;

                        if (EnvironmentName == "Production")
                        {
                            string buildUriString = buildDetail.Uri.ToString();

                            string buildUri = buildUriString.Contains("?") ? buildUriString.Substring(0, buildUriString.IndexOf("?")) : buildUriString;

                            string buildUriPrefix = buildUri.Substring(0, buildUri.LastIndexOf("/") + 1);

                            Uri commitBuildUri = new Uri(string.Format("{0}{1}", buildUriPrefix, processParams["PriorBuild"] as string));

                            IBuildDetail commitBuildDetail = BuildDefinition.BuildServer.GetMinimalBuildDetails(commitBuildUri);

                            IDictionary <string, object> commitProcessParams = WorkflowHelpers.DeserializeProcessParameters(commitBuildDetail.ProcessParameters);

                            visibleBuildNumber = Int32.Parse((string)commitProcessParams["PriorBuild"]);
                        }
                        else if (EnvironmentName != "Commit")
                        {
                            visibleBuildNumber = Int32.Parse((string)processParams["PriorBuild"]);
                        }

                        if (targetEnvironmentBuildNumber > 0)
                        {
                            if (visibleBuildNumber > targetEnvironmentBuildNumber)
                            {
                                promotableBuilds.Add(new BuildNumber(build, visibleBuildNumber));
                            }
                        }
                        else
                        {
                            promotableBuilds.Add(new BuildNumber(build, visibleBuildNumber));
                        }
                    }
                }

                return(promotableBuilds);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Unable to get builds from TFS, error message was:\n\n{0}", ex.Message));
            }
        }
Ejemplo n.º 33
0
        private IEnumerable<BuildInformation> GetBuildsForBuildSpec(string projectName, IBuildDetailSpec buildDetailSpec)
        {
            var builds = this.buildServer.QueryBuilds(buildDetailSpec);
            var tests = this.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 = this.RemoveDomainFromUsername(b.Build.RequestedFor),
                                    Status = this.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();
        }
Ejemplo n.º 34
0
        public List<TfsBuildResults> GetLastBuilds(int hoursFromNow)
        {
            _buildDetailSpec = _buildServer.CreateBuildDetailSpec("*");
            _buildDetailSpec.MinFinishTime = DateTime.Now.AddHours(-hoursFromNow);
            _buildDetailSpec.InformationTypes = null;  // for speed improvement
            _buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
            _buildDetailSpec.QueryOptions = QueryOptions.All;
            TfsBuildResults = new List<TfsBuildResults>();
            RunningBuildTimes = new List<RunningBuildTime>();

            var builds = _buildServer.QueryBuilds(_buildDetailSpec).Builds;

            builds.ToList().ForEach(build => TfsBuildResults.Add(new TfsBuildResults {
                BuildNumber = build.BuildNumber,
                CompilationStatus = build.CompilationStatus == BuildPhaseStatus.Succeeded ? "Succeeded" : "Failed",
                DurationInMinutes = new TimeSpan(build.FinishTime.Ticks - build.StartTime.Ticks).TotalMinutes,
                FinishTime = build.FinishTime,
                LabelName = build.BuildNumber,
                StartTime = build.StartTime,
                Uri = build.Uri.ToString(),
                TeamProject = build.TeamProject,
                BuildDefinitionName = build.BuildDefinition.Name,
                IsCompleted = build.BuildFinished
            }));

            CalculateAvaregeBuildRuns();

            return TfsBuildResults;
        }
Ejemplo n.º 35
0
        // I Don't have permission to do that
        //public void SubscribeToTfsEventService() {
        //    var es = _tfs.GetService(typeof(IEventService)) as IEventService;
        //    var eventName = string.Format("<PT N=\"Display name of event \"/>");
        //    var filter = string.Format("\"PortfolioProject\" = '{0}'", "Blah");
        //    var del = new DeliveryPreference
        //    {
        //        Address = "Webservice address",
        //        Schedule = DeliverySchedule.Immediate,
        //        Type = DeliveryType.Soap
        //    };
        //    if (es != null) {
        //        es.SubscribeEvent("WorkItemChangedEvent", filter, del, eventName);
        //    }
        //}
        public List<RunningBuildTime> GetNotFinishedBuilds()
        {
            _notFinishedBuilds = new List<RunningBuildTime>();
            _buildDetailSpec = _buildServer.CreateBuildDetailSpec("*");
            _buildDetailSpec.MinFinishTime = DateTime.Now.AddHours(-100);
            _buildDetailSpec.InformationTypes = null;  // for speed improvement
            _buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
            _buildDetailSpec.QueryOptions = QueryOptions.All;

            var builds = _buildServer.QueryBuilds(_buildDetailSpec).Builds;

            builds.Where(b => b.BuildFinished == false).ToList().ForEach(build => _notFinishedBuilds.Add(new RunningBuildTime
            {
                BuildDuration = new TimeSpan(DateTime.Now.Ticks - build.StartTime.Ticks).TotalMinutes,
                BuildName = build.BuildDefinition.Name,
                BuildStatus = build.CompilationStatus == BuildPhaseStatus.Succeeded ? "Succeeded" : "Failed"
            }));

            return _notFinishedBuilds;
        }
Ejemplo n.º 36
0
        internal void PopulateTeamBuilds(bool refresh, bool resort, Action <IBuildDetailSpec> modifyAction)
        {
            ListViewCCH listView = GetTreeView();

            listView.BeginUpdate();

            BackupSelectedItems();

            //if (refresh || this.lastSelectedTeamProjectIndex != this.parentControl.selectedTeamProjectIndex || !lastIsQueuedSelected.Equals(IsQueuedSelected))

            if (refresh || this.lastAppliedFilterHashCode != UIContext.Instance.ControlTeamBuildFilter.LastAppliedFilterHashCode ||
                !lastIsQueuedSelected.Equals(IsQueuedSelected))
            {
                this.cachedBuilds = null;
            }

            if (this.cachedBuilds == null)
            {
                string[] checkedProjects = UIContext.Instance.ControlTeamBuildFilter.CheckedProjects;

                UIContext.Instance.ProgressBegin(checkedProjects.Length, 1);

                try
                {
                    this.cachedBuilds = new Dictionary <bool, List <BuildInfo> >
                    {
                        { false, new List <BuildInfo>() },
                        { true, new List <BuildInfo>() }
                    };
                    listView.Groups.Clear();
                    this.teamBuildQualities.Clear();
                    foreach (string teamProject in checkedProjects)
                    {
                        List <BuildInfo> buildDetails = new List <BuildInfo>();

                        if (IsQueuedSelected)
                        {
                            IQueuedBuildsView buildsView = Context.BuildServer.CreateQueuedBuildsView(teamProject);
                            buildsView.QueryOptions = QueryOptions.All;
                            buildsView.StatusFilter = QueueStatus.All;
                            buildsView.Refresh(true);
                            IQueuedBuild[] queuedBuilds = buildsView.QueuedBuilds;

                            foreach (var queuedBuild in queuedBuilds)
                            {
                                buildDetails.Add(new BuildInfo(queuedBuild));
                            }
                        }
                        else
                        {
                            IBuildDetailSpec buildDetailSpec = Context.BuildServer.CreateBuildDetailSpec(teamProject);
                            buildDetailSpec.MaxBuildsPerDefinition = btnLatestBuilds.Checked ? 1 : int.MaxValue;
                            buildDetailSpec.QueryOrder             = BuildQueryOrder.StartTimeDescending;
                            buildDetailSpec.Status = BuildStatus.Failed | BuildStatus.NotStarted
                                                     | BuildStatus.PartiallySucceeded | BuildStatus.Stopped | BuildStatus.Succeeded;

                            if (modifyAction != null)
                            {
                                modifyAction(buildDetailSpec);
                            }

                            IBuildQueryResult builds = Context.BuildServer.QueryBuilds(buildDetailSpec);

                            foreach (var buildDetail in builds.Builds)
                            {
                                buildDetails.Add(new BuildInfo(buildDetail));
                            }
                        }

                        if (this.cachedBuilds.ContainsKey(this.IsQueuedSelected))
                        {
                            List <BuildInfo> cachedBuildItems = this.cachedBuilds[this.IsQueuedSelected];
                            foreach (var item in buildDetails)
                            {
                                cachedBuildItems.Add(item);
                            }
                        }
                        else
                        {
                            this.cachedBuilds.Add(this.IsQueuedSelected, buildDetails);
                        }

                        //this.cachedBuilds.Add(IsQueuedSelected, cachedBuildItems);
                        listView.Groups.Add(teamProject, teamProject);

                        string[] buildQualities = Context.BuildServer.GetBuildQualities(teamProject);
                        this.teamBuildQualities.Add(teamProject, new List <string>(buildQualities));

                        UIContext.Instance.ProgressDoStep();
                    }

                    this.lastAppliedFilterHashCode = UIContext.Instance.ControlTeamBuildFilter.LastAppliedFilterHashCode;
                }
                finally
                {
                    UIContext.Instance.ProgressEnd();
                }
            }

            if (resort)
            {
                SortListData();
            }

            listView.Visible = true;
            try
            {
                UIContext.Instance.ProgressBegin(this.cachedBuilds.Count, 1);

                listView.Items.Clear();

                foreach (var cachedBuild in this.cachedBuilds[IsQueuedSelected])
                {
                    PopulateListItem(listView, cachedBuild);
                    UIContext.Instance.ProgressDoStep();
                }

//                this.cachedBuilds.ForEach(teamBuild =>
//                {
//                    ListViewItem viewItem = listView.Items.Add(teamBuild.Status.ToString());
//                    viewItem.UseItemStyleForSubItems = false;
//                    viewItem.StateImageIndex = GetBuildStatusImage(teamBuild.Status);
//                    viewItem.Tag = teamBuild;
//                    viewItem.SubItems.Add(teamBuild.StartTime.ToString());
//                    viewItem.SubItems.Add(teamBuild.BuildNumber);
//                    viewItem.SubItems.Add(teamBuild.BuildDefinition.Name);
//                    viewItem.SubItems.Add(teamBuild.BuildAgent.Name);
//                    viewItem.SubItems.Add(teamBuild.RequestedBy);
//                    viewItem.SubItems.Add(teamBuild.Quality);
//                    viewItem.SubItems.Add(teamBuild.FinishTime.ToString());
//
//                    bool logFileExists = !string.IsNullOrEmpty(teamBuild.LogLocation)
//                        && File.Exists(teamBuild.LogLocation);
//
//                    ListViewItem.ListViewSubItem subItem = viewItem.SubItems.Add(logFileExists ? "Has log" : "No log");
//                    subItem.ForeColor = logFileExists
//                        ? Color.FromKnownColor(KnownColor.WindowText) : Color.FromKnownColor(KnownColor.ControlLight);
//
//                    viewItem.Group = listView.Groups[teamBuild.BuildDefinition.TeamProject];
//
//                    UIContext.ProgressDoStep();
//                });
            }
            finally
            {
                listView.EndUpdate();
                UIContext.Instance.ProgressEnd();
                RestoreSelectedItems();
            }
        }
Ejemplo n.º 37
0
        public IBuildDetail[] getBuilds(IBuildDetailSpec mybuildspec)
        {
            var results = _buildserver.QueryBuilds(mybuildspec).Builds;

            return(results);
        }