65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 连接 Jira

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.83/5 (8投票s)

2014年4月21日

CPOL

2分钟阅读

viewsIcon

135345

本技巧介绍如何使用 C# 连接 Jira。

引言

在我的当前项目中,我们使用 Atlassian Jira 进行问题跟踪和敏捷项目管理。我们最近迁移到 Jira,虽然 Jira 提供了大量的内置报告,但我们的需求迫使我寻找连接到 Jira 以获取数据的方法。本技巧介绍了使用 Atlassian SDK 连接到 Jira 的方法。

获取 SDK

可以使用 NuGet 从 此链接 安装 Atlassian Jira .NET SDK,或者在 Visual Studio 中提供的包管理器控制台中,使用以下命令:

Install-Package Atlassian.SDK -Version 2.2.0

Using the Code

以下代码展示了在 Visual Studio 项目中引用 Atlassian Jira .NET SDK 后,如何连接到 Jira。

using Atlassian;

namespace JiraResultsApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Jira jiraConn = new Jira("http://yourjiraurl.com/", jUserID, jPassword);
            string jqlString = PrepareJqlbyDates("2014-03-01", "2014-03-31");
            IEnumerable<Atlassian.Jira.Issue><atlassian.jira.issue> 
                jiraIssues = jiraConn.GetIssuesFromJql(jqlString , 999);

            foreach(var issue in jiraIssues)
            {
                 System.Console.WriteLine(issue.Key.Value +" -- "+ issue.summary);
            }
         }

        static string PrepareJqlbyDates(string beginDate, string endDate)
        {
            string jqlString = "project = PRJ AND status = Closed AND 
            resolved >= "+beginDate+" AND resolved <= "+ endDate;
            return jqlString;
        }
    }
}

代码解释

  • 包含 "using Atlassian"
  • 使用以下行创建 Jira 连接实例:
     Jira jiraConn = new Jira("http://yourjiraurl.com/", jUserID, jPassword); 
  • 此实例用于从 Jira 检索数据。
  • 虽然我们在这里创建了 Jira 连接,但实际连接不会在这里发生。 而是当我们在下一行尝试检索数据时发生。
    IEnumerable<Atlassian.Jira.Issue>?<atlassian.jira.issue> jiraIssues = jiraConn.GetIssuesFromJql(jqlString , 999);
  • 方法 GetIssuesFromJql 接受两个参数,第一个:JQL 字符串,然后是搜索返回的最大问题数。
  • 除了 JQL 之外,Jira 还提供了另一种使用过滤器获取数据的方法,如下所示:
    jiraConn.GetIssuesFromFilter("My Filter"); 
  • 一旦我们获得问题列表,就可以遍历问题并获取每个问题的详细信息。
  • 我们还可以使用 GetIssue("IssueID") 获取特定问题的详细信息。
  • 除了获取信息之外,SDK 还提供了其他方法,例如:
    • CreateIssue:创建问题
    • GetProjects:获取 URL 中的项目列表

自定义字段

  • 在访问字段信息时,您可能会注意到一个问题,并非所有字段都可以直接访问。 这是因为 Jira 允许我们按项目添加自定义字段。
  • 因此,为了访问自定义字段,我们必须使用 "CustomFields",如下所示:
  • 在访问任何自定义字段之前,我们应该检查它们是否为 null
    string jStoryPoints = issue.CustomFields["Story Points"] != null ? issue.CustomFields["Story Points"].Values[0] : "";
    
    string jDeveloper = issue.CustomFields["Developer"] != null ? 
        issue.CustomFields["Developer"].Values[0] : "";
    
    string jTester = issue.CustomFields["Tester"] != null ? issue.CustomFields["Tester"].Values[0] : "";  

使用 SOAP 服务连接

  • 除了使用 SDK 连接之外,我们还可以使用 Jira SOAP 服务连接。
  • 此技巧 解释了如何使用 SOAP 服务连接。
  • SDK 和 SOAP 服务支持的方法相同。

关注点

我学会了如何使用 SDK 和 SOAP 服务连接到 Jira。

© . All rights reserved.