【发布时间】:2017-04-04 22:28:05
【问题描述】:
我正在尝试设置 Teamcity 构建和验证 Gerrit 的补丁集。如果构建失败,最后一步应将 Verified 设置为 -1。我正在玩 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 方法或使用带有无效 JSON 的 POST 方法发送请求时返回相同的响应(!)
Gerrit 版本为:2.13.6-3008-gcdc381e
我有什么问题吗?
PS。这是类似的问题,但没有帮助:Gerrit set-review api doesn't work
编辑: 似乎我从 GET 请求而不是 POST 得到响应
【问题讨论】:
-
你的 Gerrit 版本是什么?您是否尝试过删除“cmets”部分?
-
Gerrit 版本为 2.13.6-3008-gcdc381e。 “cmets”属性首先不存在。我添加它是为了检查它是否重要。
-
我无法重现您的问题。似乎您收到了 /a/changes/CHANGE/detail 响应,但我不知道为什么。我发现的唯一奇怪的事情是空的 ""permitted_labels": {}" 属性。就我而言,我看到了每个现有标签的允许值。
-
我使用了 teamcity 用户(非交互组)。当我使用自己的凭据时,就像您说的那样填写。据我所知,这是唯一的区别。
-
teamcity 用户有足够的权限吗?