如何通过 REST API 检索 JIRA 票证的摘要?

tgr*_*tgr 3 curl jira jql jira-rest-api

我正在尝试编写一个 shell 脚本,用 JIRA 自动化我的工作流程。我的目标是:

jira_flow start $KEY
Run Code Online (Sandbox Code Playgroud)

脚本的步骤如下:

  • 将当前项目部署到 sonarqube
  • 根据jira问题键和摘要创建一个新分支

因此,我需要一种方法来获取问题的摘要。

首先,我尝试使用issueAPI 和grep.

curl http://jira.local:8081/rest/api/2/issue/$KEY | \
  json_pp | \
  grep sumarry

# produces:

    "summary" : "linked issue summary 1"
    "summary" : "linked issue summary 2"
  "summary" : "sub-task summary 1"
  "summary" : "sub-task summary 2"
  "summary" : "sub-task summary 3"
"summary" : "issue summary"
Run Code Online (Sandbox Code Playgroud)

这种方法给了我很多结果,因为它还打印了链接的工单和子任务的摘要。

我的第二次尝试是使用searchAPI 并限制要检索的字段。这种方法失败了,因为我无法通过它的key.

curl http://jira.local:8081/rest/api/2/search?jql=key=$KEY

# returns:

no matches found: http://jira.local/rest/api/2/search?jql=key=$KEY
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

gru*_*dic 6

使用jq解析JSON和提取所需的字段(S):

$ curl -s "https://jira.atlassian.com/rest/api/2/issue/JRASERVER-66213" | jq ".fields.summary"
"Ship with Java Option PrintConcurrentLocks by Default"
Run Code Online (Sandbox Code Playgroud)

对于您的情况,只需输入正确的 URL。您的第二种方法不起作用,因为过滤字段的参数是field

curl -s "https://jira.atlassian.com/rest/api/2/issue/JRASERVER-66213?fields=summary" | jq "."


{                                                              
  "expand": "renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations",                              
  "id": "874745",                                              
  "self": "https://jira.atlassian.com/rest/api/2/issue/874745",
  "key": "JRASERVER-66213",                                    
  "fields": {                                                  
    "summary": "Ship with Java Option PrintConcurrentLocks by Default"                                                         
  }                                                            
} 
Run Code Online (Sandbox Code Playgroud)