2014-09-04 53 views
11

我正在编写脚本(在Powershell中,如果有的话)来部署SQL代码。我希望在脚本中使用的部分逻辑是在部署之前检查与脚本相关的JIRA问题是否处于正确的状态(例如,在我的情况下,问题状态是“QE认证”。)如何通过REST API找到JIRA问题的状态?

我正在尝试使用JIRA REST API,但到目前为止一直无法找到一种方法来给我一个问题的当前状态。我发现的最接近的是查看可用于该问题的转换:

https://docs.atlassian.com/jira/REST/5.2/#id251679

这不会给我目前的状态,但我可以从现有的过渡看着办吧。这似乎有点缺憾给我。

我希望会有类似/ rest/api/2/issue/{issueIdOrKey} /状态,只会给我问题的当前状态。

通过REST API获取问题状态的最佳方式是什么?

感谢

回答

15

您可以使用/rest/api/2/issue/{issueIdOrKey}并设置字段参数返回的数据限制在状态字段。

所以,你的要求是:

/rest/api/2/issue/{issueIdOrKey}?fields=status 
2

下面是示例请求:

/rest/api/2/issue/HTP-55 

HTP-55是问题的ID。

以下是可能对您有用的响应部分。

"status": { 
    "self": "rest/api/2/status/3", 
    "description": "This issue is being actively worked on at the moment by the assignee.", 
    "iconUrl": "images/icons/statuses/inprogress.png", 
    **"name": "In Progress", 
    "id": "3"** 
}, 
4

它可以通过使用curl命令来实现。

语法:

curl -u username:password -X GET -H "Content-Type: application/json" 
    https://server-url/rest/api/2/issue/JRA-1?fields=status 
0

如果您更喜欢使用后吉拉REST的Java客户端API(如4.0),以下是示例代码。

private static final String JIRA_SERVER = "http://jiralab"; 

public static void main(String[] args) { 
    try { 
     JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory(); 
     URI uri = new URI(JIRA_SERVER); 
     JiraRestClient client = factory.createWithBasicHttpAuthentication(uri, "admin", "admin"); 
     getIssue(client, "ISSUE-1"); 
    } 
    catch (Exception ex) { 
    } 
} 

private static void getIssue(JiraRestClient client, String key) throws Exception { 
    Promise<Issue> promise = client.getIssueClient().getIssue(key); 
    Issue issue = promise.claim(); 
    System.out.println("Summary = " + issue.getSummary() + ", Status = " + (issue.getStatus() != null ? issue.getStatus().getName() : "N/A")); 
} 
相关问题