Upload
alexei-barantsev
View
7.581
Download
0
Embed Size (px)
Citation preview
И никуда не надо ехать!
JIRA: dashboards и SOAP API
Никита Налютин, Undev.ru
О чем мы сегодня?
● Какие отчеты бывают● Какие средства есть в JIRA для
облегчения подготовки отчетов (dashboards)
● Как можно генерировать отчеты при помощи внешних скриптов (SOAP API в Python)
Тикеты в scope релиза
Открытые баги
Сводные таблицы и диаграммы
Собираем все вместе
SOAP API: когда нам нужно большее
● SOAP — протокол обмена данными с сервером
● Клиент и сервер обмениваются друг с другом маленькими XML-документами
Необходимые библиотеки
● PyXML 0.8.4
● SOAPpy 0.11.6
● fpconst 0.7.2
● Еще есть библиотека● Jira-cli-1.5.0
про нее в этой презентации ничего не сказано :)
Установление соединения
import SOAPpy;
soap = SOAPpy.WSDL.Proxy('http://jira-server/rpc/soap/jirasoapservice-v2?wsdl')
jirauser='user1'
passwd='pass1'
auth = soap.login(jirauser, passwd)
Словари
statuses = soap.getStatuses(auth)
priorities = soap.getPriorities(auth)
resolutions = soap.getResolutions(auth)
st = dict()
for status in statuses:
st[status['id']] = status['name']
Запросы
● JQL запросы:issuesFromTextSearch = soap.getIssuesFromJqlSearch(auth, 'project = DEV AND (issuetype = "DEV: QA testing " AND "Affects Patch/es" = "*point") AND status in ("DEV: Resolved", "DEV: Developed")', 10000);
● Сохраненные из фильтра:issues = soap.getIssuesFromFilter(auth, "17395")
Атрибуты тикетов
for issue in issues:
priority = pr[issue['priority']]
status = st[issue['status']]
if not issue['resolution'] == None:
resolution = res[issue['resolution']]
else:
resolution = ""
Пользовательские атрибуты
customFields = issue['customFieldValues']
for customField in customFields:
if customField['customfieldId'] == 'customfield_10685':
for i in customField['values']:
fixPatches = fixPatches + i
Списанное время
worklogs = soap.getWorklogs(auth,issue['key'])
for worklog in worklogs:
date = datetime.date( worklog['startDate'][0], worklog['startDate'][1], worklog['startDate'][2])
if date == reportDate:
author = soap.getUser(auth, worklog['author'])['fullname']
timeSpent = worklog['timeSpent']
comment = worklog['comment']
JIRA: dashboards и SOAP API
Никита Налютин, Undev.ru
http://NikitaNalyutin.moikrug.ru