2017-04-04 45 views
1

我正在尝试设置Teamcity构建和验证Gerrit的补丁集。如果构建失败,最后一步应该将验证设置为-1。我玩弄格里特REST API,我想我找到了一个正确的命令:如何使用Gerrit REST API设置修订版审查

https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#set-review

文档说:

作为响应返回ReviewInfo实体描述应用 标签。

我的要求是这样的:

POST <gerrit-url>/a/changes/I696f00f4968fcb35fa614ce6325499aa15367150/revisions/current/review 

{ 
    "message": "Build failed", 
    "labels": { 
     "Verified": -1 
    } 
} 

作为回应,我得到全面修订信息:

{ 
    "id": "dev_test~master~<change-id>", 
    "project": "dev_test", 
    "branch": "master", 
    "hashtags": [], 
    "change_id": "<change-id>", 
    "subject": "a test", 
    "status": "NEW", 
    "created": "2017-04-03 07:53:19.000000000", 
    "updated": "2017-04-04 08:47:34.000000000", 
    "submit_type": "MERGE_IF_NECESSARY", 
    "mergeable": true, 
    "insertions": 133, 
    "deletions": 7, 
    "unresolved_comment_count": 0, 
    "_number": 381, 
    "owner": { 
    "_account_id": 4, 
    "name": "<my-name>", 
    "email": "<my-email>", 
    "username": "<my-username>", 
    }, 
    "labels": { 
    "Code-Review": { 
     "all": [ 
     { 
      "value": 1, 
      "date": "2017-04-04 08:47:34.000000000", 
      "permitted_voting_range": { 
      "min": -2, 
      "max": 2 
      }, 
      "_account_id": 4, 
      "name": "<my-name>", 
      "email": "<my-email>", 
      "username": "<my-username>" 
     } 
     ], 
     "values": { 
     "-2": "This shall not be merged", 
     "-1": "I would prefer this is not merged as is", 
     " 0": "No score", 
     "+1": "Looks good to me, but someone else must approve", 
     "+2": "Looks good to me, approved" 
     }, 
     "default_value": 0 
    }, 
    "Verified": { 
     "all": [ 
     { 
      "value": 0, 
      "permitted_voting_range": { 
      "min": -1, 
      "max": 1 
      }, 
      "_account_id": 4, 
      "name": "<my-name>", 
      "email": "<my-email>", 
      "username": "<my-username>" 
     } 
     ], 
     "values": { 
     "-1": "Fails", 
     " 0": "No score", 
     "+1": "Verified" 
     }, 
     "default_value": 0 
    } 
    }, 
    "permitted_labels": {}, 
    "removable_reviewers": [], 
    "reviewers": { 
    "REVIEWER": [ 
     { 
     "_account_id": 4, 
      "name": "<my-name>", 
      "email": "<my-email>", 
      "username": "<my-username>" 
     } 
    ] 
    }, 
    "current_revision": "913330441711b067899a664a60c78be518e547b4", 
    "revisions": { 
    "913330441711b067899a664a60c78be518e547b4": { 
     "kind": "REWORK", 
     "_number": 6, 
     "created": "2017-04-03 14:08:14.000000000", 
     "uploader": { 
     "_account_id": 4, 
      "name": "<my-name>", 
      "email": "<my-email>", 
      "username": "<my-username>" 
     }, 
     "ref": "refs/changes/81/381/6", 
     "fetch": { 
     "ssh": { 
      "url": "ssh://<url>", 
      "ref": "refs/changes/81/381/6" 
     }, 
     "http": { 
      "url": "http://<url>", 
      "ref": "refs/changes/81/381/6" 
     } 
     } 
    } 
    } 
} 

它不受请求。使用GET方法或使用POST方法在身体当我发送的请求无效的JSON返回相同的响应

格里特版本(!):2.13.6-3008-gcdc381e

我是否出错了?

PS。下面是类似的问题,但它是没有帮助的:Gerrit set-review api doesn't work

编辑: 看来,我正从GET请求响应不是POST

+0

你的Gerrit版本是什么?您是否尝试删除“评论”部分? –

+0

Gerrit版本是2.13.6-3008-gcdc381e。 “评论”财产不在第一位。我添加了它来检查它是否重要。 – Sarrus

+0

我无法重现您的问题。看来你正在获得/ a/changes/CHANGE/detail响应,但我无法弄清楚原因。我发现的唯一奇怪的事情是空的“”allowed_labels“:{}”属性。在我的情况下,我看到每个现有标签的允许值。 –

回答

0

我想通了。这不是gerrit问题。我使用了http请求,并且我们的服务器重定向到了https,301邮政局休耕并且返回了GET请求的响应。