如何用Python API获得Jira中的问题注释

1,005 阅读2分钟

在这个简短的指南中,我将向你展示如何用Python API获得Jira中的问题注释

在下一节中,我将回顾连接到Jira的步骤,过滤票据并从这些问题中获得评论。

第1步:用Python连接到Jira

要用Python连接到Jira,你需要做以下事情:

  • 安装Python库 -jira
  • 生成Jira令牌

要安装Pythonjira 库,你可以使用下面的语法:

pip install jira

要生成Jira令牌,你可以按照下面的步骤进行:

  • 打开Jira api-tokens并登录
  • 单击 "创建API令牌"
  • 为你的令牌输入一个标签
  • 创建
  • 点击复制到剪贴板
  • 在你的脚本中使用该令牌

注意:以后不可能再找回令牌了--所以如果你需要的话,请把它保存在某个地方。

注意2:旧的令牌可能会导致错误或根本不工作。如果出现错误,最好用新的Jira令牌来测试。

最后,你可以在你的Python代码中通过以下方式连接到Jira:

import pandas as pd
from jira import JIRA

jira = JIRA({"server": "https://xxx.atlassian.net/"}, basic_auth=("xxx@xxx.com", "xxxx_token_xxxx"))

其中:

  • https://xxx.atlassian.net/ - 是目标Jira服务器
  • xxx@xxx.com - 是你的电子邮件或ID
  • "xxxx_token_xxxx" - 上述生成的令牌

第2步:用Python和JQL过滤问题

在这一步,我们要用JQL列出所有的票据。比方说,我们对没有收货人新票据感兴趣。

我们将使用方法jira.search_issues ,并设置最大结果为100:

new_issues = jira.search_issues("project = 'Project_X' and status = 'New' and assignee is EMPTY ORDER BY created DESC", maxResults=100)

这将返回Jira问题对象,我们将在接下来的步骤中使用。

第3步:从Jira中获取问题注释

为了获得评论,我们将遍历所有的问题并获得额外的信息:

for issue in new_issues:
    comment_dict = {}
    print(issue.key)
    issue_num = issue.key

    issue = jira.issue(issue_num)

    comments =  issue.fields.comment.comments

评论信息将被提取出来,包括以下信息:

  • comment.body - 评论文本
  • comment.author.displayName - 评论作者
  • comment.created - 创建日期
    for comment in comments:
        print("Comment text : ",comment.body)
        print("Comment author : ",comment.author.displayName)
        print("Comment time : ",comment.created)

        comment_dict['author'] = comment.author.displayName
        comment_dict['body'] = comment.body
        comment_dict['date'] = comment.created
        comment_dict['key'] = issue.key
        df_comments.append(comment_dict)
        
pd.DataFrame(df_comments).to_csv('jira_comments.csv')        

最后,代码将把所有的评论和作者保存到一个CSV文件中。

第4步:完整的代码:用Python获取Jira评论

最后,让我们读取导出的CSV文件,用Pandas分析Jira的评论。

import pandas as pd
df = pd.read_csv('jira_comments.csv')

df['date'] = pd.to_datetime(df['date'])

df.tail(20)

为了从评论中用regex提取链接,我们可以使用下面的语法:

df['link'] = df['body'].str.extract("\[https://(.*)\|.*\]")

要想用Pandas找到Jira评论中分享的最新链接,我们可以这样做:

df.groupby('key').link.max().to_dict()

第5步:完整的代码用Python获取Jira评论

你可以在下面找到从Jira中提取评论的完整代码:

import pandas as pd
from jira import JIRA

jira = JIRA({"server": "https://xxx.atlassian.net/"}, basic_auth=("xxx@xxx.com", "xxxx"))


new_issues = jira.search_issues("project = 'Project_X' and status = 'New' and assignee is EMPTY ORDER BY created DESC", maxResults=100)

df_comments = []

for issue in new_issues:
    comment_dict = {}
    print(issue.key)
    issue_num = issue.key

    issue = jira.issue(issue_num)

    comments =  issue.fields.comment.comments


    for comment in comments:
        print("Comment text : ",comment.body)
        print("Comment author : ",comment.author.displayName)
        print("Comment time : ",comment.created)

        comment_dict['author'] = comment.author.displayName
        comment_dict['body'] = comment.body
        comment_dict['date'] = comment.created
        comment_dict['key'] = issue.key
        df_comments.append(comment_dict)

pd.DataFrame(df_comments).to_csv('jira_comments.csv')