public async Task RunAsync(TimeSpan waitPeriodAfterEachUpdate, CancellationToken ct) { var buildManagement = new BuildManagement(devOpsAccessSetting); var releaseManagement = new ReleaseManagement(devOpsAccessSetting); var bugManagement = new BugManagement(devOpsAccessSetting); while (!ct.IsCancellationRequested) { await ImportVstsBugDataAsync(bugManagement, bugQueries); foreach (string branch in this.branches) { buildLastUpdatePerBranchPerDefinition.Upsert( branch, await ImportVstsBuildsDataAsync(buildManagement, branch, BuildExtension.BuildDefinitions)); } foreach (string branch in this.branches) { await ImportVstsReleasesDataAsync(releaseManagement, branch, ReleaseDefinitionId.E2ETest); } Console.WriteLine($"Import Vsts data finished at {DateTime.UtcNow}; wait {waitPeriodAfterEachUpdate} for next update."); await Task.Delay((int)waitPeriodAfterEachUpdate.TotalMilliseconds); } }
async Task ImportVstsBugDataAsync(BugManagement bugManagement, HashSet <BugQuery> bugQueries) { Console.WriteLine($"Import VSTS bugs started at {DateTime.UtcNow}."); SqlConnection sqlConnection = null; try { sqlConnection = new SqlConnection(this.dbConnectionString); sqlConnection.Open(); foreach (BugQuery bugQuery in bugQueries) { int bugCount = await bugManagement.GetBugsCountAsync(bugQuery); Console.WriteLine($"Query VSTS bugs for area [{bugQuery.Area}] and priority [{bugQuery.BugPriorityGrouping.Priority}] and inProgress [{bugQuery.InProgress}]: last update={DateTime.UtcNow} => result count={bugCount}"); UpsertVstsBugToDb(sqlConnection, bugQuery, bugCount); } } catch (Exception) { throw; } finally { sqlConnection?.Close(); } }
public async Task RunAsync(TimeSpan waitPeriodAfterEachUpdate, CancellationToken ct) { var buildManagement = new BuildManagement(devOpsAccessSetting); var releaseManagement = new ReleaseManagement(devOpsAccessSetting); var bugWiqlManagement = new BugWiqlManagement(devOpsAccessSetting); var bugManagement = new BugManagement(devOpsAccessSetting); while (!ct.IsCancellationRequested) { await ImportVstsBugDataAsync(bugWiqlManagement, bugQueries); foreach (string branch in this.branches) { foreach (BuildDefinitionId buildDefinitionId in BuildExtension.BuildDefinitions) { IList <VstsBuild> builds = await GetBuildsAndTrackLastUpdatedAsync(buildManagement, buildDefinitionId, branch); Console.WriteLine($"Received {builds.Count} builds"); ImportVstsBuildsDataForSpecificDefinitionAsync(builds, buildDefinitionId); await OpenBugsForFailingBuilds(bugManagement, builds, branch, buildDefinitionId); } } foreach (string branch in this.branches) { await ImportVstsReleasesDataAsync(releaseManagement, branch, ReleaseDefinitionId.E2ETest); } Console.WriteLine($"Import Vsts data finished at {DateTime.UtcNow}; wait {waitPeriodAfterEachUpdate} for next update."); await Task.Delay((int)waitPeriodAfterEachUpdate.TotalMilliseconds); } }
async Task ImportVstsBugDataAsync(BugManagement bugManagement) { Console.WriteLine($"Import VSTS bugs started at {DateTime.UtcNow}."); SqlConnection sqlConnection = null; try { sqlConnection = new SqlConnection(this.dbConnectionString); sqlConnection.Open(); foreach (KeyValuePair <string, string> queryNameToId in BugQueryId.QueryNamestoIds) { string queryName = queryNameToId.Key; string queryId = queryNameToId.Value; int bugCount = await bugManagement.GetBugsQuery(queryId); Console.WriteLine($"Query VSTS bugs for work item query id {queryId}: last update={DateTime.UtcNow} => result count={bugCount}"); UpsertVstsBugToDb(sqlConnection, queryName, bugCount); } } catch (Exception) { throw; } finally { sqlConnection?.Close(); } }
async Task OpenBugsForFailingBuilds(BugManagement bugManagement, IList <VstsBuild> builds, string branch, BuildDefinitionId buildDefinitionId) { // Filter out the builds for which we have already made bugs builds = FilterBuildsByDate(builds); builds = FilterBuildsByStatus(builds); builds = FilterBuildsByExistingBugs(builds); Console.WriteLine($"Filtering builds complete. Creating bugs for {builds.Count} builds"); // Create the bugs Dictionary <string, string> buildIdToBugId = new Dictionary <string, string>(); foreach (VstsBuild build in builds) { try { string bugId = await bugManagement.CreateBugAsync(branch, build); buildIdToBugId.Add(build.BuildId, bugId); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine("Create bug failed. Will retry later."); } } if (buildIdToBugId.Count == 0) { return; } Console.WriteLine($"Successfully created {buildIdToBugId.Count} bugs for {buildDefinitionId.ToString()} on {branch} branch"); // Add the created bugs to the db for tracking SqlConnection sqlConnection = null; try { sqlConnection = new SqlConnection(this.dbConnectionString); sqlConnection.Open(); foreach ((string buildId, string bugId) in buildIdToBugId) { UpsertVstsBugToDb(sqlConnection, buildId, bugId); } } catch (Exception) { throw; } finally { sqlConnection?.Close(); } }
public IActionResult BugManagerEdit(BugManagement bugManagement) { if (ModelState.IsValid) { try { context.Update(bugManagement); context.SaveChanges(); } catch (DbUpdateConcurrencyException) { return(NotFound()); } } return(RedirectToAction(nameof(Index))); }
public IActionResult BugManagerCreate(BugManagement bugManagement) { context.Add(bugManagement); context.SaveChanges(); return(RedirectToAction("View")); }