Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
        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"));
 }