JIRA我有办法让列表中的所有过渡步骤的ID都可以吗?

时间:2016-08-31 11:34:08

标签: jira jira-rest-api

我想在两个系统之间进行同步。但是,要更新错误的转换状态,我必须发送带有我的参数(新状态)的JSON文件,如下所示:

 {
    "update": {
        "comment": [
            {
                "add": {
                    "body": "Comment added when resolving issue"
                }
            }
        ]
    },
    "transition": {
        "id": "5"
    }
}

要设置新状态,我必须设置它的ID,如何获取所有ID的列表以及每个ID的描述。

2 个答案:

答案 0 :(得分:0)

您可以按当前用户获取此问题可能的转换列表,以及url / rest / api / 2 / issue / {issueIdOrKey} / transitions(获取请求)所需的字段及其类型< / p>

答案 1 :(得分:0)

您可以使用以下python脚本来获取所需的信息。

#!/usr/bin/env python

from __future__ import print_function
import ConfigParser
import requests
import json
import base64
import sys

def print_error(*args, **kwargs):
  print(*args, file=sys.stderr, **kwargs)

def get_issue(user,password,search_url):
  user_auth = base64.b64encode(user+':'+password)
  headers = {'Authorization': 'Basic ' + user_auth}
  return requests.get(search_url, headers=headers)

def main():
  if len(sys.argv) < 2:
    usage_message = 'Usage: ' + sys.argv[0] + ' issue_number'
    print_error(usage_message)
    sys.exit(1)

  config = ConfigParser.RawConfigParser()
  config.read('config.properties')

  jira_user = config.get('Global', 'jira_user')
  jira_pass = config.get('Global', 'jira_pass')
  jira_base_url = config.get('Global', 'jira_base_url')
  issue_url = config.get('Global', 'issue_url')
  issue = sys.argv[1]
  issue_search_url = jira_base_url + issue_url + issue + '/transitions'

  response = get_issue(jira_user,jira_pass,issue_search_url)

  if response.status_code == 404:
    print_error(issue + ' NOT FOUND!')
    sys.exit(1)


  data = response.json()

  for transition in data['transitions']:
    print("%s %s" % (transition['id'], transition['name']))

main()

您需要在与脚本相同的目录中包含配置文件(config.properties),其中包含以下内容:

[Global]
jira_user=username 
jira_pass=pass 
jira_base_url=http://your_jira_url.com
issue_url=/rest/api/2/issue/

然后你像这样调用脚本:

./get_transitions.py your_ticket_number