【问题标题】:How to set review for revision using Gerrit REST API如何使用 Gerrit REST API 设置审查以进行修订
【发布时间】: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 用户有足够的权限吗?

标签: rest api gerrit


【解决方案1】:

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

【讨论】:

  • 我因发布自己的问题的答案而获得了负面奖励?所以也许我应该删除这个并留下我的问题没有答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多