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; }
/// <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); }
/// <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; }
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; } }
public Task <IBuildDetail[]> getBuildsAsync(IBuildDetailSpec mybuildspec) { Task <IBuildDetail[]> task1 = Task <IBuildDetail[]> .Factory.StartNew(() => { var results = buildserver.QueryBuilds(mybuildspec).Builds; return(results); }); return(task1); }
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) { IBuildDetailSpec spec = buildServer.CreateBuildDetailSpec(_configuration.TfsTeamProjectName, def.Name); spec.MaxBuildsPerDefinition = 1; spec.QueryOrder = BuildQueryOrder.FinishTimeDescending; var builds = buildServer.QueryBuilds(spec); return(builds.Builds.FirstOrDefault()); }
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]; })); }
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()); }
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; }
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); } }
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()); }
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()); }
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); }
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); }
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]); }
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))); }
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); }
/// <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); }
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; }
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; }
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(); }
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()); }
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; } }
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)); } }
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(); }
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; }
// 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; }
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(); } }
public IBuildDetail[] getBuilds(IBuildDetailSpec mybuildspec) { var results = _buildserver.QueryBuilds(mybuildspec).Builds; return(results); }