Я хочу изменить статус проблемы jira с помощью python-jira. API python-jira: http://jira-python.readthedocs.org/en/latest/. Я не могу найти способ сделать это. Я пытался использовать issue.update(status="Closed")
, но это не сработало. Я обнаружил статус проблемы и рабочий процесс в https://developer.atlassian.com/display/JIRADEV/Issue+status+and+workflow. Но я все еще не знаю, что делать. Может ли кто-нибудь мне помочь?
Можно ли изменить статус проблемы jira с помощью python-jira?
Ответы (4)
Я тоже столкнулся с этим, и, к сожалению, невероятная гибкость JIRA также иногда делает его PITA.
Чтобы изменить статус заявки, вам необходимо сделать transition, которое перемещает его из одного статуса в другой.
Вам нужно найти идентификаторы переходов, а затем использовать их так:
if issue.fields.status in ('open', 'reopened'):
# Move the ticket from opened to closed.
jira.transition_issue(ticket, transition='131')
Документы jira-python, обнаруживающие и выполняющие переходы, здесь.
jira.transition_issue
задокументирован здесь. Фактически вы можете использовать имя (например, 'Closed'
) перехода вместо идентификатора, но идентификатор более надежен, поскольку он не изменится.
transition_id
. Поправил на transition
.
- person thejohnbackes; 13.11.2018
Чтобы изменить статус, вам нужно провести транзакцию над проблемой. Переход - это просто операция, определенная в «рабочем процессе», и проблема перехода от одного статуса к другому. Из текущего статуса вы можете выполнить только ограниченный набор переходов, который зависит от «рабочего процесса». Попробуйте использовать следующие функции: Текущий статус проблемы:
issue = jira.issue('PROJECT-1')
issue.fields.status
Статус JIRA: name = 'Исправление отправлено', id = '10827'
Возможные переходы для текущего статуса проблемы:
jira.transitions(issue)
[{'id': '181', 'name': 'Ошибка исправления', 'to': ..........}}}, {'id': '261', 'name': 'Fix Verfied', 'to': {'self': .....}}}]
Итак, вы можете выполнить два перехода:
jira.transition_issue(issue, transition='Fix Failed')
or
jira.transition_issue(issue, 261)
Затем вы можете убедиться, что ваша проблема изменила статус на сервере:
issue = jira.issue('PROJECT-1')
issue.fields.status
Статус JIRA: name = 'Ошибка исправления', id = '10830'
Итак, отвечая на ваш вопрос, вам нужно выполнить больше переходов для передачи задачи из одного состояния в другое, если состояния не связаны переходом. например: Рассмотрим рабочий процесс с этого URL, и текущее состояние вашей проблемы - «РЕШЕНО», и скажем, вы хотите получить статус «В ПРОЦЕССЕ». Аналогичный код можно использовать:
jira.transition_issue(issue, transition='Reopen Issue')
jira.transition_issue(issue, transition='Start Progress')
Мой вариант использования заключался в том, чтобы изменить статус заявки.
Все, что вам нужно изменить в предыдущей попытке, - это не упоминать слово transitionId=
.
Это сработало для меня.
jira.transition_issue(issue, '31')
Вот код для обновления статуса проблемы Jira через Python:
from jira import JIRA
JIRA_SERVER = "https://issues.your-company.com/"
jira_user_name = "your_user_name"
jira_password = "your_jira_password"
jira_connection = JIRA(basic_auth=(jira_user_name, jira_password),
server=JIRA_SERVER)
jira_connection.transition_issue("PR-1309", "Start Progress")
Здесь PR-1309 - это идентификатор вашей проблемы JIRA. Start Progress - это действие, которое необходимо предпринять для решения этой проблемы. Список действий может быть разным для разных клиентов JIRA. Поэтому откройте портал JIRA и просмотрите доступные варианты перехода для ваших задач JIRA. Некоторые действия перехода могут быть: -
- Готовый
- Выполнено
- Отклонять
- В ходе выполнения
- To Do
- Рассмотрение
- Прервать