private static void GetJiraIssues() { List <string> keys = issueAssociations.Keys.Distinct().ToList(); Jira jira = GetJiraClient(); // use LINQ syntax to retrieve issues IPagedQueryResult <Atlassian.Jira.Issue> issues = null; var success = false; do { try { var jql = $"issueKey in ({string.Join(',', keys)})"; issues = jira.Issues.GetIssuesFromJqlAsync(jql, maxIssues: keys.Count).Result; success = true; } catch (Exception e) { if (e.Message.IsJiraIssue(out string[] errorKeys)) { keys.RemoveAll(k => errorKeys.Contains(k)); } else { throw; } } } while (!success); jiraIssues = issues?.ToList() ?? default; }
public async Task <List <Issue> > GetIssuesAsync(string jql, string updateIssueStartDate, SyncSystemDTO syncSystem) { int itemsPerPage = 1000; int counter = 0; List <Issue> result = new List <Issue>(); if (syncSystem.ActualsStartDate.HasValue) { jql = $"({jql}) and ((updated >= {updateIssueStartDate} and issuetype != 'Epic') or issuetype = 'Epic')"; } logger.Info($"GetIssuesAsync jql: {jql}"); IPagedQueryResult <Issue> query = await JiraConnection.Issues .GetIssuesFromJqlAsync(jql, itemsPerPage, counter); logger.Info($"GetIssuesAsync counter: {counter}; query.TotalItems: {query.TotalItems}; " + $"query.ItemsPerPage: {query.ItemsPerPage}; query.StartAt: {query.StartAt}"); result.AddRange(query.ToList()); counter += itemsPerPage; while (query.TotalItems >= counter) { logger.Info("GetIssuesAsync while1 counter " + counter); query = await JiraConnection.Issues .GetIssuesFromJqlAsync(jql, itemsPerPage, counter); counter += itemsPerPage; logger.Info($"GetIssuesAsync while2 counter: {counter}; query.TotalItems: {query.TotalItems}; " + $"query.ItemsPerPage: {query.ItemsPerPage}; query.StartAt: {query.StartAt}"); result.AddRange(query.ToList()); } logger.Info("GetIssuesAsync result.Count " + result.Count); return(result); }
/// <summary> /// 请求Issues /// </summary> /// <param name="jiraUri">公司/组织的Jira地址,如https://jira.huawei.com</param> /// <param name="jqlText"></param> /// <returns></returns> public static async Task <List <Issue> > RequestAsync(string jiraUri, string jqlText) { IPagedQueryResult <Issue> issues = null; try { //之前的版本,Atlassian已经弃用 // Jira jira = new Jira(url, "admin", "password"); var jira = Jira.CreateRestClient(jiraUri, CustomUtils.Account, CustomUtils.Password); //GetIssuesFromJqlAsync相当于 $"{jiraUri}/rest/api/2/search?jql={requestText}"; issues = await jira.Issues.GetIssuesFromJqlAsync(jqlText, 100000); } catch (Exception e) { Console.WriteLine(e); } return(issues?.ToList() ?? new List <Issue>()); }