在这个简短的指南中,我将向你展示如何用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')