通过Python使用Jira API

大家好 有一种想法可以自动从Jira下载报告。 由于Python是最受欢迎的工具,因此选择是JIra的模块,它允许您使用其API。 我对谁问有趣呢?

图片

Atlassian具有有关其模块使用的官方文档 。 该模块本身称为“ jira”。 按照传统,我们将使用以下命令安装模块:

pip install jira 

然后我们直接在代码中导入模块:

 from jira import JIRA 

为了连接到服务器本身,您需要通过将所需的参数传递到其中来创建客户端:

 jira_options = {'server': 'https://project-name.atlassian.net'} jira = JIRA(options=jira_options, basic_auth=(login, api_key)) 

为了使用密码进行身份验证,您可以传输密码而不是api密钥。 通过授权后,我们将有一个活动的api客户端可供您访问。

可能性当然不是无限的,而是相当广泛的。 我需要抽出特定星期的任务,并编写一份有关Excell花费时间的报告。 您可以通过项目本身,任务编号或JQL查询直接获取任务。 搜索工具非常灵活和简单。 api客户端返回的所有信息都是字符串形式的,因此需要其他步骤才能使用它。
我们编写一个jql请求,并处理其中的任务:

 jql = 'project = ' + project_key + ' AND worklogDate >= ' + work_date issues_list = jira.search_issues(jql) 

不幸的是,我仍然不明白为什么在通过这样的请求获得的那些任务中没有工作日志属性。 在尝试了解什么地方出了问题之后,我礼貌地要求吉拉(Jira)按任务编号执行任务:

 issue = jira.issue(issue_key) 

在此方法返回的任务中,带有工作日志列表的工作日志字段为。 结果,我开始通过jql查询来处理任务,取出任务编号,然后取出所需的信息:

 worklogs = issue.fields.worklog.worklogs 

类似的行允许您从特定任务中提取所有时间记录。 每个条目都有以秒为单位的时间信息和文本表示形式(1h,3d等)。
然后一切都很简单,丢弃不适合期限的丢弃物,在我的情况下,周数不匹配:

 worklog_date_str = re.search(r'(\d{4}-\d{2}-\d{2})', worklog.started) worklog_date = datetime.strptime(worklog_date_str.group(0), '%Y-%m-%d') if worklog_date.isocalendar()[1] == weak_number: 

由于日期是以字符串形式返回的,因此我使用了一个简单的正则表达式来进行选择,然后在下一行中输入所需的类型。 表达式worklog_date.isocalendar()[1]使您可以找出星期几,并将其与需要的时间进行比较。 如果匹配,则踩一下并写入其余数据。

通常,以上模块允许您解决相当广泛的任务,您只需要时间和愿望。

UPD

您不能再次请求任务,只需展开必填字段
github.com/pycontribs/jira/blob/master/jira/client.py#L2371
谢谢HSerg

Source: https://habr.com/ru/post/zh-CN442078/


All Articles