Можно ли изменить статус проблемы jira с помощью python-jira?

Я хочу изменить статус проблемы 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. Но я все еще не знаю, что делать. Может ли кто-нибудь мне помочь?


person wind    schedule 13.11.2013    source источник


Ответы (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') перехода вместо идентификатора, но идентификатор более надежен, поскольку он не изменится.

person TkTech    schedule 13.11.2013
comment
нет аргумента с именем transition_id. Поправил на transition. - person thejohnbackes; 13.11.2018
comment
Спасибо за исправление @thejohnbackes, они изменили его в какой-то момент в следующие годы :) - person TkTech; 17.03.2019
comment
где вы нашли переход с идентификатором 131? - person VynlJunkie; 09.04.2019
comment
@VynlJunkie зацените jira.readthedocs.io/en/master/examples.html# переходы, чтобы узнать, как составить список переходов, доступных для задачи - идентификаторы будут разными для каждой JIRA. - person TkTech; 12.02.2020

Чтобы изменить статус, вам нужно провести транзакцию над проблемой. Переход - это просто операция, определенная в «рабочем процессе», и проблема перехода от одного статуса к другому. Из текущего статуса вы можете выполнить только ограниченный набор переходов, который зависит от «рабочего процесса». Попробуйте использовать следующие функции: Текущий статус проблемы:

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')
person user3787216    schedule 23.08.2017
comment
Как получить список всех переходов? - person Ciasto piekarz; 28.05.2018
comment
для текущего статуса проблемы вы можете ее осветить: for t in jiraSession.transitions (issue): print (t [name] + + t [id]) - person user3787216; 25.07.2018

Мой вариант использования заключался в том, чтобы изменить статус заявки.
Все, что вам нужно изменить в предыдущей попытке, - это не упоминать слово transitionId=.

Это сработало для меня.

jira.transition_issue(issue, '31')
person NikRams    schedule 07.02.2017

Вот код для обновления статуса проблемы 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. Некоторые действия перехода могут быть: -

  1. Готовый
  2. Выполнено
  3. Отклонять
  4. В ходе выполнения
  5. To Do
  6. Рассмотрение
  7. Прервать
person Dhumil Agarwal    schedule 26.08.2020