是否可以使用python-jira更改jira问题状态?

时间:2013-11-13 04:15:39

标签: python jira jira-rest-api python-jira

我想用python-jira更改jira问题状态.python-jira API是http://jira-python.readthedocs.org/en/latest/。我找不到任何方法来执行此操作。 我试图使用issue.update(status="Closed")。但它没有用。我在https://developer.atlassian.com/display/JIRADEV/Issue+status+and+workflow找到了问题状态和工作流程。但我仍然不知道该怎么办。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:14)

我也遇到了这个问题,不幸的是JIRA的灵活性也让它变成了PITA。

要更改故障单上的状态,您需要设置transition,将其从一个状态移动到下一个状态。

您需要找到转换ID,然后像这样使用它:

if issue.fields.status in ('open', 'reopened'):
    # Move the ticket from opened to closed.
    jira.transition_issue(ticket, transition='131')

jira-python文件发现和转换here

jira.transition_issue记录在案here

答案 1 :(得分:4)

要更改状态,您需要在问题之上进行交易。转换只是在“工作流程”中定义的操作,以及从一种状态到另一种状态的转接问题。 从当前状态开始,您只能执行有限的转换,这取决于工作流程'。 尝试使用以下功能: 当前问题状态:

issue = jira.issue('PROJECT-1')
issue.fields.status
  

JIRA状态:姓名='修复提交',id =' 10827'

问题当前状态的可能转换:

jira.transitions(issue)
  

[{' id':' 181',' name':' Fix Failed',' to' :..........}}},{' id':   ' 261','名称':'修复已验证的',':{' self':... ..}}}]

那么你可以进行两次转换:

jira.transition_issue(issue, transition='Fix Failed')

jira.transition_issue(issue, 261)

然后,您可以验证您的问题是否已在服务器上更改状态:

issue = jira.issue('PROJECT-1')
issue.fields.status
  

JIRA状态:姓名='修复失败',id =' 10830'

因此,在回答您的问题时,如果状态未通过转换连接,则需要执行更多转换以将问题从一个状态转移到另一个状态。 例如:考虑工作流程from this url,您的问题当前状态是" 已解决",并且假设您想要达到状态" 进展情况&#34 ;.可以使用类似的代码:

jira.transition_issue(issue, transition='Reopen Issue')
jira.transition_issue(issue, transition='Start Progress')

答案 2 :(得分:0)

以下是用于通过Python更新Jira问题状态的代码:

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问题的ID。开始进度是针对此问题需要采取的措施。对于JIRA的不同客户,操作列表可能有所不同。因此,打开JIRA门户并查看JIRA问题的可用转换选项。 一些过渡动作可以是:-

  1. 准备好
  2. 完成
  3. 拒绝
  4. 进行中
  5. 要做
  6. 评论
  7. 中止

答案 3 :(得分:-1)

我的用例只是改变了票证的状态 您之前尝试更改的所有内容都没有明确提及单词transitionId=

这对我有用。

jira.transition_issue(issue, '31')